From 1b6d4163ff60828aa6e5043ad29d2167801caac7 Mon Sep 17 00:00:00 2001
From: haijiang <181069201@qq.com>
Date: Wed, 18 Apr 2018 17:24:20 +0800
Subject: [PATCH] 修复bug,加入重连,铃声选择,小时数据

---
 app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java |  174 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 145 insertions(+), 29 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 26fa55f..34c2be0 100644
--- a/app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java
+++ b/app/src/main/java/com/moral/yunfushao/activity/ChartActivity.java
@@ -1,15 +1,22 @@
 package com.moral.yunfushao.activity;
 
+import android.app.AlertDialog;
 import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
 import android.os.Bundle;
 import android.support.annotation.IdRes;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.view.Window;
+import android.widget.Button;
 import android.widget.ImageView;
 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.NumberUtils;
 import com.moral.andbrickslib.utils.TimeUtil;
 import com.moral.yunfushao.MainApp;
 import com.moral.yunfushao.R;
@@ -17,13 +24,19 @@
 import com.moral.yunfushao.common.API;
 import com.moral.yunfushao.httputils.HttpCallBack;
 import com.moral.yunfushao.httputils.HttpUtils;
+import com.moral.yunfushao.imageload.ImageLoader;
 import com.moral.yunfushao.model.UserData;
+
+import org.json.JSONException;
+import org.json.JSONObject;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
+import lecho.lib.hellocharts.formatter.AxisValueFormatter;
 import lecho.lib.hellocharts.formatter.LineChartValueFormatter;
+import lecho.lib.hellocharts.formatter.SimpleAxisValueFormatter;
 import lecho.lib.hellocharts.formatter.SimpleLineChartValueFormatter;
 import lecho.lib.hellocharts.gesture.ContainerScrollType;
 import lecho.lib.hellocharts.gesture.ZoomType;
@@ -50,9 +63,9 @@
     private List<AxisValue> mAxisXValues = new ArrayList<>();
 
     private RadioGroup rg_time;
-    private TextView tv_starttime,tv_endtime,tv_value;
+    private TextView tv_starttime,tv_endtime,tv_value,tv_status;
     private ImageView iv_pre,iv_next;
-    private int type=0;
+    private int type=2;
     @Override
     protected void getBundleExtras(Bundle extras) {
 
@@ -66,7 +79,7 @@
     @Override
     protected void initViews() {
         initTopBar();
-        tv_title.setText("������������");
+        tv_title.setText("������������");
         chartView = findView(R.id.chart);
         initLineChart();
 
@@ -74,6 +87,7 @@
         tv_starttime = findView(R.id.tv_starttime);
         tv_endtime = findView(R.id.tv_endtime);
         tv_value = findView(R.id.tv_value);
+        tv_status = findView(R.id.tv_status);
         iv_pre = findView(R.id.iv_pre);
         iv_next = findView(R.id.iv_next);
         rg_time.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@@ -86,7 +100,7 @@
                         data.setAxisXBottom(axisX); //x ������������
                         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));
+                        tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),-6));
                         getData(tv_starttime.getText().toString(),tv_endtime.getText().toString());
                         break;
                     case R.id.rb_month:
@@ -98,11 +112,20 @@
                         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.rb_day:
+                        type = 2;
+                        axisX.setName("���������������������");  //������������
+                        data.setAxisXBottom(axisX); //x ������������
+                        chartView.setLineChartData(data);
+                        tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",TimeUtil.getCurrentDate("yyyy-MM-dd"),-1));
+                        tv_starttime.setText(tv_endtime.getText().toString());
+                        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));
+        tv_starttime.setText(tv_endtime.getText().toString());
         getData(tv_starttime.getText().toString(),tv_endtime.getText().toString());
     }
 
@@ -115,6 +138,7 @@
     @Override
     protected void initData() {
         reshowChart(dataList);
+        getAd();
     }
 
     @Override
@@ -126,10 +150,13 @@
             case R.id.iv_pre:
                 if(type==0){
                     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(),-7));
+                    tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),-6));
                 }else if(type == 1){
                     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));
+                }else if(type == 2){
+                    tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_starttime.getText().toString(),-1));
+                    tv_starttime.setText(tv_endtime.getText().toString());
                 }
                 getData(tv_starttime.getText().toString(),tv_endtime.getText().toString());
                 break;
@@ -139,10 +166,13 @@
                 }
                 if(type==0){
                     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(),7));
+                    tv_endtime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_starttime.getText().toString(),6));
                 }else if(type == 1){
                     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));
+                }else if(type == 2){
+                    tv_starttime.setText(TimeUtil.getAfterDate("yyyy-MM-dd",tv_endtime.getText().toString(),1));
+                    tv_endtime.setText(tv_starttime.getText().toString());
                 }
                 getData(tv_starttime.getText().toString(),tv_endtime.getText().toString());
                 break;
@@ -178,26 +208,28 @@
         //���������
         axisX = new Axis(); //X���
         axisX.setHasTiltedLabels(true);  //X���������������������������������������������true���������������
-        axisX.setName("���������������������");  //������������
+        axisX.setName("���������������������");  //������������
         axisX.setTextSize(8);//������������������
-        axisX.setTextColor(getResources().getColor(R.color.red_txt));
+        axisX.setTextColor(getResources().getColor(R.color.blue_txt));
 //        axisX.setMaxLabelChars(7); //������������X���������������������������������������X���������������������7<=x<=mAxisXValues.length
         axisX.setValues(mAxisXValues);  //������X������������������
         axisX.setHasLines(true); //x ������������
-        axisX.setLineColor(getResources().getColor(R.color.red_txt));
+        axisX.setLineColor(getResources().getColor(R.color.blue_txt));
         axisX.setHasSeparationLine(true);
         data.setAxisXBottom(axisX); //x ������������
         //data.setAxisXTop(axisX);  //x ������������
 
         // Y���������������������������������������Y���������(���������������������������Y������������������������������)
-        axisY = Axis.generateAxisFromRange(0,100, (float) 0.01);  //Y���
+        axisY = Axis.generateAxisFromRange((float)0.0,(float)4.0, (float) 0.25);  //Y���
         axisY.setAutoGenerated(false);
+        AxisValueFormatter yvalue = new SimpleAxisValueFormatter(1);
+        axisY.setFormatter(yvalue);
         axisY.setHasLines(true);
         axisY.setHasSeparationLine(true);
         axisY.setName("������");//y���������
         axisY.setTextSize(10);//������������������
-        axisY.setTextColor(getResources().getColor(R.color.red_txt));
-        axisY.setLineColor(getResources().getColor(R.color.red_txt));
+        axisY.setTextColor(getResources().getColor(R.color.blue_txt));
+        axisY.setLineColor(getResources().getColor(R.color.blue_txt));
         data.setAxisYLeft(axisY);  //Y������������������
 
         //������������������������������������������������������
@@ -212,8 +244,8 @@
          */
 //        chartView.setCurrentViewport(initViewPort(0,7));
         final Viewport v = new Viewport(chartView.getMaximumViewport());
-        v.bottom = 0;
-        v.top = 100;
+        v.bottom = (float) 0.0;
+        v.top = (float) 4.0;
 //                // You have to set max and current viewports separately.
         chartView.setMaximumViewport(v);
 //                // I changing current viewport with animation in this case.
@@ -237,8 +269,14 @@
                 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)));
+                    if(type == 2){
+                        mPointValues.add(new PointValue(i,dataList.get(i).getHour_avg()));
+                        mAxisXValues.add(new AxisValue(i).setLabel((dataList.get(i).getTime_level()-1)*3+"���"));
+                    }else{
+                        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+""));
                 }
 
@@ -250,8 +288,8 @@
                 data.setLines(lines);
                 chartView.setLineChartData(data);
                 final Viewport v = new Viewport(chartView.getMaximumViewport());
-                v.bottom = 0;
-                v.top = 100;
+                v.bottom = (float) 0.0;
+                v.top = (float) 4.0;
 ////                // You have to set max and current viewports separately.
                 chartView.setMaximumViewport(v);
 //                // I changing current viewport with animation in this case.
@@ -273,13 +311,21 @@
                 if(progressDialog.isShowing()){
                     progressDialog.dismiss();
                 }
-                ArrayList<UserData> temp = (ArrayList<UserData>) FastJsonTools.getArrayJson(res,UserData.class);
-                dataList.clear();
+                try {
+                    JSONObject jsonObject = new JSONObject(res);
+                    String data = jsonObject.optString("data");
+                    ArrayList<UserData> temp = (ArrayList<UserData>) FastJsonTools.getArrayJson(data,UserData.class);
+                    dataList.clear();
 
-                dataList.addAll(resetData(temp));
+                    dataList.addAll(resetData(temp));
 
-                //������
-                reshowChart(dataList);
+                    //������
+                    reshowChart(dataList);
+                    tv_value.setText(NumberUtils.getBigDecimalValue(jsonObject.optDouble("avg"),3)+"uSv");
+                    tv_status.setText(jsonObject.optString("status"));
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
             }
 
             @Override
@@ -298,7 +344,6 @@
 
                 //������
                 reshowChart(dataList);
-                tv_value.setText(0+"uSv");
             }
         });
 
@@ -321,6 +366,13 @@
                 data.setDay_avg(0);
                 newList.add(data);
             }
+        }else if(type == 2){//���
+            for (int i=0;i<8;i++){
+                UserData data = new UserData();
+                data.setTime_level(i+1);
+                data.setHour_avg(0);
+                newList.add(data);
+            }
         }
         //������������
         float totalValues = 0;
@@ -328,15 +380,79 @@
             for (UserData data : tempList){
                 totalValues+= data.getDay_avg();
                 for(UserData data1 : newList){
-                    if(data.getDate().equals(data1.getDate())){
-                        data1.setDay_avg(data.getDay_avg());
+                    if(type == 2){
+                        if(data.getTime_level() == data1.getTime_level()){
+                            data1.setHour_avg(data.getHour_avg());
+                        }
+                    }else{
+                        if(data.getDate().equals(data1.getDate())){
+                            data1.setDay_avg(data.getDay_avg());
+                        }
                     }
+
                 }
             }
-            tv_value.setText(totalValues/tempList.size()+"uSv");
+//            tv_value.setText(totalValues/tempList.size()+"uSv");
         }else{
-            tv_value.setText(0+"uSv");
+//            tv_value.setText(0+"uSv");
         }
         return newList;
     }
+
+    private AlertDialog adDialog;
+    private View adView;
+    private TextView tv_content,tv_name;
+    private ImageView iv_logo;
+    private Button bt_cancel,bt_ok;
+    private void showAd(String content,String logo,String name){
+        adView = LayoutInflater.from(this).inflate(R.layout.dialog_ad_layout,null);
+        tv_content = (TextView) adView.findViewById(R.id.tv_content);
+        tv_name = (TextView) adView.findViewById(R.id.tv_name);
+        bt_cancel = (Button) adView.findViewById(R.id.bt_cancel);
+        bt_ok = (Button) adView.findViewById(R.id.bt_ok);
+        iv_logo = (ImageView) adView.findViewById(R.id.iv_logo);
+        tv_content.setText(content);
+        tv_name.setText(name);
+        ImageLoader.setCircleImageView(this,logo,iv_logo,R.mipmap.circle);
+        bt_cancel.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                adDialog.dismiss();
+            }
+        });
+        adDialog = new AlertDialog.Builder(this).setView(adView).create();
+        Window window=adDialog.getWindow();
+        window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+        adDialog.show();
+    }
+
+
+    private void getAd(){
+        HttpUtils.doPost(API.GETAD, null, CacheMode.DEFAULT, false, new HttpCallBack() {
+            @Override
+            public void onSuccess(String res, String msg) {
+                if(TextUtils.isEmpty(res)){
+                    return;
+                }
+                try {
+                    JSONObject json = new JSONObject(res);
+                    showAd(json.optString("content"),json.optString("logo"),json.optString("name"));
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+
+
+            }
+
+            @Override
+            public void showLoadingDialog() {
+
+            }
+
+            @Override
+            public void onFail(int errno, String s) {
+
+            }
+        });
+    }
 }

--
Gitblit v1.8.0