From 6d73bf6e816570291865674bef8bce8972e4de3f Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期三, 01 十二月 2021 16:32:57 +0800
Subject: [PATCH] 2021-12-01-01

---
 HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs |  584 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 410 insertions(+), 174 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
index 560fb7a..b39f8be 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
@@ -1,6 +1,7 @@
 锘縰sing System;
 using System.Collections.Generic;
 using HDL_ON.DAL.Server;
+using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
 using Shared;
@@ -8,17 +9,84 @@
 {
     public class EnergyMainPage : FrameLayout
     {
-        FrameLayout bodyView;
+        static EnergyMainPage bodyView;
+
+        /// <summary>
+        /// 椤堕儴鍖哄煙
+        /// </summary>
+        FrameLayout generalTableView;
+
+        /// <summary>
+        /// 瀹炴椂鍔熻��
+        /// </summary>
+        Button btnRealTimeData;
+        /// <summary>
+        /// 瀹炴椂鍔熻�楀崟浣�
+        /// </summary>
+        Button btnTotalValueUint;
+        /// <summary>
+        /// 鎬诲姛鑰�
+        /// </summary>
+        TextButton btnTotalValue;
+        /// <summary>
+        /// 鎬诲姛鑰�-楗煎浘
+        /// </summary>
+        MyEchartsViewOn myEchartsView_Pie;
+        /// <summary>
+        /// 鍘嗗彶鏁版嵁鍖哄煙
+        /// </summary>
+        FrameLayout diagramView;
+        /// <summary>
+        /// 鏇茬嚎鍥炬暟鎹畇tring
+        /// </summary>
+        EchartsOption_BrokenLine brokenLine;
+        /// <summary>
+        /// 鏇茬嚎鍥句笅鎷夋寜閽�
+        /// </summary>
+        Button btnDrodDown;
+
+
+        /// <summary>
+        /// 鎻掓煡璇㈢殑鑳芥簮鍒楄〃
+        /// </summary>
+        List<Function> queryList = new List<Function>();
+        /// <summary>
+        /// 鏌ヨ鏉′欢
+        /// hour銆亀eek銆乵onth
+        /// </summary>
+        string curQueryType = "hour";
+
+
+        /// <summary>
+        /// 鑳芥簮鍒楄〃鍖哄煙
+        /// </summary>
+        FrameLayout energyListView;
+        /// <summary>
+        /// 鍘嗗彶鏁版嵁鍥捐〃
+        /// </summary>
+        MyEchartsViewOn myEchartsView_Line;
+        /// <summary>
+        /// 鏇茬嚎鍥炬槸鍚﹀睍寮�
+        /// </summary>
+        bool isUnfoldOrStow = false;
+
+        List<Function> energyList = new List<Function>();
 
         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"};
-                                        
+        /// <summary>
+        /// 涓婚〉
+        /// </summary>
         public EnergyMainPage()
         {
             bodyView = this;
+            energyList = FunctionList.List.GetEnergyList();
+            var breaker = FunctionList.List.Functions.FindAll((obj) => obj.spk == SPK.AirSwitch);
+            var energyBreker = breaker.FindAll((obj) => obj.GetAttribute("power") != null);
+            energyList.AddRange(energyBreker);
         }
 
         /// <summary>
@@ -37,18 +105,18 @@
             bodyView.AddChidren(contentView);
 
             #region 椤堕儴view
-            var generalTableView = new FrameLayout()
+            generalTableView = new FrameLayout()
             {
                 Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(16),
+                Y = Application.GetRealWidth(16),
                 Width = Application.GetRealWidth(343),
-                Height = Application.GetRealWidth(148),
+                Height = Application.GetRealWidth(148),//419//148
                 Radius = (uint)Application.GetRealWidth(5),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
             contentView.AddChidren(generalTableView);
 
-            TextButton btnTotalValue = new TextButton()
+            btnTotalValue = new TextButton()
             {
                 X = Application.GetRealWidth(18),
                 Y = Application.GetRealWidth(24),
@@ -62,9 +130,7 @@
             };
             generalTableView.AddChidren(btnTotalValue);
 
-            btnTotalValue.Width = btnTotalValue.GetTextWidth();
-
-            var btnTotalValueUint = new Button()
+            btnTotalValueUint = new Button()
             {
                 X = btnTotalValue.Right,
                 Y = Application.GetRealWidth(24),
@@ -78,7 +144,7 @@
             };
             generalTableView.AddChidren(btnTotalValueUint);
 
-            var btnRealTimeData = new Button()
+            btnRealTimeData = new Button()
             {
                 X = Application.GetRealWidth(18),
                 Y = btnTotalValue.Bottom,
@@ -90,7 +156,7 @@
                 TextID = StringId.RealTimePowerConsumption,
             };
             generalTableView.AddChidren(btnRealTimeData);
-            btnRealTimeData.Text = Language.StringByID(StringId.RealTimePowerConsumption).Replace("{0}", "0");
+
 
             var echartsView = new FrameLayout()
             {
@@ -100,65 +166,106 @@
                 //Y = Application.GetRealWidth(16),
             };
             generalTableView.AddChidren(echartsView);
-            MyEchartsViewOn myEchartsView = new MyEchartsViewOn() {
+            myEchartsView_Pie = new MyEchartsViewOn()
+            {
                 Width = Application.GetRealWidth(118),
                 Height = Application.GetRealWidth(118),
             };
+            echartsView.AddChidren(myEchartsView_Pie);
 
-            echartsView.AddChidren(myEchartsView);
             Dictionary<string, string> list = new Dictionary<string, string>();
-            list.Add("鐢靛啺绠�", "12");
-            list.Add("鐢甸鎵�", "2");
-            list.Add("绌鸿皟", "9");
-            list.Add("娲楄。鏈�", "3");
-            list.Add("鐢佃剳", "33");
-            var echartsPie = new EchartsOption_Pie();
-            var echartRootJson = echartsPie.InitDateJson(list);
-            //var echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson);
-            myEchartsView.ShowWithOption(echartRootJson);
+            foreach(var ene in energyList)
+            {
+                double tt = 0;
+                double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out tt);
+                tt *= 100;//涔樹互100锛屽皬浜�1鏃犳硶鍔犺浇echart
+                tt = Math.Round(tt, 2);
+                list.Add(ene.name, tt.ToString());
+            }
+            myEchartsView_Pie.ShowWithOption(new EchartsOption_Pie().InitDateJson(list));
 
-
-            var btnDrodDown = new Button()
+            btnDrodDown = new Button()
             {
                 Y = Application.GetRealWidth(118),
                 Width = Application.GetRealWidth(343),
                 Height = Application.GetRealWidth(30),
                 UnSelectedImagePath = "FunctionIcon/Energy/EnergyDrodDownIcon.png",
+                SelectedImagePath = "FunctionIcon/Energy/EnergyDrodUpIcon.png",
             };
+            initDiagramView();
             generalTableView.AddChidren(btnDrodDown);
+            btnDrodDown.MouseUpEventHandler = (sender, e) => {
+                isUnfoldOrStow = btnDrodDown.IsSelected = !btnDrodDown.IsSelected;
+                showDiagramView();
+            };
 
+            UpdataValue();
             #endregion
 
 
-            var energyList = FunctionList.List.GetEnergyList();
-            var energyListView = new FrameLayout()
+            energyListView = new FrameLayout()
             {
                 Y = generalTableView.Bottom + Application.GetRealWidth(8),
-                Height = Application.GetRealWidth(116 * energyList.Count) ,
+                Height = Application.GetRealWidth(116 * energyList.Count + 50),
             };
             contentView.AddChidren(energyListView);
             int index = 0;
-            foreach(var energy in energyList)
+            foreach (var energy in energyList)
             {
                 EnergyRow(energy, energyListView, index);
                 index++;
+                new System.Threading.Thread(() =>
+                {
+                    Control.Ins.SendReadCommand(energy);
+                })
+                { IsBackground = true }.Start();
             }
+
+
         }
 
-        public void ddd(FrameLayout contentView)
+        /// <summary>
+        /// 
+        /// </summary>
+        void showDiagramView()
         {
-
-            FrameLayout diagramView = new FrameLayout()
+            if (isUnfoldOrStow)//灞曞紑
             {
+                generalTableView.Height = Application.GetRealWidth(419);
+                btnDrodDown.Y = Application.GetRealWidth(389);
+                btnDrodDown.IsSelected = true;
+            }
+            else
+            {
+                generalTableView.Height = Application.GetRealWidth(148);
+                btnDrodDown.Y = Application.GetRealWidth(118);
+                btnDrodDown.IsSelected = false;
+            }
+
+            energyListView.Y = generalTableView.Bottom + Application.GetRealWidth(8);
+        }
+
+        /// <summary>
+        /// 鍔犺浇鏇茬嚎鍥�
+        /// </summary>
+        /// <param name="contentView"></param>
+        void initDiagramView()
+        {
+            brokenLine = new EchartsOption_BrokenLine();
+
+
+            diagramView = new FrameLayout()
+            {
+                Y = Application.GetRealWidth(136),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(343),
-                Height = Application.GetRealWidth(420),
+                Height = Application.GetRealWidth(281),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
                 Radius = (uint)Application.GetRealWidth(12),
                 BorderColor = 0x00000000,
                 BorderWidth = 0,
             };
-            contentView.AddChidren(diagramView);
+            generalTableView.AddChidren(diagramView);
 
             #region 閫夋嫨鏁版嵁鏃ユ湡鑼冨洿
             var showDataTypeView = new FrameLayout()
@@ -203,154 +310,158 @@
                 TextColor = CSS_Color.PromptingColor2,
                 SelectedTextColor = CSS_Color.MainColor,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = DateTime.Now.Month.ToString() + Language.StringByID(StringId.month),
+                Text =  Language.StringByID(StringId.month),//DateTime.Now.Month.ToString() +
             };
             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";
+                brokenLine.YvalueText = "";
+                foreach (var enery in queryList)
+                {
+                    LoadMothed_GetHistoryData(enery,false);
+                }
+            };
+
+            btnShowHistroyData_Week.MouseUpEventHandler = (sender, e) =>
+            {
+                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg2.png";
+                btnShowHistroyData_Day.IsSelected = false;
+                btnShowHistroyData_Month.IsSelected = false;
+                btnShowHistroyData_Week.IsSelected = true;
+                curQueryType = "week";
+                brokenLine.YvalueText = "";
+                foreach (var enery in queryList)
+                {
+                    LoadMothed_GetHistoryData(enery, false);
+                }
+            };
+            btnShowHistroyData_Month.MouseUpEventHandler = (sender, e) =>
+            {
+                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg3.png";
+                btnShowHistroyData_Day.IsSelected = false;
+                btnShowHistroyData_Month.IsSelected = true;
+                btnShowHistroyData_Week.IsSelected = false;
+                curQueryType = "month";
+                brokenLine.YvalueText = "";
+                foreach (var enery in queryList)
+                {
+                    LoadMothed_GetHistoryData(enery, false);
+                }
+            };
+
             #endregion
 
             var historyDataView = new FrameLayout()
             {
                 Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(52),
-                Width = Application.GetRealWidth(343 - 32),
-                Height = Application.GetRealHeight(270),
+                Y = Application.GetRealWidth(52),
+                Height = Application.GetRealWidth(190),
             };
             diagramView.AddChidren(historyDataView);
 
-            var myEchartsView = new MyEchartsViewOn();
-
-            historyDataView.AddChidren(myEchartsView);
-
+            myEchartsView_Line = new MyEchartsViewOn()
+            {
+                Y = Application.GetRealWidth(10),
+                Height = Application.GetRealWidth(180),
+            };
+            historyDataView.AddChidren(myEchartsView_Line);
         }
-            /// <summary>
-            /// 璇诲彇浼犳劅鍣ㄥ巻鍙叉暟鎹�
-            /// </summary>
-            void ddd2(string curQueryType,Function function,int index)
+
+        /// <summary>
+        /// 璇诲彇鍘嗗彶鏁版嵁
+        /// </summary>
+        void LoadMothed_GetHistoryData(Function sr,bool isDel)
+        {
+            if(isDel)//鍒犻櫎鏁版嵁鐜板疄
             {
-                var seriesList = new List<EchartSeriesItem>();
-                var loadPage = new Loading()
+                brokenLine.YvalueText = "";
+                foreach (var ene in queryList)
                 {
-                    LodingBackgroundColor = 0x88888888,
-                };
-                historyDataView.AddChidren(loadPage);
+                    brokenLine.YvalueText += ene.GetAttrState("ydata");
+                }
+                var opString = brokenLine.InitOption();
 
-                new System.Threading.Thread(() =>
+                Application.RunOnMainThread(() =>
                 {
-                    try
+                    myEchartsView_Line.ShowWithOption(opString);
+                });
+
+                return;
+            }
+
+            var loadPage = new Loading()
+            {
+                LodingBackgroundColor = 0x88888888,
+            };
+            diagramView.AddChidren(loadPage);
+
+            new System.Threading.Thread(() =>
+            {
+                try
+                {
+                    Application.RunOnMainThread(() =>
                     {
-                        Application.RunOnMainThread(() =>
-                        {
-                            loadPage.Start(Language.StringByID(StringId.PleaseWait));
-                        });
-                        int i = 0;
+                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
+                    });
 
+                    var sensorType = sr.spk.Split(".")[1];
+                    var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId, "total_electricity");
+                    if (revertObj != null)
+                    {
+                        if (revertObj.Code == StateCode.SUCCESS)
                         {
-                            var sensorType = function.spk.Split(".")[0];
-                            var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, function.deviceId, sensorType);
+                            var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
 
-                            if (revertObj != null)
+                            List<string> vs = new List<string>();
+                            if (brokenLine.YvalueText == "")
                             {
-                                if (revertObj.Code == StateCode.SUCCESS)
+                                foreach (var data in revertData)
                                 {
-                                    var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
-
-                                    var sItem = new EchartSeriesItem
-                                    {
-                                        data = new List<int>(),
-                                        lineStyle = new EchartLineStyle()
-                                        {
-                                            color = colorList2[i],
-#if __IOS__
-                                            width = 5,
-#elif __ANDROID__
-                                        width = 2,
-#endif
-                                        },
-                                    };
-
-                                    foreach (var d in revertData)
-                                    {
-                                        echartRootJson.xAxis.data.Add(d.fieldName);
-                                        echartRootJson.yAxis.data.Add(d.fieldValue);
-                                    }
-                                    seriesList.Add(sItem);
+                                    vs.Add(data.fieldName);
                                 }
-                                else
-                                {
-                                    Application.RunOnMainThread(() =>
-                                    {
-                                        IMessageCommon.Current.ShowErrorInfoAlter("", true, 2, Language.StringByID(StringId.GetSensorHistoryFailed), false);
-                                    });
-                                }
+                                brokenLine.InitXdataText(vs);
                             }
-                            i++;
+                            if (sr.GetAttribute("ydata") == null)
+                            {
+                                sr.attributes.Add(new FunctionAttributes() { key = "ydata" });
+                            }
+                            sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color")) + ",");
                         }
-
                     }
-                    catch (Exception ex)
+                    brokenLine.yTitle = Language.StringByID(StringId.EnergyConsumption) + "(kW)";
+                    brokenLine.xTitle = Language.StringByID(StringId.timeMode);
+                    if(curQueryType != "hour")
                     {
-                        MainPage.Log($"sensor history error : {ex.Message}");
+                        brokenLine.xTitle = Language.StringByID(StringId.Date);
                     }
-                    finally
+                    var opString = brokenLine.InitOption();
+
+                    Application.RunOnMainThread(() =>
                     {
-                        Application.RunOnMainThread(() =>
-                        {
-                            loadPage.Hide();
-                        });
-                    }
-                })
-                { IsBackground = true }.Start();
-                EchartsOption echartRootJson = new EchartsOption();
-                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
-                var echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson);
-                myEchartsView.ShowWithOptionJsonString(echartRootJsonString);
-
-            }
-
-            var curQueryType = "";
-
-            void LoadEvent_ChangeSensorHistoryShowType()
-            {
-                btnShowHistroyData_Day.MouseUpEventHandler = (sender, e) =>
+                        myEchartsView_Line.ShowWithOption(opString);
+                    });
+                }
+                catch (Exception ex)
                 {
-                    showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg1.png";
-                    btnShowHistroyData_Day.IsSelected = true;
-                    btnShowHistroyData_Month.IsSelected = false;
-                    btnShowHistroyData_Week.IsSelected = false;
-                    curQueryType = "hour";
-                    LoadMothed_GetSensorHistoryData();
-                };
-
-                btnShowHistroyData_Month.MouseUpEventHandler = (sender, e) =>
+                    MainPage.Log($"sensor history error : {ex.Message}");
+                }
+                finally
                 {
-                    showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg3.png";
-                    btnShowHistroyData_Day.IsSelected = false;
-                    btnShowHistroyData_Month.IsSelected = true;
-                    btnShowHistroyData_Week.IsSelected = false;
-                    curQueryType = "week";
-                    LoadMothed_GetSensorHistoryData();
-                };
-                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";
-                    LoadMothed_GetSensorHistoryData();
-                };
-
-            }
-
+                    Application.RunOnMainThread(() =>
+                    {
+                        loadPage.Hide();
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
+        }
 
         /// <summary>
         /// 
@@ -364,16 +475,134 @@
             };
             view.AddChidren(btnLine);
 
-            var row = new FrameLayout()
+            //瀹氫箟浠h〃鑹�
+            energy.attributes.Add(new FunctionAttributes() { key = "color", state = colorList2[index] });
+
+            var row = new EnergyRow(energy, colorList[index]);
+
+            row.SetHistory_Action = (isAdd) =>
             {
-                Y = btnLine.Bottom,
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(343),
-                Height = Application.GetRealWidth(100),
-                Radius = (uint)Application.GetRealWidth(12),
-                BackgroundColor = CSS_Color.MainBackgroundColor,
+                if (isAdd)
+                {
+                    if(!isUnfoldOrStow)//濡傛灉鏇茬嚎鍥炬病鏈夊姞杞藉嚭鏉ワ紝鍒欒嚜鍔ㄥ姞杞藉嚭鏉�
+                    {
+                        isUnfoldOrStow = true;
+                        showDiagramView();
+                    }
+                    queryList.Add(row.function);
+                    LoadMothed_GetHistoryData(row.function, false);
+                }
+                else
+                {
+                    queryList.Remove(row.function);
+                    LoadMothed_GetHistoryData(row.function, true);
+                    if (queryList.Count == 0)//濡傛灉鏌ヨ鍒楄〃涓�0锛岃嚜鍔ㄦ敹璧锋洸绾垮浘
+                    {
+                        isUnfoldOrStow = false;
+                        showDiagramView();
+                    }
+                }
             };
+
+
+            row.Y = btnLine.Bottom;
             view.AddChidren(row);
+            //璁板綍闇�瑕佹洿鏂扮殑鏇存柊鎸夐挳
+            listButton_value.Add(row.btnValue);
+        }
+
+        /// <summary>
+        /// 璁板綍闇�瑕佹洿鏂扮殑鏇存柊鎸夐挳
+        /// </summary>
+        public List<Button> listButton_value = new List<Button>();
+
+        /// <summary>
+        /// 鏇存柊鍔熻兘鐘舵��
+        /// </summary>
+        public static void UpdataStatus(Function updataTemp)
+        {
+            Application.RunOnMainThread(() =>
+            {
+                try
+                {
+                    if (bodyView == null)
+                        return;
+                    foreach (var btn in bodyView.listButton_value)
+                    {
+                        if (btn.Tag.ToString() == updataTemp.sid)
+                        {
+                            var newValue = updataTemp.GetAttrState(FunctionAttributeKey.Power);
+                            //if (newValue != btn.Text)
+                            {
+                                btn.Text = Math.Round(double.Parse(newValue), 2).ToString();// +"W";
+                                UpdataValue();
+                            }
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"{bodyView.GetType().Name } UpdataStates error : {ex.Message}");
+                }
+            });
+        }
+
+        /// <summary>
+        /// 鏇存柊鏁版嵁
+        /// </summary>
+        static void UpdataValue()
+        {
+            double totalValue = 0;
+            double realtimeValue = 0;
+            Dictionary<string, string> list = new Dictionary<string, string>();//楗煎浘鏁版嵁
+            foreach (var ene in bodyView.energyList)
+            {
+                double power = 0.00;
+                double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out power);
+                power = Math.Round(power, 2);
+                totalValue += power;
+
+                double realTimePower = 0;
+                double.TryParse(ene.GetAttrState(FunctionAttributeKey.Power), out realTimePower);
+                realtimeValue += realTimePower;
+                realtimeValue = Math.Round(realtimeValue, 2);
+
+                #region 楗煎浘鏁版嵁
+                double tt = 0.00;
+                double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out tt);
+                tt = Math.Round(tt, 2);
+                tt *= 100;//涔樹互100锛屽皬浜�1鏃犳硶鍔犺浇echart
+                list.Add(ene.name, tt.ToString());
+                #endregion
+            }
+            bodyView.btnTotalValue.Text = totalValue.ToString();
+            realtimeValue /= 1000;
+            bodyView.btnRealTimeData.Text = Language.StringByID(StringId.RealTimePowerConsumption).Replace("{0}", realtimeValue.ToString());
+            ///鍔ㄦ�佽幏鍙栨枃鏈搴�
+            bodyView.btnTotalValue.Width = bodyView.btnTotalValue.GetTextWidth() + Application.GetRealWidth(5);
+            bodyView.btnTotalValueUint.X = bodyView.btnTotalValue.Right;
+            //鍒锋柊楗煎浘
+            bodyView.myEchartsView_Pie.ShowWithOption(new EchartsOption_Pie().InitDateJson(list));
+
+        }
+    }
+
+
+    public class EnergyRow : FrameLayout
+    {
+        public Button btnValue;
+        Button btnShowData;
+        public Function function;
+        public Action<bool> SetHistory_Action;
+        public EnergyRow(Function energy, uint color)
+        {
+            function = energy;
+            Gravity = Gravity.CenterHorizontal;
+            Width = Application.GetRealWidth(343);
+            Height = Application.GetRealWidth(100);
+            Radius = (uint)Application.GetRealWidth(12);
+            BackgroundColor = CSS_Color.MainBackgroundColor;
+            Tag = energy.sid;
 
             var btnColorTip = new Button()
             {
@@ -381,13 +610,13 @@
                 Y = Application.GetRealWidth(16),
                 Width = Application.GetRealWidth(12),
                 Height = Application.GetRealWidth(12),
-                BackgroundColor = colorList[index],
+                BackgroundColor = color
             };
-            row.AddChidren(btnColorTip);
+            AddChidren(btnColorTip);
 
             var btnName = new Button()
             {
-                X = Application.GetRealWidth(8 + 10 + 32),
+                X = Application.GetRealWidth(28),
                 Y = Application.GetRealHeight(10),
                 Width = Application.GetRealWidth(200),
                 Height = Application.GetRealHeight(24),
@@ -396,11 +625,11 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.TextFontSize,
             };
-            row.AddChidren(btnName);
+            AddChidren(btnName);
 
             var btnFromFloor = new Button()
             {
-                X = Application.GetRealWidth(8 + 10 + 32),
+                X = Application.GetRealWidth(28),
                 Y = Application.GetRealHeight(10 + 24),
                 Width = Application.GetRealWidth(200),
                 Height = Application.GetRealHeight(18),
@@ -409,9 +638,9 @@
                 TextColor = CSS_Color.PromptingColor1,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
             };
-            row.AddChidren(btnFromFloor);
+            AddChidren(btnFromFloor);
 
-            var btnValue = new Button()
+            btnValue = new Button()
             {
                 X = Application.GetRealWidth(28),
                 Y = Application.GetRealWidth(57),
@@ -420,9 +649,11 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = CSS_FontSize.HeadlineFontSize,
                 TextColor = CSS_Color.FirstLevelTitleColor,
-                Text = "---"
+                Text = energy.GetAttrState(FunctionAttributeKey.Power),
+                Tag = energy.sid,
+                IsBold = true,
             };
-            row.AddChidren(btnValue);
+            AddChidren(btnValue);
 
 
             var btnSetting = new Button()
@@ -433,9 +664,9 @@
                 Height = Application.GetMinRealAverage(32),
                 UnSelectedImagePath = "Public/FuncInfoSetIcon.png",
             };
-            row.AddChidren(btnSetting);
+            AddChidren(btnSetting);
 
-            Button btnSeltSensorValue = new Button()
+            var btnSeltSensorValue = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Y = Application.GetRealWidth(47),
@@ -446,9 +677,8 @@
                 IsBold = true,
                 TextSize = CSS_FontSize.HeadlineFontSize,
             };
-            row.AddChidren(btnSeltSensorValue);
+            AddChidren(btnSeltSensorValue);
 
-            Button btnShowData;
             btnShowData = new Button()
             {
                 X = Application.GetRealWidth(291),
@@ -457,15 +687,16 @@
                 Height = Application.GetMinRealAverage(32),
                 UnSelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIcon.png",
                 SelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIconOn.png",
-                IsSelected = true,
+                IsSelected = false,
             };
-            row.AddChidren(btnShowData);
+            AddChidren(btnShowData);
 
             btnSetting.MouseUpEventHandler = (sender, e) =>
             {
                 Action backAction = () =>
                 {
                     btnName.Text = energy.name;
+                    btnFromFloor.Text = energy.GetRoomListName();
                 };
                 var infoView = new FunctionBaseInfoSetPage(energy, backAction);
                 MainPage.BasePageView.AddChidren(infoView);
@@ -473,6 +704,11 @@
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
             };
 
+            btnShowData.MouseUpEventHandler = (sender, e) => {
+                btnShowData.IsSelected = !btnShowData.IsSelected;
+                SetHistory_Action(btnShowData.IsSelected);
+            };
         }
+
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.8.0