From 51f8633b379efab41a8b19a375d5e41785a15ee6 Mon Sep 17 00:00:00 2001
From: 张海江 <181069201@qq.com>
Date: Fri, 11 Aug 2017 09:14:40 +0800
Subject: [PATCH] 提交代码

---
 app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java |  142 +++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 124 insertions(+), 18 deletions(-)

diff --git a/app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java b/app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java
index 284c5f7..26fa55f 100644
--- a/app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java
+++ b/app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java
@@ -8,14 +8,23 @@
 import android.widget.RadioGroup;
 import android.widget.TextView;
 
+import com.lzy.okgo.cache.CacheMode;
+import com.moral.andbrickslib.utils.FastJsonTools;
 import com.moral.andbrickslib.utils.TimeUtil;
+import com.moral.yunfushao.MainApp;
 import com.moral.yunfushao.R;
 import com.moral.yunfushao.base.BaseActivity;
+import com.moral.yunfushao.common.API;
+import com.moral.yunfushao.httputils.HttpCallBack;
+import com.moral.yunfushao.httputils.HttpUtils;
+import com.moral.yunfushao.model.UserData;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
-import java.util.Random;
 
+import lecho.lib.hellocharts.formatter.LineChartValueFormatter;
+import lecho.lib.hellocharts.formatter.SimpleLineChartValueFormatter;
 import lecho.lib.hellocharts.gesture.ContainerScrollType;
 import lecho.lib.hellocharts.gesture.ZoomType;
 import lecho.lib.hellocharts.model.Axis;
@@ -41,7 +50,7 @@
     private List<AxisValue> mAxisXValues = new ArrayList<>();
 
     private RadioGroup rg_time;
-    private TextView tv_starttime,tv_endtime;
+    private TextView tv_starttime,tv_endtime,tv_value;
     private ImageView iv_pre,iv_next;
     private int type=0;
     @Override
@@ -64,6 +73,7 @@
         rg_time = findView(R.id.rg_time);
         tv_starttime = findView(R.id.tv_starttime);
         tv_endtime = findView(R.id.tv_endtime);
+        tv_value = findView(R.id.tv_value);
         iv_pre = findView(R.id.iv_pre);
         iv_next = findView(R.id.iv_next);
         rg_time.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@@ -77,6 +87,7 @@
                         chartView.setLineChartData(data);
                         tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",TimeUtil.getCurrentDate("yyyy-MM-dd"),-1));
                         tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),-7));
+                        getData(tv_starttime.getText().toString(),tv_endtime.getText().toString());
                         break;
                     case R.id.rb_month:
                         type = 1;
@@ -85,12 +96,14 @@
                         chartView.setLineChartData(data);
                         tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",TimeUtil.getCurrentDate("yyyy-MM-dd"),-1));
                         tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),-28));
+                        getData(tv_starttime.getText().toString(),tv_endtime.getText().toString());
                         break;
                 }
             }
         });
         tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",TimeUtil.getCurrentDate("yyyy-MM-dd"),-1));
         tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),-7));
+        getData(tv_starttime.getText().toString(),tv_endtime.getText().toString());
     }
 
     @Override
@@ -101,7 +114,7 @@
 
     @Override
     protected void initData() {
-        reshowChart();
+        reshowChart(dataList);
     }
 
     @Override
@@ -118,6 +131,7 @@
                     tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_starttime.getText().toString(),-1));
                     tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),-28));
                 }
+                getData(tv_starttime.getText().toString(),tv_endtime.getText().toString());
                 break;
             case R.id.iv_next:
                 if(TimeUtil.getCurrentDate("yyyy-MM-dd").equals(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),1))){
@@ -130,6 +144,7 @@
                     tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),1));
                     tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_starttime.getText().toString(),28));
                 }
+                getData(tv_starttime.getText().toString(),tv_endtime.getText().toString());
                 break;
         }
 
@@ -145,12 +160,14 @@
         List<Line> lines = new ArrayList<>();
         line.setShape(ValueShape.CIRCLE);//������������������������������������  ��������������� ������������ ���ValueShape.SQUARE  ValueShape.CIRCLE  ValueShape.DIAMOND���
         line.setPointColor(Color.parseColor("#20DAE5"));
-        line.setCubic(true);//���������������������������������������������
+        line.setCubic(false);//���������������������������������������������
         line.setFilled(false);//���������������������������
         line.setHasLabels(true);//���������������������������������������
 //      line.setHasLabelsOnlyForSelected(true);//������������������������������������������������line.setHasLabels(true);������������
         line.setHasLines(true);//������������������������������false ������������������������������
         line.setHasPoints(true);//������������������ ���������false ������������������������������������������������������������������������
+        LineChartValueFormatter chartValueFormatter = new SimpleLineChartValueFormatter(3);
+        line.setFormatter(chartValueFormatter);//���������������
         lines.add(line);
         data = new LineChartData();
         data.setLines(lines);
@@ -160,9 +177,9 @@
 
         //���������
         axisX = new Axis(); //X���
-        axisX.setHasTiltedLabels(false);  //X���������������������������������������������true���������������
+        axisX.setHasTiltedLabels(true);  //X���������������������������������������������true���������������
         axisX.setName("���������������������");  //������������
-        axisX.setTextSize(10);//������������������
+        axisX.setTextSize(8);//������������������
         axisX.setTextColor(getResources().getColor(R.color.red_txt));
 //        axisX.setMaxLabelChars(7); //������������X���������������������������������������X���������������������7<=x<=mAxisXValues.length
         axisX.setValues(mAxisXValues);  //������X������������������
@@ -173,7 +190,7 @@
         //data.setAxisXTop(axisX);  //x ������������
 
         // Y���������������������������������������Y���������(���������������������������Y������������������������������)
-        axisY = Axis.generateAxisFromRange(0,100,1);  //Y���
+        axisY = Axis.generateAxisFromRange(0,100, (float) 0.01);  //Y���
         axisY.setAutoGenerated(false);
         axisY.setHasLines(true);
         axisY.setHasSeparationLine(true);
@@ -194,7 +211,15 @@
          * ���������������������X������������������������������http://forum.xda-developers.com/tools/programming/library-hellocharts-charting-library-t2904456/page2���;
          */
 //        chartView.setCurrentViewport(initViewPort(0,7));
-        chartView.startDataAnimation();
+        final Viewport v = new Viewport(chartView.getMaximumViewport());
+        v.bottom = 0;
+        v.top = 100;
+//                // You have to set max and current viewports separately.
+        chartView.setMaximumViewport(v);
+//                // I changing current viewport with animation in this case.
+////                                        lineChartCO2.setCurrentViewportWithAnimation(v);
+        chartView.setCurrentViewport(v);
+//        chartView.startDataAnimation();
     }
 
     private Viewport initViewPort(float left, float right) {
@@ -204,15 +229,17 @@
         return port;
     }
 
-    Random random = new Random();
-    private void reshowChart() {
+    private void reshowChart(final ArrayList<UserData> dataList) {
 
         chartView.post(new Runnable() {
             @Override
             public void run() {
-                for (int i=0;i<10;i++){
-                    mPointValues.add(new PointValue(i,random.nextInt(100)%(100-0+1) + 0));
-                    mAxisXValues.add(new AxisValue(i).setLabel(i + ""));
+                mPointValues.clear();
+                mAxisXValues.clear();
+                for (int i=0;i<dataList.size();i++){
+                    mPointValues.add(new PointValue(i,dataList.get(i).getDay_avg()));
+                    mAxisXValues.add(new AxisValue(i).setLabel(dataList.get(i).getDate().substring(5,10)));
+//                    mAxisXValues.add(new AxisValue(i).setLabel(i+""));
                 }
 
                 axisX.setValues(mAxisXValues);
@@ -223,14 +250,93 @@
                 data.setLines(lines);
                 chartView.setLineChartData(data);
                 final Viewport v = new Viewport(chartView.getMaximumViewport());
-                v.bottom = -5;
-                v.top = 100 + 5;
-                // You have to set max and current viewports separately.
+                v.bottom = 0;
+                v.top = 100;
+////                // You have to set max and current viewports separately.
                 chartView.setMaximumViewport(v);
-                // I changing current viewport with animation in this case.
-//                                        lineChartCO2.setCurrentViewportWithAnimation(v);
+//                // I changing current viewport with animation in this case.
+////                                        lineChartCO2.setCurrentViewportWithAnimation(v);
                 chartView.setCurrentViewport(v);
             }
         });
     }
+
+    private ArrayList<UserData> dataList = new ArrayList<>();
+    private void getData(String startTime,String endTime){
+        HashMap<String,String> params = new HashMap<>();
+        params.put("user_id", MainApp.userId);
+        params.put("start_time", startTime);
+        params.put("end_time", endTime);
+        HttpUtils.doPost(API.GETUSERDATALIST, params, CacheMode.DEFAULT, true, new HttpCallBack() {
+            @Override
+            public void onSuccess(String res, String msg) {
+                if(progressDialog.isShowing()){
+                    progressDialog.dismiss();
+                }
+                ArrayList<UserData> temp = (ArrayList<UserData>) FastJsonTools.getArrayJson(res,UserData.class);
+                dataList.clear();
+
+                dataList.addAll(resetData(temp));
+
+                //������
+                reshowChart(dataList);
+            }
+
+            @Override
+            public void showLoadingDialog() {
+                progressDialog.show();
+            }
+
+            @Override
+            public void onFail(int errno, String s) {
+                if(progressDialog.isShowing()){
+                    progressDialog.dismiss();
+                }
+                dataList.clear();
+
+                dataList.addAll(resetData(new ArrayList<UserData>()));
+
+                //������
+                reshowChart(dataList);
+                tv_value.setText(0+"uSv");
+            }
+        });
+
+    }
+
+
+    private ArrayList<UserData> resetData(ArrayList<UserData> tempList){
+        ArrayList<UserData> newList = new ArrayList<>();
+        if(type == 0){//���
+            for (int i=0;i<7;i++){
+                UserData data = new UserData();
+                data.setDate(TimeUtil.getAfterDate("yyyy-MM-dd",tv_starttime.getText().toString(),i));
+                data.setDay_avg(0);
+                newList.add(data);
+            }
+        }else if(type == 1){//���
+            for (int i=0;i<7;i++){
+                UserData data = new UserData();
+                data.setDate(TimeUtil.getAfterDate("yyyy-MM-dd",tv_starttime.getText().toString(),i*4));
+                data.setDay_avg(0);
+                newList.add(data);
+            }
+        }
+        //������������
+        float totalValues = 0;
+        if(tempList!=null&&tempList.size()>0){
+            for (UserData data : tempList){
+                totalValues+= data.getDay_avg();
+                for(UserData data1 : newList){
+                    if(data.getDate().equals(data1.getDate())){
+                        data1.setDay_avg(data.getDay_avg());
+                    }
+                }
+            }
+            tv_value.setText(totalValues/tempList.size()+"uSv");
+        }else{
+            tv_value.setText(0+"uSv");
+        }
+        return newList;
+    }
 }

--
Gitblit v1.8.0