From d72ca686a3e262693f8a6e45e747e8e8da43335b Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期二, 06 七月 2021 09:39:03 +0800
Subject: [PATCH] 2021-07-06 1.更新

---
 HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs |  398 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 390 insertions(+), 8 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
index 14fba77..80ee1ff 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
@@ -1,32 +1,53 @@
 锘縰sing System;
 using System.Collections.Generic;
+using HDL_ON.DAL.Server;
+using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
+using HDL_ON.UI.UI2.EchartsOption_Energy;
 using Shared;
 namespace HDL_ON.UI
 {
     public class EnergyMainPage : FrameLayout
     {
         FrameLayout bodyView;
+
+        List<uint> colorList = new List<uint>(){0xFF80AEFF, 0xFFFFD154, 0xFFFF9D54, 0xFFFE6A6A, 0xFFB183C3, 0xFFADE764,
+                                        0xFFD7504B, 0xFFC6E579, 0xFFF4E001, 0xFFF0805A, 0xFF26C0C0};
+        List<string> colorList2 = new List<string>() {
+                                        "#80AEFF", "#FFD154", "#FF9D54", "#FE6A6A", "#B183C3", "#ADE764",
+                                        "#D7504B", "#C6E579", "#F4E001", "#F0805A", "#26C0C0"};
+
         public EnergyMainPage()
         {
             bodyView = this;
         }
 
+        /// <summary>
+        /// 
+        /// </summary>
         public void LoadPage()
         {
             new TopViewDiv(bodyView, Language.StringByID(StringId.EnergyMonitoring)).LoadTopView();
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
 
+            var contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(603),
+            };
+            bodyView.AddChidren(contentView);
+
+            #region 椤堕儴view
             var generalTableView = new FrameLayout()
             {
                 Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(80),
+                Y = Application.GetRealHeight(16),
                 Width = Application.GetRealWidth(343),
                 Height = Application.GetRealWidth(148),
                 Radius = (uint)Application.GetRealWidth(5),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
-            bodyView.AddChidren(generalTableView);
+            contentView.AddChidren(generalTableView);
 
             TextButton btnTotalValue = new TextButton()
             {
@@ -58,18 +79,19 @@
             };
             generalTableView.AddChidren(btnTotalValueUint);
 
-            var btnValue = new Button()
+            var btnRealTimeData = new Button()
             {
                 X = Application.GetRealWidth(18),
                 Y = btnTotalValue.Bottom,
                 Width = Application.GetRealWidth(209),
                 Height = Application.GetRealWidth(28),
-                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextColor = CSS_Color.TextualColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
-                IsBold = true,
                 TextAlignment = TextAlignment.CenterLeft,
+                TextID = StringId.RealTimePowerConsumption,
             };
-            generalTableView.AddChidren(btnValue);
+            generalTableView.AddChidren(btnRealTimeData);
+            btnRealTimeData.Text = Language.StringByID(StringId.RealTimePowerConsumption).Replace("{0}", "0");
 
             var echartsView = new FrameLayout()
             {
@@ -79,7 +101,8 @@
                 //Y = Application.GetRealWidth(16),
             };
             generalTableView.AddChidren(echartsView);
-            MyEchartsViewOn myEchartsView = new MyEchartsViewOn() {
+            MyEchartsViewOn myEchartsView = new MyEchartsViewOn()
+            {
                 Width = Application.GetRealWidth(118),
                 Height = Application.GetRealWidth(118),
             };
@@ -97,6 +120,365 @@
             myEchartsView.ShowWithOption(echartRootJson);
 
 
+            var btnDrodDown = new Button()
+            {
+                Y = Application.GetRealWidth(118),
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(30),
+                UnSelectedImagePath = "FunctionIcon/Energy/EnergyDrodDownIcon.png",
+            };
+            generalTableView.AddChidren(btnDrodDown);
+
+            #endregion
+
+
+            var energyList = FunctionList.List.GetEnergyList();
+            var energyListView = new FrameLayout()
+            {
+                Y = generalTableView.Bottom + Application.GetRealWidth(8),
+                Height = Application.GetRealWidth(116 * energyList.Count),
+            };
+            contentView.AddChidren(energyListView);
+            int index = 0;
+            foreach (var energy in energyList)
+            {
+                EnergyRow(energy, energyListView, index);
+                index++;
+            }
+        }
+        FrameLayout diagramView;
+        List<Function> queryList = new List<Function>();
+        string curQueryType = "hour";
+
+        void d1(FrameLayout contentView)
+        {
+            diagramView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(420),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+                BorderColor = 0x00000000,
+                BorderWidth = 0,
+            };
+            contentView.AddChidren(diagramView);
+
+            #region 閫夋嫨鏁版嵁鏃ユ湡鑼冨洿
+            var showDataTypeView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(183),
+                Y = Application.GetRealHeight(12),
+                Width = Application.GetRealWidth(144),
+                Height = Application.GetRealHeight(24),
+                BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg1.png",
+            };
+            diagramView.AddChidren(showDataTypeView);
+
+            var btnShowHistroyData_Day = new Button()
+            {
+                Width = Application.GetRealWidth(48),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.PromptingColor2,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                IsSelected = true,
+                TextID = StringId.day,
+            };
+            showDataTypeView.AddChidren(btnShowHistroyData_Day);
+
+            var btnShowHistroyData_Week = new Button()
+            {
+                X = Application.GetRealWidth(48),
+                Width = Application.GetRealWidth(48),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.PromptingColor2,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextID = StringId.week,
+            };
+            showDataTypeView.AddChidren(btnShowHistroyData_Week);
+
+            var btnShowHistroyData_Month = new Button()
+            {
+                X = Application.GetRealWidth(48 * 2),
+                Width = Application.GetRealWidth(48),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.PromptingColor2,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = DateTime.Now.Month.ToString() + Language.StringByID(StringId.month),
+            };
+            showDataTypeView.AddChidren(btnShowHistroyData_Month);
+
+
+            btnShowHistroyData_Day.MouseUpEventHandler = (sender, e) =>
+            {
+                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg1.png";
+                btnShowHistroyData_Day.IsSelected = true;
+                btnShowHistroyData_Month.IsSelected = false;
+                btnShowHistroyData_Week.IsSelected = false;
+                curQueryType = "hour";
+                d2();
+            };
+
+            btnShowHistroyData_Month.MouseUpEventHandler = (sender, e) =>
+            {
+                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg3.png";
+                btnShowHistroyData_Day.IsSelected = false;
+                btnShowHistroyData_Month.IsSelected = true;
+                btnShowHistroyData_Week.IsSelected = false;
+                curQueryType = "week";
+                d2();
+            };
+            btnShowHistroyData_Week.MouseUpEventHandler = (sender, e) =>
+            {
+                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg2.png";
+                btnShowHistroyData_Day.IsSelected = false;
+                btnShowHistroyData_Month.IsSelected = false;
+                btnShowHistroyData_Week.IsSelected = true;
+                curQueryType = "month";
+                d2();
+            };
+
+            #endregion
+
+            var historyDataView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(52),
+                Width = Application.GetRealWidth(343 - 32),
+                Height = Application.GetRealHeight(270),
+            };
+            diagramView.AddChidren(historyDataView);
+
+            var myEchartsView = new MyEchartsViewOn();
+
+            historyDataView.AddChidren(myEchartsView);
+
+        }
+
+        void d2()
+        {
+            int index = 0;
+            var echartRootJson = new EchartsOption_Energy();
+            var seriesList = new List<EchartSeriesItem>();
+            foreach (var function in queryList)
+            {
+                var seriesItem = d3(function, index, echartRootJson.xAxis.data);
+                seriesList.Add(seriesItem);
+            }
+        }
+        /// <summary>
+        /// 鏌ヨ鍒楄〃
+        /// </summary>
+        /// <summary>
+        /// 璇诲彇浼犳劅鍣ㄥ巻鍙叉暟鎹�
+        /// </summary>
+        EchartSeriesItem d3(Function function, int index, List<string> xAxisData)
+        {
+            EchartSeriesItem sItem = null;
+            List<string> data = new List<string>();
+            var loadPage = new Loading()
+            {
+                LodingBackgroundColor = 0x88888888,
+            };
+            diagramView.AddChidren(loadPage);
+
+            try
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    loadPage.Start(Language.StringByID(StringId.PleaseWait));
+                });
+                var sensorType = function.spk.Split(".")[0];
+                var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, function.deviceId, sensorType);
+
+                if (revertObj != null)
+                {
+                    if (revertObj.Code == StateCode.SUCCESS)
+                    {
+                        var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
+
+                         sItem = new EchartSeriesItem
+                        {
+                            data = new List<int>(),
+                            lineStyle = new EchartLineStyle()
+                            {
+                                color = colorList2[index],
+#if __IOS__
+                                width = 5,
+#elif __ANDROID__
+                                        width = 2,
+#endif
+                            },
+                        };
+
+                        try
+                        {
+                            foreach (var d in revertData)
+                            {
+                                if (xAxisData.Count == 0)
+                                {
+                                    data.Add(d.fieldName);
+                                }
+                                sItem.data.Add(Convert.ToInt32(d.fieldValue));
+                            }
+                            xAxisData.AddRange(data);
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log($"revertData:{ex.Message}");
+                        }
+                    }
+                    else
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            IMessageCommon.Current.ShowErrorInfoAlter("", true, 2, Language.StringByID(StringId.GetSensorHistoryFailed), false);
+                        });
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                MainPage.Log($"sensor history error : {ex.Message}");
+            }
+            finally
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    loadPage.Hide();
+                });
+            }
+            return sItem;
+
+            //var echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson);
+            //myEchartsView.ShowWithOptionJsonString(echartRootJsonString);
+        }
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public void EnergyRow(Function energy, FrameLayout view, int index)
+        {
+            var btnLine = new Button()
+            {
+                Y = Application.GetRealWidth(116 * index),
+                Height = Application.GetRealWidth(16),
+            };
+            view.AddChidren(btnLine);
+
+            var row = new FrameLayout()
+            {
+                Y = btnLine.Bottom,
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(100),
+                Radius = (uint)Application.GetRealWidth(12),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            view.AddChidren(row);
+
+            var btnColorTip = new Button()
+            {
+                X = Application.GetRealWidth(8),
+                Y = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(12),
+                Height = Application.GetRealWidth(12),
+                BackgroundColor = colorList[index],
+            };
+            row.AddChidren(btnColorTip);
+
+            var btnName = new Button()
+            {
+                X = Application.GetRealWidth(8 + 10 + 32),
+                Y = Application.GetRealHeight(10),
+                Width = Application.GetRealWidth(200),
+                Height = Application.GetRealHeight(24),
+                Text = energy.name,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+            };
+            row.AddChidren(btnName);
+
+            var btnFromFloor = new Button()
+            {
+                X = Application.GetRealWidth(8 + 10 + 32),
+                Y = Application.GetRealHeight(10 + 24),
+                Width = Application.GetRealWidth(200),
+                Height = Application.GetRealHeight(18),
+                Text = energy.GetRoomListName(),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+            };
+            row.AddChidren(btnFromFloor);
+
+            var btnValue = new Button()
+            {
+                X = Application.GetRealWidth(28),
+                Y = Application.GetRealWidth(57),
+                Width = Application.GetRealWidth(226),
+                Height = Application.GetRealWidth(43),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.HeadlineFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                Text = "---"
+            };
+            row.AddChidren(btnValue);
+
+
+            var btnSetting = new Button()
+            {
+                X = Application.GetRealWidth(291),
+                Y = Application.GetRealWidth(6),
+                Width = Application.GetMinRealAverage(32),
+                Height = Application.GetMinRealAverage(32),
+                UnSelectedImagePath = "Public/FuncInfoSetIcon.png",
+            };
+            row.AddChidren(btnSetting);
+
+            Button btnSeltSensorValue = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealWidth(47),
+                Width = Application.GetRealWidth(200),
+                Height = Application.GetRealWidth(43),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                IsBold = true,
+                TextSize = CSS_FontSize.HeadlineFontSize,
+            };
+            row.AddChidren(btnSeltSensorValue);
+
+            Button btnShowData;
+            btnShowData = new Button()
+            {
+                X = Application.GetRealWidth(291),
+                Y = Application.GetRealWidth(62),
+                Width = Application.GetMinRealAverage(32),
+                Height = Application.GetMinRealAverage(32),
+                UnSelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIcon.png",
+                SelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIconOn.png",
+                IsSelected = true,
+            };
+            row.AddChidren(btnShowData);
+
+            btnSetting.MouseUpEventHandler = (sender, e) =>
+            {
+                Action backAction = () =>
+                {
+                    btnName.Text = energy.name;
+                };
+                var infoView = new FunctionBaseInfoSetPage(energy, backAction);
+                MainPage.BasePageView.AddChidren(infoView);
+                infoView.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
         }
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.8.0