package com.bell.testhellocharts;

import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import java.util.ArrayList;
import java.util.List;

import lecho.lib.hellocharts.gesture.ContainerScrollType;
import lecho.lib.hellocharts.gesture.ZoomType;
import lecho.lib.hellocharts.model.Axis;
import lecho.lib.hellocharts.model.AxisValue;
import lecho.lib.hellocharts.model.Line;
import lecho.lib.hellocharts.model.LineChartData;
import lecho.lib.hellocharts.model.PointValue;
import lecho.lib.hellocharts.model.ValueShape;
import lecho.lib.hellocharts.view.LineChartView;

public class MainActivity extends AppCompatActivity {

    private Context mContext;
    private List<TimeData> mTimeDatas;

    //x轴标注名称集合
    List<AxisValue> mAxisXValues = new ArrayList<>();
    //点集合
    List<PointValue> pointValues = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = this;
        FrameLayout frameLayout = new FrameLayout(mContext);
        setContentView(frameLayout);

        mTimeDatas = initData();

        //处理X轴
        for(int i = 0; i<mTimeDatas.size(); i++){
            AxisValue axisValue = new AxisValue(i);
            axisValue.setLabel(i+"点");
            mAxisXValues.add(i, axisValue);
        }


        //处理点
        for (int i = 0; i<mTimeDatas.size(); i++){
            PointValue pointValue = new PointValue(i, Float.parseFloat(mTimeDatas.get(i).getMoney()));
            pointValue.setLabel(mTimeDatas.get(i).getMoney()+"");
            pointValues.add(i, pointValue);
        }



        Line line = new Line();
        line.setValues(pointValues);
        // 把点的集合放在线上，显示多条线 就用不同的line分别添加不同的values
        line.setValues(pointValues);
//        线的颜色
        line.setColor(Color.RED);
//        点的颜色
        line.setPointColor(Color.RED);
//        形状，ValueShape提供了几个
        line.setShape(ValueShape.CIRCLE);
//        线的透明度
//        chartline.setAreaTransparency(0);
//        点的大小
        line.setPointRadius(5);
//        点上的标注信息，刚才 pointValues里面每个点的标注
        line.setCubic(false);
//        阴影面积
        line.setFilled(false);
//        是否用线显示。如果为false 则没有曲线只有点显示
        line.setHasLines(true);
//        是否用点显示。如果为false 则没有点
        line.setHasPoints(true);
//        点的标注是否显示
        line.setHasLabels(true);
//        线的粗细
        line.setStrokeWidth(2);

//        显示几条线，就可以分别设置每一条线，然后add进来
        List<Line> lines= new ArrayList<>();
        lines.add(line);

//        线的集合放在chart数据中，
        LineChartData data = new LineChartData();
        //点的描述文字设置
        data.setValueLabelBackgroundColor(Color.TRANSPARENT);
        data.setValueLabelsTextColor(Color.BLACK);
        data.setValueLabelBackgroundEnabled(false);
        //画线
        data.setLines(lines);

        //坐标配置
        Axis axisX = new Axis();
        axisX.setValues(mAxisXValues).setHasSeparationLine(false).setTextColor(Color.BLACK);
        Axis axisY = new Axis().setHasLines(false).setName("Y轴");
        data.setAxisXBottom(axisX);
//        data.setAxisYLeft(axisY);
        data.setBaseValue(Float.NEGATIVE_INFINITY);


        LineChartView lineChartView = new LineChartView(mContext);
        lineChartView.setBackgroundColor(Color.WHITE);
        lineChartView.setLineChartData(data);
        // 设置行为属性，支持缩放、滑动以及平移，设置他就可以自己设置动作了
        lineChartView.setInteractive(true);
        //可缩放
        lineChartView.setZoomEnabled(true);
        lineChartView.setZoomType(ZoomType.HORIZONTAL);
        //横向滚动
        lineChartView.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);

        //设置默认的显示的X轴数据量
        /*Viewport v = new Viewport(lineChartView.getMaximumViewport());
//        v.top = 50;
//        v.bottom = 50;
//        lineChartView.setMaximumViewport(v);
        v.left = -1;
        v.right = 5;
        lineChartView.setCurrentViewport(v);*/

        lineChartView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 800));




        frameLayout.addView(lineChartView);

    }

    List<TimeData> initData(){
        List<TimeData> datas = new ArrayList<>();
        datas.add(new TimeData("2017-11-16 00:00", "1300"));
        datas.add(new TimeData("2017-11-16 01:00", "1340"));
        datas.add(new TimeData("2017-11-16 02:00", "3230"));
        datas.add(new TimeData("2017-11-16 03:00", "0"));
        datas.add(new TimeData("2017-11-16 04:00", "1000"));
        datas.add(new TimeData("2017-11-16 05:00", "6050"));
        datas.add(new TimeData("2017-11-16 06:00", "0"));
        datas.add(new TimeData("2017-11-16 07:00", "3400"));
        datas.add(new TimeData("2017-11-16 08:00", "12400"));
        datas.add(new TimeData("2017-11-16 09:00", "2000"));
        datas.add(new TimeData("2017-11-16 10:00", "5000"));
        datas.add(new TimeData("2017-11-16 11:00", "3000"));
        datas.add(new TimeData("2017-11-16 12:00", "1000"));
        datas.add(new TimeData("2017-11-16 13:00", "4000"));
        datas.add(new TimeData("2017-11-16 14:00", "9000"));
        datas.add(new TimeData("2017-11-16 15:00", "11020"));
        datas.add(new TimeData("2017-11-16 16:00", "3400"));
        datas.add(new TimeData("2017-11-16 17:00", "7000"));
        datas.add(new TimeData("2017-11-16 18:00", "0"));
        datas.add(new TimeData("2017-11-16 19:00", "0"));
        datas.add(new TimeData("2017-11-16 20:00", "2000"));
        datas.add(new TimeData("2017-11-16 21:00", "4000"));
        datas.add(new TimeData("2017-11-16 22:00", "0"));
        datas.add(new TimeData("2017-11-16 23:00", "3000"));

        return datas;
    }
}
