Davin
2023-07-31 17fd00c16951b025952001c0d815203bb57bd4d9
HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchP3EnergyPage.cs
New file
@@ -0,0 +1,414 @@
using 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;
namespace HDL_ON.UI
{
    /// <summary>
    /// 三相空开能源界面
    /// </summary>
    public class AirSwitchP3EnergyPage : FrameLayout
    {
        static AirSwitchP3EnergyPage bodyView;
        /// <summary>
        /// 总功耗-饼图
        /// </summary>
        MyEchartsViewOn myEchartsView_Pie;
        /// <summary>
        /// 曲线图数据string
        /// </summary>
        EchartsOption_BrokenLine brokenLine;
        /// <summary>
        /// 插查询的能源列表
        /// </summary>
        List<Function> queryList = new List<Function>();
        /// <summary>
        /// 查询条件
        /// hour、week、month
        /// </summary>
        string curQueryType = "hour";
        /// <summary>
        /// 能源列表区域
        /// </summary>
        FrameLayout energyListView;
        /// <summary>
        /// 历史数据图表
        /// </summary>
        MyEchartsViewOn myEchartsView_Line;
        //5C62FE
        Function device;
        /// <summary>
        /// 主页
        /// </summary>
        public AirSwitchP3EnergyPage(Function function)
        {
            bodyView = this;
            device = function;
        }
        /// <summary>
        ///
        /// </summary>
        public void LoadPage()
        {
            new TopViewDiv(bodyView, Language.StringByID(StringId.EnergyMonitoring)).LoadTopView(0xFFF7F7F7);
            bodyView.BackgroundColor = 0xFFF5F7FA;
            var contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(667-64),
                BackgroundColor = 0xFFF5F7FA,
            };
            bodyView.AddChidren(contentView);
            contentView.AddChidren(new Button()
            {
                Height = Application.GetRealHeight(12),
            });
            brokenLine = new EchartsOption_BrokenLine();
            #region 选择数据日期范围
            var showDataTypeView = new FrameLayout()
            {
                X = Application.GetRealWidth(143),
                Y = Application.GetRealHeight(12),
                Width = Application.GetRealWidth(216),
                Height = Application.GetRealHeight(27),
                //BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg1.png",
            };
            contentView.AddChidren(showDataTypeView);
            var btnShowHistroyData_Day = new Button()
            {
                Width = Application.GetRealWidth(54),
                Height = Application.GetRealHeight(27),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.PromptingColor1,
                SelectedTextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                IsSelected = true,
                TextID = StringId.day,
                SelectedBackgroundColor = 0x1F5C62FE,
                BackgroundColor = 0x1F5C62FE,
                BorderColor = CSS_Color.MainColor,
                BorderWidth = 2,
            };
            showDataTypeView.AddChidren(btnShowHistroyData_Day);
            btnShowHistroyData_Day.SetCornerWithSameRadius((uint)Application.GetRealHeight(6), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerBottomLeft);
            var btnShowHistroyData_Month = new Button()
            {
                X = Application.GetRealWidth(54),
                Width = Application.GetRealWidth(54),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.PromptingColor1,
                SelectedTextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextID = StringId.month,
                SelectedBackgroundColor = 0x1F5C62FE,
                BackgroundColor = 0x00000000,
                IsSelected = false,
                BorderWidth = 1,
                BorderColor = CSS_Color.PromptingColor1,
            };
            showDataTypeView.AddChidren(btnShowHistroyData_Month);
            var btnShowHistroyData_Year = new Button()
            {
                X = Application.GetRealWidth(54 * 2),
                Width = Application.GetRealWidth(54),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.PromptingColor1,
                SelectedTextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextID = StringId.Years,
                SelectedBackgroundColor = 0x1F5C62FE,
                BackgroundColor = 0x00000000,
                IsSelected = false,
                BorderWidth = 1,
                BorderColor = CSS_Color.PromptingColor1,
            };
            showDataTypeView.AddChidren(btnShowHistroyData_Year);
            var btnShowHistroyData_Total = new Button()
            {
                X = Application.GetRealWidth(54 * 3),
                Width = Application.GetRealWidth(54),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.PromptingColor1,
                SelectedTextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextID = StringId.Total,
                SelectedBackgroundColor = 0x1F5C62FE,
                BackgroundColor = 0x00000000,
                IsSelected = false,
                BorderWidth = 1,
                BorderColor = CSS_Color.PromptingColor1,
            };
            showDataTypeView.AddChidren(btnShowHistroyData_Total);
            btnShowHistroyData_Total.SetCornerWithSameRadius((uint)Application.GetRealHeight(6), HDLUtils.RectCornerBottomRight | HDLUtils.RectCornerTopRight);
            btnShowHistroyData_Total.MouseUpEventHandler = (sender, e) =>
            {
                (sender as Button).SelectedBackgroundColor = 0x1F5C62FE;
                (sender as Button).BackgroundColor = 0x1F5C62FE;
                (sender as Button).BorderColor = CSS_Color.MainColor;
                (sender as Button).BorderWidth = 2;
                (sender as Button).IsSelected = true;
                btnShowHistroyData_Month.IsSelected = false;
                btnShowHistroyData_Month.BorderWidth = 1;
                btnShowHistroyData_Month.BorderColor = CSS_Color.PromptingColor1;
                btnShowHistroyData_Month.BackgroundColor = 0x00000000;
                btnShowHistroyData_Month.SelectedBackgroundColor = 0x00000000;
                btnShowHistroyData_Year.IsSelected = false;
                btnShowHistroyData_Year.BorderWidth = 1;
                btnShowHistroyData_Year.BorderColor = CSS_Color.PromptingColor1;
                btnShowHistroyData_Year.BackgroundColor = 0x00000000;
                btnShowHistroyData_Year.SelectedBackgroundColor = 0x00000000;
                btnShowHistroyData_Day.IsSelected = false;
                btnShowHistroyData_Day.BorderWidth = 1;
                btnShowHistroyData_Day.BorderColor = CSS_Color.PromptingColor1;
                btnShowHistroyData_Day.BackgroundColor = 0x00000000;
                btnShowHistroyData_Day.SelectedBackgroundColor = 0x00000000;
            };
            btnShowHistroyData_Day.MouseUpEventHandler = (sender, e) =>
            {
                (sender as Button).SelectedBackgroundColor = 0x1F5C62FE;
                (sender as Button).BackgroundColor = 0x1F5C62FE;
                (sender as Button).BorderColor = CSS_Color.MainColor;
                (sender as Button).BorderWidth = 2;
                (sender as Button).IsSelected = true;
                btnShowHistroyData_Month.IsSelected = false;
                btnShowHistroyData_Month.BorderWidth = 1;
                btnShowHistroyData_Month.BorderColor = CSS_Color.PromptingColor1;
                btnShowHistroyData_Month.BackgroundColor = 0x00000000;
                btnShowHistroyData_Month.SelectedBackgroundColor = 0x00000000;
                btnShowHistroyData_Year.IsSelected = false;
                btnShowHistroyData_Year.BorderWidth = 1;
                btnShowHistroyData_Year.BorderColor = CSS_Color.PromptingColor1;
                btnShowHistroyData_Year.BackgroundColor = 0x00000000;
                btnShowHistroyData_Year.SelectedBackgroundColor = 0x00000000;
                btnShowHistroyData_Total.IsSelected = false;
                btnShowHistroyData_Total.BorderWidth = 1;
                btnShowHistroyData_Total.BorderColor = CSS_Color.PromptingColor1;
                btnShowHistroyData_Total.BackgroundColor = 0x00000000;
                btnShowHistroyData_Total.SelectedBackgroundColor = 0x00000000;
            };
            btnShowHistroyData_Month.MouseUpEventHandler = (sender, e) =>
            {
                (sender as Button).SelectedBackgroundColor = 0x1F5C62FE;
                (sender as Button).BackgroundColor = 0x1F5C62FE;
                (sender as Button).BorderColor = CSS_Color.MainColor;
                (sender as Button).BorderWidth = 2;
                (sender as Button).IsSelected = true;
                btnShowHistroyData_Day.IsSelected = false;
                btnShowHistroyData_Day.BorderWidth = 1;
                btnShowHistroyData_Day.BorderColor = CSS_Color.PromptingColor1;
                btnShowHistroyData_Day.BackgroundColor = 0x00000000;
                btnShowHistroyData_Day.SelectedBackgroundColor = 0x00000000;
                btnShowHistroyData_Year.IsSelected = false;
                btnShowHistroyData_Year.BorderWidth = 1;
                btnShowHistroyData_Year.BorderColor = CSS_Color.PromptingColor1;
                btnShowHistroyData_Year.BackgroundColor = 0x00000000;
                btnShowHistroyData_Year.SelectedBackgroundColor = 0x00000000;
                btnShowHistroyData_Total.IsSelected = false;
                btnShowHistroyData_Total.BorderWidth = 1;
                btnShowHistroyData_Total.BorderColor = CSS_Color.PromptingColor1;
                btnShowHistroyData_Total.BackgroundColor = 0x00000000;
                btnShowHistroyData_Total.SelectedBackgroundColor = 0x00000000;
            };
            btnShowHistroyData_Year.MouseUpEventHandler = (sender, e) =>
            {
                (sender as Button).SelectedBackgroundColor = 0x1F5C62FE;
                (sender as Button).BackgroundColor = 0x1F5C62FE;
                (sender as Button).BorderColor = CSS_Color.MainColor;
                (sender as Button).BorderWidth = 2;
                (sender as Button).IsSelected = true;
                btnShowHistroyData_Month.IsSelected = false;
                btnShowHistroyData_Month.BorderWidth = 1;
                btnShowHistroyData_Month.BorderColor = CSS_Color.PromptingColor1;
                btnShowHistroyData_Month.BackgroundColor = 0x00000000;
                btnShowHistroyData_Month.SelectedBackgroundColor = 0x00000000;
                btnShowHistroyData_Day.IsSelected = false;
                btnShowHistroyData_Day.BorderWidth = 1;
                btnShowHistroyData_Day.BorderColor = CSS_Color.PromptingColor1;
                btnShowHistroyData_Day.BackgroundColor = 0x00000000;
                btnShowHistroyData_Day.SelectedBackgroundColor = 0x00000000;
                btnShowHistroyData_Total.IsSelected = false;
                btnShowHistroyData_Total.BorderWidth = 1;
                btnShowHistroyData_Total.BorderColor = CSS_Color.PromptingColor1;
                btnShowHistroyData_Total.BackgroundColor = 0x00000000;
                btnShowHistroyData_Total.SelectedBackgroundColor = 0x00000000;
            };
            #endregion
            contentView.AddChidren(new Button()
            {
                Height = Application.GetRealHeight(12),
            });
            var historyDataView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealWidth(330),
            };
            contentView.AddChidren(historyDataView);
            myEchartsView_Line = new MyEchartsViewOn()
            {
                Y = Application.GetRealWidth(10),
                Height = Application.GetRealWidth(280),
            };
            historyDataView.AddChidren(myEchartsView_Line);
            //EnergyRow(energy, energyListView, index);
            LoadMothed_GetHistoryData();
        }
        /// <summary>
        /// 读取历史数据
        /// </summary>
        void LoadMothed_GetHistoryData()
        {
            var loadPage = new Loading()
            {
                LodingBackgroundColor = 0x88888888,
            };
            bodyView.AddChidren(loadPage);
            new System.Threading.Thread(() =>
            {
                try
                {
                    Application.RunOnMainThread(() =>
                    {
                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
                    });
                    var sensorType = device.spk.Split(".")[1];
                    var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, device.deviceId, "power_a");
                    if (revertObj != null)
                    {
                        if (revertObj.Code == StateCode.SUCCESS)
                        {
                            var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
                            if (revertData == null || revertData.Count == 0) {
#if DEBUG
                                List<string> vs = new List<string>() {
                                    "813","313","213","123",
                                    "113","213","183","133",
                                    "133","513","133","413",
                                };
                                    brokenLine.InitXdataText(vs);
                                revertData = new List<EnvironmentalSensorHistor>()
                                {
                                    new EnvironmentalSensorHistor{ fieldValue = "100"},
                                    new EnvironmentalSensorHistor{ fieldValue = "200"},
                                    new EnvironmentalSensorHistor{ fieldValue = "300"},
                                    new EnvironmentalSensorHistor{ fieldValue = "400"},
                                    new EnvironmentalSensorHistor{ fieldValue = "500"},
                                    new EnvironmentalSensorHistor{ fieldValue = "400"},
                                    new EnvironmentalSensorHistor{ fieldValue = "100"},
                                    new EnvironmentalSensorHistor{ fieldValue = "200"},
                                    new EnvironmentalSensorHistor{ fieldValue = "300"},
                                    new EnvironmentalSensorHistor{ fieldValue = "400"},
                                    new EnvironmentalSensorHistor{ fieldValue = "500"},
                                    new EnvironmentalSensorHistor{ fieldValue = "400"},
                                };
                                if (device.GetAttribute("ydata") == null)
                                {
                                    device.attributes.Add(new FunctionAttributes() { key = "ydata" });
                                }
                                device.SetAttrState("ydata", brokenLine.InitYdataText(device.name, revertData, "#5C62FE") + ", ");
#endif
                            }
                            else
                            {
                                List<string> vs = new List<string>();
                                if (brokenLine.YvalueText == "")
                                {
                                    foreach (var data in revertData)
                                    {
                                        vs.Add(data.fieldName);
                                    }
                                    brokenLine.InitXdataText(vs);
                                }
                                if (device.GetAttribute("ydata") == null)
                                {
                                    device.attributes.Add(new FunctionAttributes() { key = "ydata" });
                                }
                                device.SetAttrState("ydata", brokenLine.InitYdataText(device.name, revertData, "#5C62FE") + ", ");
                            }
                        }
                    }
                    brokenLine.yTitle = Language.StringByID(StringId.EnergyConsumption) + "(kW)";
                    brokenLine.xTitle = Language.StringByID(StringId.timeMode);
                    if (curQueryType != "hour")
                    {
                        brokenLine.xTitle = Language.StringByID(StringId.Date);
                    }
                    var opString = brokenLine.InitOption(30);
                    Application.RunOnMainThread(() =>
                    {
                        myEchartsView_Line.ShowWithOption(opString);
                    });
                }
                catch (Exception ex)
                {
                    MainPage.Log($"sensor history error : {ex.Message}");
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        loadPage.Hide();
                    });
                }
            })
            { IsBackground = true }.Start();
        }
    }
}