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 | 674 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 643 insertions(+), 31 deletions(-) diff --git a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs index fcff06d..b39f8be 100644 --- a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs +++ b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs @@ -1,34 +1,122 @@ 锘縰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; namespace HDL_ON.UI { 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> + /// + /// </summary> public void LoadPage() { new TopViewDiv(bodyView, Language.StringByID(StringId.EnergyMonitoring)).LoadTopView(); bodyView.BackgroundColor = CSS_Color.BackgroundColor; - var generalTableView = new FrameLayout() + var contentView = new VerticalScrolViewLayout() + { + Y = Application.GetRealHeight(64), + Height = Application.GetRealHeight(603), + }; + bodyView.AddChidren(contentView); + + #region 椤堕儴view + generalTableView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, - Y = Application.GetRealHeight(80), + 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, }; - bodyView.AddChidren(generalTableView); + contentView.AddChidren(generalTableView); - TextButton btnTotalValue = new TextButton() + btnTotalValue = new TextButton() { X = Application.GetRealWidth(18), Y = Application.GetRealWidth(24), @@ -42,9 +130,7 @@ }; generalTableView.AddChidren(btnTotalValue); - btnTotalValue.Width = btnTotalValue.GetTextWidth(); - - var btnTotalValueUint = new Button() + btnTotalValueUint = new Button() { X = btnTotalValue.Right, Y = Application.GetRealWidth(24), @@ -58,45 +144,571 @@ }; generalTableView.AddChidren(btnTotalValueUint); - var btnValue = new Button() + 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); + var echartsView = new FrameLayout() { - Width = Application.GetRealWidth(100), - Height = Application.GetRealWidth(100), + Width = Application.GetRealWidth(118), + Height = Application.GetRealWidth(118), X = Application.GetRealWidth(227), - Y = Application.GetRealWidth(16), + //Y = Application.GetRealWidth(16), }; generalTableView.AddChidren(echartsView); - MyEchartsViewOn myEchartsView = new MyEchartsViewOn() { - Width = Application.GetRealWidth(100), - Height = Application.GetRealWidth(100), + myEchartsView_Pie = new MyEchartsViewOn() + { + Width = Application.GetRealWidth(118), + Height = Application.GetRealWidth(118), + }; + echartsView.AddChidren(myEchartsView_Pie); + + Dictionary<string, string> list = new Dictionary<string, string>(); + 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)); + + 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(); }; - 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); + UpdataValue(); + #endregion + + + energyListView = new FrameLayout() + { + Y = generalTableView.Bottom + Application.GetRealWidth(8), + Height = Application.GetRealWidth(116 * energyList.Count + 50), + }; + contentView.AddChidren(energyListView); + int index = 0; + foreach (var energy in energyList) + { + EnergyRow(energy, energyListView, index); + index++; + new System.Threading.Thread(() => + { + Control.Ins.SendReadCommand(energy); + }) + { IsBackground = true }.Start(); + } } + + /// <summary> + /// + /// </summary> + void showDiagramView() + { + 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(281), + BackgroundColor = CSS_Color.MainBackgroundColor, + Radius = (uint)Application.GetRealWidth(12), + BorderColor = 0x00000000, + BorderWidth = 0, + }; + generalTableView.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 = 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.GetRealWidth(52), + Height = Application.GetRealWidth(190), + }; + diagramView.AddChidren(historyDataView); + + myEchartsView_Line = new MyEchartsViewOn() + { + Y = Application.GetRealWidth(10), + Height = Application.GetRealWidth(180), + }; + historyDataView.AddChidren(myEchartsView_Line); + } + + /// <summary> + /// 璇诲彇鍘嗗彶鏁版嵁 + /// </summary> + void LoadMothed_GetHistoryData(Function sr,bool isDel) + { + if(isDel)//鍒犻櫎鏁版嵁鐜板疄 + { + brokenLine.YvalueText = ""; + foreach (var ene in queryList) + { + brokenLine.YvalueText += ene.GetAttrState("ydata"); + } + var opString = brokenLine.InitOption(); + + Application.RunOnMainThread(() => + { + myEchartsView_Line.ShowWithOption(opString); + }); + + return; + } + + var loadPage = new Loading() + { + LodingBackgroundColor = 0x88888888, + }; + diagramView.AddChidren(loadPage); + + new System.Threading.Thread(() => + { + try + { + Application.RunOnMainThread(() => + { + 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 revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString()); + + List<string> vs = new List<string>(); + if (brokenLine.YvalueText == "") + { + foreach (var data in revertData) + { + vs.Add(data.fieldName); + } + brokenLine.InitXdataText(vs); + } + if (sr.GetAttribute("ydata") == null) + { + sr.attributes.Add(new FunctionAttributes() { key = "ydata" }); + } + sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color")) + ","); + } + } + 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(); + + Application.RunOnMainThread(() => + { + myEchartsView_Line.ShowWithOption(opString); + }); + } + catch (Exception ex) + { + MainPage.Log($"sensor history error : {ex.Message}"); + } + finally + { + Application.RunOnMainThread(() => + { + loadPage.Hide(); + }); + } + }) + { IsBackground = true }.Start(); + } + + /// <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); + + //瀹氫箟浠h〃鑹� + energy.attributes.Add(new FunctionAttributes() { key = "color", state = colorList2[index] }); + + var row = new EnergyRow(energy, colorList[index]); + + row.SetHistory_Action = (isAdd) => + { + 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() + { + X = Application.GetRealWidth(8), + Y = Application.GetRealWidth(16), + Width = Application.GetRealWidth(12), + Height = Application.GetRealWidth(12), + BackgroundColor = color + }; + AddChidren(btnColorTip); + + var btnName = new Button() + { + X = Application.GetRealWidth(28), + 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, + }; + AddChidren(btnName); + + var btnFromFloor = new Button() + { + X = Application.GetRealWidth(28), + 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, + }; + AddChidren(btnFromFloor); + + 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 = energy.GetAttrState(FunctionAttributeKey.Power), + Tag = energy.sid, + IsBold = true, + }; + 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", + }; + AddChidren(btnSetting); + + var 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, + }; + AddChidren(btnSeltSensorValue); + + 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 = false, + }; + 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); + infoView.LoadPage(); + 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