using System; using System.Collections.Generic; using HDL_ON.DAL.Server; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI { public class AcstSubHistoryPage :FrameLayout { AcstSubHistoryPage bodyView; FrameLayout showDataTypeView; Button btnShowHistroyData_Day; Button btnShowHistroyData_Week; Button btnShowHistroyData_Month; /// /// echart容器 /// MyEchartsViewOn tempEchartsView; /// /// echart绘制数据 /// EchartsOption_BrokenLine tempEchartOption; Button btnTempTipText; MyEchartsViewOn humiEchartsView; EchartsOption_BrokenLine humiEchartsOption; Button btnHumiTipText; string curQueryType = "hour"; string queryTime; Function function; public AcstSubHistoryPage(Function temp) { function = temp; bodyView = this; } /// /// /// public void LoadPage() { new TopViewDiv(bodyView, function.GetRoomListName()).LoadTopView(); bodyView.BackgroundColor = CSS_Color.BackgroundColor; //var contentView = new FrameLayout() //{ // Y = Application.GetRealHeight(64), // Height = Application.GetRealHeight(603), //}; //bodyView.AddChidren(contentView); #region 选择数据日期范围 showDataTypeView = new FrameLayout() { X = Application.GetRealWidth(199), Y = Application.GetRealHeight(83), Width = Application.GetRealWidth(144), Height = Application.GetRealHeight(24), BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg1.png", }; bodyView.AddChidren(showDataTypeView); 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); 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); 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); #endregion #region 温度历史数据 var tempHistoryDataView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(123), Height = Application.GetRealHeight(256), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.MainBackgroundColor, Radius = (uint)Application.GetRealWidth(6), }; bodyView.AddChidren(tempHistoryDataView); tempEchartsView = new MyEchartsViewOn() { Y = Application.GetRealWidth(10), Height = Application.GetRealHeight(207), }; tempHistoryDataView.AddChidren(tempEchartsView); tempEchartOption = new EchartsOption_BrokenLine(); btnTempTipText = new Button() { Y = Application.GetRealHeight(222), Height = Application.GetRealHeight(34), Text = "最近24小时的平均室内温度", TextSize = 10, TextColor = 0xFF798394, TextAlignment = TextAlignment.Center, }; tempHistoryDataView.AddChidren(btnTempTipText); #endregion #region 湿度历史数据 var humiHistoryDataView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Y = tempHistoryDataView.Bottom + Application.GetRealWidth(10), Height = Application.GetRealHeight(256), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.MainBackgroundColor, Radius = (uint)Application.GetRealWidth(6), }; bodyView.AddChidren(humiHistoryDataView); humiEchartsView = new MyEchartsViewOn() { Y = Application.GetRealWidth(10), Height = Application.GetRealHeight(207), }; humiHistoryDataView.AddChidren(humiEchartsView); humiEchartsOption = new EchartsOption_BrokenLine(); btnHumiTipText = new Button() { Y = Application.GetRealHeight(222), Height = Application.GetRealHeight(34), Text = "最近24小时的平均室内湿度", TextSize = 10, TextColor = 0xFF798394, TextAlignment = TextAlignment.Center, }; humiHistoryDataView.AddChidren(btnHumiTipText); #endregion #if DEBUG List vs = new List() { "1","2","3","4","5","6","7","8","9","10","11","12","13","14" }; tempEchartOption.InitXdataText(vs); tempEchartOption.InitYdataText("yData", new List() { new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23" }, new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22" }, new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "-11" }, new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21" }, new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "-41" }, new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23" }, new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "-31" }, new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "-23" }, new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "-11" }, new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "-21" }, new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24" }, new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41" }, new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32" }, new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23" } }, "#FF9D54"); tempEchartOption.yTitle = "温度 (°)"; tempEchartOption.xTitle = ""; var opString = tempEchartOption.InitOption(); tempEchartsView.ShowWithOption(opString); List vs2 = new List() { "1","2","3","4","5","6","7","8","9","10","11","12","13","14" }; humiEchartsOption.InitXdataText(vs2); humiEchartsOption.InitYdataText("yData", new List() { new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23" }, new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22" }, new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "-11" }, new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21" }, new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "-41" }, new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23" }, new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "-31" }, new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "-23" }, new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "-11" }, new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "-21" }, new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24" }, new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41" }, new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32" }, new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23" } }, "#FF9D54"); humiEchartsOption.yTitle = "湿度 (%)"; humiEchartsOption.xTitle = ""; var opString2 = humiEchartsOption.InitOption(); humiEchartsView.ShowWithOption(opString2); #endif LoadEvent_ChangeSensorHistoryShowType(); } 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; curQueryType = "hour"; LoadMothed_GetHistoryData(); }; 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"; LoadMothed_GetHistoryData(); }; 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"; LoadMothed_GetHistoryData(); }; } /// /// 正在读取温度历史数据 /// bool inReadTempHistory = false; /// /// 正在读取湿度历史数据 /// bool inReadHumiHistory = false; /// /// 读取历史数据 /// void LoadMothed_GetHistoryData() { inReadTempHistory = true; inReadHumiHistory = true; var loadPage = new Loading() { LodingBackgroundColor = 0x88888888, }; bodyView.AddChidren(loadPage); new System.Threading.Thread(() => { try { Application.RunOnMainThread(() => { loadPage.Start(Language.StringByID(StringId.PleaseWait)); }); var revertObj = new HttpServerRequest().GetSensorHistory( function.deviceId, curQueryType , "room_temp"); if (revertObj != null) { if (revertObj.Code == StateCode.SUCCESS) { var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject>(revertObj.Data.ToString()); List vs = new List(); if (tempEchartOption.YvalueText == "") { foreach (var data in revertData) { vs.Add(data.fieldName); } tempEchartOption.InitXdataText(vs); } tempEchartOption.InitYdataText("", revertData, "#FF80AEFF"); } } tempEchartOption.xTitle = Language.StringByID(StringId.timeMode); var opString = tempEchartOption.InitOption(); Application.RunOnMainThread(() => { tempEchartsView.ShowWithOption(opString); }); } catch (Exception ex) { MainPage.Log($"history error : {ex.Message}"); } finally { if (!inReadHumiHistory) { Application.RunOnMainThread(() => { loadPage.Hide(); }); } } }) { IsBackground = true }.Start(); new System.Threading.Thread(() => { try { Application.RunOnMainThread(() => { loadPage.Start(Language.StringByID(StringId.PleaseWait)); }); var revertObj = new HttpServerRequest().GetSensorHistory(function.deviceId, curQueryType, "room_humidity"); if (revertObj != null) { if (revertObj.Code == StateCode.SUCCESS) { var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject>(revertObj.Data.ToString()); List vs = new List(); if (humiEchartsOption.YvalueText == "") { foreach (var data in revertData) { vs.Add(data.fieldName); } humiEchartsOption.InitXdataText(vs); } humiEchartsOption.InitYdataText("", revertData, "#FF80AEFF"); } } humiEchartsOption.xTitle = Language.StringByID(StringId.timeMode); var opString = humiEchartsOption.InitOption(); Application.RunOnMainThread(() => { humiEchartsView.ShowWithOption(opString); }); } catch (Exception ex) { MainPage.Log($"history error : {ex.Message}"); } finally { if (!inReadTempHistory) { Application.RunOnMainThread(() => { loadPage.Hide(); }); } } }) { IsBackground = true }.Start(); } } }