From 5de5a26d3825b3182a7d3a18ed1cbdbb78a3f9aa Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期四, 23 七月 2020 16:39:59 +0800
Subject: [PATCH] 2020-07-23

---
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs |  296 +++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 226 insertions(+), 70 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
index 70ab625..9ef23cc 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
@@ -6,23 +6,40 @@
 
 namespace HDL_ON.UI
 {
-    public class EnvironmentalSensorPage : FrameLayout
+    public partial class EnvironmentalSensorPage : FrameLayout
     {
 
         EnvironmentalSensorPage bodyView;
 
+        FrameLayout showDataTypeView;
+        Button btnShowHistroyData_Day;
+        Button btnShowHistroyData_Week;
+        Button btnShowHistroyData_Month;
+
+        FrameLayout historyDataView;
+
+        MyEchartsViewOn myEchartsView;
 
         Sensor sensor;
+
+        List<Sensor> showSensors; 
 
         List<uint> tipColorList = new List<uint>()
         {
             0xFF80AEFF,0xFFFFD154,0xFFFF9D54,0xFFFE6A6A,0xFFB183C3,0xFFADE764,
         };
 
+        List<string> tipColorStringList = new List<string>()
+        {
+            "#80AEFF","#FFD154","#FF9D54","#FE6A6A","#B183C3","#ADE764",
+        };
+
         public EnvironmentalSensorPage(Sensor ss)
         {
             bodyView = this;
             sensor = ss;
+            showSensors = new List<Sensor>();
+            showSensors.Add(ss);
         }
 
         public void LoadPage()
@@ -53,7 +70,7 @@
             contentView.AddChidren(diagramView);
 
             #region 閫夋嫨鏁版嵁鏃ユ湡鑼冨洿
-            FrameLayout showDataTypeView = new FrameLayout()
+            showDataTypeView = new FrameLayout()
             {
                 X = Application.GetRealWidth(183),
                 Y = Application.GetRealHeight(12),
@@ -63,7 +80,7 @@
             };
             diagramView.AddChidren(showDataTypeView);
 
-            Button btnShowHistroyData_Day = new Button()
+            btnShowHistroyData_Day = new Button()
             {
                 Width = Application.GetRealWidth(48),
                 TextAlignment = TextAlignment.Center,
@@ -75,7 +92,7 @@
             };
             showDataTypeView.AddChidren(btnShowHistroyData_Day);
 
-            Button btnShowHistroyData_Week = new Button()
+            btnShowHistroyData_Week = new Button()
             {
                 X = Application.GetRealWidth(48),
                 Width = Application.GetRealWidth(48),
@@ -87,8 +104,7 @@
             };
             showDataTypeView.AddChidren(btnShowHistroyData_Week);
 
-
-            Button btnShowHistroyData_Month = new Button()
+            btnShowHistroyData_Month = new Button()
             {
                 X = Application.GetRealWidth(48 * 2),
                 Width = Application.GetRealWidth(48),
@@ -101,8 +117,7 @@
             showDataTypeView.AddChidren(btnShowHistroyData_Month);
             #endregion
 
-
-            FrameLayout historyDataView = new FrameLayout()
+            historyDataView = new FrameLayout()
             {
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(52),
@@ -111,45 +126,9 @@
             };
             diagramView.AddChidren(historyDataView);
 
-            List<string> xStrings = new List<string>() ;
-            List<string> yStrings = new List<string>();
-            Random random = new Random();
-            for (int i = 0; i < 24; i++)
-            {
-                xStrings.Add(i.ToString());
+            myEchartsView = new MyEchartsViewOn();
 
-                switch (sensor.functionType)
-                {
-                    case FunctionType.PM10:
-                        yStrings.Add( Math.Round(random.NextDouble() * 130, 0).ToString());
-                        break;
-                    case FunctionType.PM25:
-                        yStrings.Add( Math.Round(random.NextDouble() * 130, 0).ToString());
-                        break;
-                    //case FunctionType.Noise:
-                    //    break;
-                    case FunctionType.WindPower:
-                        break;
-                    case FunctionType.CO2:
-                        yStrings.Add( Math.Round(random.NextDouble() * 6000, 0).ToString());
-                        break;
-                    case FunctionType.Temp:
-                        yStrings.Add( Math.Round(random.NextDouble() * 40, 0).ToString());
-                        break;
-                    case FunctionType.TVOC:
-                        yStrings.Add( Math.Round(random.NextDouble() * 10, 1).ToString());
-                        break;
-                    case FunctionType.Humidity:
-                        yStrings.Add( Math.Round(random.NextDouble() * 100, 0).ToString());
-                        break;
-                }
-
-            }
-
-
-            MyEchartsView myEchartsView = new MyEchartsView();
             historyDataView.AddChidren(myEchartsView);
-            myEchartsView.Show(sensor.name, xStrings.ToArray(), yStrings.ToArray());
 
             #region 搴曢儴绛夌骇鎻愮ず
             HorizontalScrolViewLayout tipValuesView = new HorizontalScrolViewLayout()
@@ -180,12 +159,12 @@
             };
             diagramView.AddChidren(tipTextView);
 
-
             switch (sensor.functionType)
             {
                 case FunctionType.PM10:
                 case FunctionType.PM25:
-                    tipValuesView.AddChidren(new Button() {
+                    tipValuesView.AddChidren(new Button()
+                    {
                         Width = Application.GetRealWidth(101),
                         Text = "35",
                         TextAlignment = TextAlignment.Center,
@@ -242,15 +221,15 @@
                     });
                     break;
                 //case FunctionType.PM25:
-                    //_intervalValue.Add("0 ~ 35");
-                    //_intervalValue.Add("36 ~ 75");
-                    //_intervalValue.Add("76 ~ 115");
-                    //_intervalValue.Add("115 ~");
-                    //_levelTextList.Add(StringId.Great);
-                    //_levelTextList.Add(StringId.Good);
-                    //_levelTextList.Add(StringId.MildPollution);
-                    //_levelTextList.Add(StringId.HeavyPollution);
-                    //break;
+                //_intervalValue.Add("0 ~ 35");
+                //_intervalValue.Add("36 ~ 75");
+                //_intervalValue.Add("76 ~ 115");
+                //_intervalValue.Add("115 ~");
+                //_levelTextList.Add(StringId.Great);
+                //_levelTextList.Add(StringId.Good);
+                //_levelTextList.Add(StringId.MildPollution);
+                //_levelTextList.Add(StringId.HeavyPollution);
+                //break;
                 //case FunctionType.Noise:
                 //    break;
                 case FunctionType.WindPower:
@@ -545,7 +524,7 @@
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(343),
                 Height = Application.GetRealWidth(100),
-                BackgroundColor= CSS_Color.MainBackgroundColor,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
                 Radius = (uint)Application.GetRealWidth(12),
                 BorderColor = 0x00000000,
                 BorderWidth = 0,
@@ -579,8 +558,7 @@
             };
             selfInfoView.AddChidren(btnSeltSensorName);
 
-
-           Button btnFromFoorAndRoom = new Button()
+            Button btnFromFoorAndRoom = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Y = btnSeltSensorName.Bottom,
@@ -616,7 +594,8 @@
             };
             selfInfoView.AddChidren(btnSeltSensorValue);
 
-            var btnShowData = new Button()
+            Button btnShowData;
+            btnShowData = new Button()
             {
                 X = Application.GetRealWidth(291),
                 Y = Application.GetRealWidth(62),
@@ -624,6 +603,7 @@
                 Height = Application.GetMinRealAverage(32),
                 UnSelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIcon.png",
                 SelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIconOn.png",
+                IsSelected = true,
             };
             selfInfoView.AddChidren(btnShowData);
 
@@ -648,11 +628,11 @@
 
             foreach (var tempSensor in DB_ResidenceData.residenceData.functionList.sensorsEnvironmentalScience)
             {
-                if(tempSensor.sid == sensor.sid)
+                if (tempSensor.sid == sensor.sid)
                 {
                     continue;
                 }
-                if(tempSensor.functionType != sensor.functionType)
+                if (tempSensor.functionType != sensor.functionType)
                 {
                     continue;
                 }
@@ -777,17 +757,193 @@
 
                 #endregion
 
-
-
-
             }
-
             #endregion
-
-
-
             new TopViewDiv(bodyView, Language.StringByID(sensor.functionTypeNameId)).LoadTopView();
+
+            LoadMothed_GetSensorHistoryData(QueryType.NowDay);
+            LoadEvent_ChangeSensorHistoryShowType();
+        }
+    }
+
+
+    //------------
+    public partial class EnvironmentalSensorPage
+    {
+        enum QueryType
+        {
+            NowDay = 0,//褰撳ぉ
+            NowMonth = 1,//鎸囧畾鏈�
+            NowYear = 2,//浠婂勾
+            LatelySevenDay = 3//鏈�杩戜竷澶�
+        }
+
+        /// <summary>
+        /// 璇诲彇浼犳劅鍣ㄥ巻鍙叉暟鎹�
+        /// </summary>
+        void LoadMothed_GetSensorHistoryData(QueryType queryType)
+        {
+            string echartRootJsonString;
+            EchartsOption echartRootJson = new EchartsOption();
+            var seriesList = new List<EchartSeriesItem>();
+            echartRootJson.xAxis.data = new List<string>();
+            var loadPage = new Loading() {
+                LodingBackgroundColor = 0x88888888,
+            };
+            historyDataView.AddChidren(loadPage);
+
+            new System.Threading.Thread(() =>
+            {
+                try
+                {
+                    Application.RunOnMainThread(() => {
+                        loadPage.Start("Loading...");
+                    });
+                    var curMonth = 0;
+                    if(queryType == QueryType.NowMonth)
+                    {
+                        curMonth = DateTime.Now.Month;
+                    }
+                    for (int i = 0; i < showSensors.Count; i++)
+                    {
+                        var sr = showSensors[i];
+                        var revertObj = new DAL.Server.HttpServerRequest().GetSensorHistory(sr.bus_Data.SubnetID, sr.bus_Data.DeviceID,
+                               5, (int)(sr.functionType) % 256, (int)queryType, sr.bus_Data.LoopID, curMonth,
+                               DB_ResidenceData.residenceData.residenceGatewayMAC);
+
+                        if (revertObj != null)
+                        {
+                            if (revertObj.StateCode == "SUCCESS")
+                            {
+                                var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SensorPushHistoryRes>>(revertObj.ResponseData.ToString());
+
+                                var sItem = new EchartSeriesItem
+                                {
+                                    name = sr.GetRoomListName(),
+                                    data = new List<int>(),
+                                    lineStyle = new EchartLineStyle()
+                                    {
+                                        color = tipColorStringList[i],
+#if __IOS__
+                                        width = 5,
+#elif __ANDROID__
+                                        width = 2,
+#endif
+                                    },
+                                };
+
+                                int ass = 0;
+                                for (int j = 0; j < revertData.Count; j++)
+                                {
+                                    if (revertData[j].TargetValue.ToString() != "NaN")
+                                    {
+                                        ass = Convert.ToInt32(revertData[j].TargetValue);
+                                    }
+                                    sItem.data.Add(ass);
+                                    switch (queryType)
+                                    {
+                                        case QueryType.NowDay:
+                                            echartRootJson.xAxis.data.Add(revertData[j].CreatedOnUtc.Hour.ToString());
+                                            break;
+                                        case QueryType.LatelySevenDay:
+                                            echartRootJson.xAxis.data.Add(System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(revertData[j].CreatedOnUtc.DayOfWeek));
+                                            break;
+                                        case QueryType.NowMonth:
+                                            echartRootJson.xAxis.data.Add(revertData[j].CreatedOnUtc.Day.ToString());
+                                            break;
+                                    }
+                                }
+                                seriesList.Add(sItem);
+                            }
+                            else
+                            {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.GetSensorHistoryFailed), true);
+                                });
+                            }
+                        }
+                    }
+
+                    //echartRootJson.title.text = "娓╁害(鈩�)";lineStyle
+                    //echartRootJson.color = new List<string> { "#80AEFF" };//, "FFD154", "FF9D54", "FE6A6A", "B183C3", "ADE764" 
+                    echartRootJson.series = seriesList;
+
+
+#if __IOS__
+                    echartRootJson.xAxis.axisLabel.fontSize = 22;
+                    echartRootJson.yAxis.axisLabel.fontSize = 22;
+#else
+                    echartRootJson.xAxis.axisLabel.fontSize = 8;
+                    echartRootJson.yAxis.axisLabel.fontSize = 8;
+#endif
+                    echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson);
+                    Application.RunOnMainThread(() =>
+                    {
+                        myEchartsView.ShowWithOptionJsonString(echartRootJsonString);
+                    });
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"sensor history error : {ex.Message}");
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() => {
+                        loadPage.Hide();
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+        void LoadEvent_ChangeSensorHistoryShowType()
+        {
+            btnShowHistroyData_Day.MouseUpEventHandler = (sender, e) =>
+            {
+                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg1.png";
+                btnShowHistroyData_Day.IsSelected = true;
+                btnShowHistroyData_Month.IsSelected = false;
+                btnShowHistroyData_Week.IsSelected = false;
+                LoadMothed_GetSensorHistoryData(QueryType.NowDay);
+            };
+
+            btnShowHistroyData_Month.MouseUpEventHandler = (sender, e) =>
+            {
+                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg3.png";
+                btnShowHistroyData_Day.IsSelected = false;
+                btnShowHistroyData_Month.IsSelected = true;
+                btnShowHistroyData_Week.IsSelected = false;
+                LoadMothed_GetSensorHistoryData(QueryType.NowMonth);
+            };
+            btnShowHistroyData_Week.MouseUpEventHandler = (sender, e) =>
+            {
+                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg2.png";
+                btnShowHistroyData_Day.IsSelected = false;
+                btnShowHistroyData_Month.IsSelected = false;
+                btnShowHistroyData_Week.IsSelected = true;
+                LoadMothed_GetSensorHistoryData(QueryType.LatelySevenDay);
+            };
+
+        }
+
+        void LoadEvent_SwitchOtherRoomSensorData()
+        {
 
         }
     }
-}
+
+    public class SensorPushHistoryRes
+    {
+
+        /// <summary>
+        /// 瀹為檯鐩爣鍊�
+        /// </summary>
+        public float TargetValue { get; set; }
+
+        /// <summary>
+        /// 鏌ヨ鐨勬椂闂撮泦缇�
+        /// </summary>
+        public DateTime CreatedOnUtc { get; set; }
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0