| | |
| | | using HDL_ON.Entity; |
| | | using HDL_ON.UI.CSS; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.DAL.Server; |
| | | using HDL_ON.UI.UI2.EnvironmentalScience; |
| | | |
| | | namespace HDL_ON.UI |
| | | { |
| | | public class EnvironmentalSensorPage : FrameLayout |
| | | public partial class EnvironmentalSensorPage : FrameLayout |
| | | { |
| | | |
| | | EnvironmentalSensorPage bodyView; |
| | | |
| | | FrameLayout showDataTypeView; |
| | | Button btnShowHistroyData_Day; |
| | | Button btnShowHistroyData_Week; |
| | | Button btnShowHistroyData_Month; |
| | | |
| | | Sensor sensor; |
| | | FrameLayout historyDataView; |
| | | |
| | | MyEchartsViewOn myEchartsView; |
| | | |
| | | Sensor sensorTemp = new Sensor(); |
| | | |
| | | Function function; |
| | | List<Function> showFunctions; |
| | | /// <summary> |
| | | /// 当前查询类型 |
| | | /// </summary> |
| | | string curQueryType = "hour"; |
| | | |
| | | List<uint> tipColorList = new List<uint>() |
| | | { |
| | | 0xFF80AEFF,0xFFFFD154,0xFFFF9D54,0xFFFE6A6A,0xFFB183C3,0xFFADE764, |
| | | }; |
| | | |
| | | public EnvironmentalSensorPage(Sensor ss) |
| | | List<string> tipColorStringList = new List<string>() |
| | | { |
| | | "#80AEFF","#FFD154","#FF9D54","#FE6A6A","#B183C3","#ADE764", |
| | | }; |
| | | |
| | | public EnvironmentalSensorPage(Function ss) |
| | | { |
| | | bodyView = this; |
| | | sensor = ss; |
| | | function = ss; |
| | | showFunctions = new List<Function>(); |
| | | showFunctions.Add(ss); |
| | | } |
| | | |
| | | |
| | | public void LoadPage() |
| | | { |
| | | |
| | | bodyView.BackgroundColor = CSS_Color.BackgroundColor; |
| | | |
| | | VerticalScrolViewLayout contentView = new VerticalScrolViewLayout() |
| | | { |
| | | Y = Application.GetRealHeight(64), |
| | | Height = Application.GetRealHeight(600), |
| | | ScrollEnabled = false |
| | | }; |
| | | bodyView.AddChidren(contentView); |
| | | |
| | |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealHeight(420), |
| | | Height = Application.GetRealWidth(420), |
| | | BackgroundColor = CSS_Color.MainBackgroundColor, |
| | | Radius = (uint)Application.GetRealWidth(12), |
| | | BorderColor = 0x00000000, |
| | |
| | | contentView.AddChidren(diagramView); |
| | | |
| | | #region 选择数据日期范围 |
| | | FrameLayout showDataTypeView = new FrameLayout() |
| | | showDataTypeView = new FrameLayout() |
| | | { |
| | | X = Application.GetRealWidth(183), |
| | | Y = Application.GetRealHeight(12), |
| | |
| | | }; |
| | | diagramView.AddChidren(showDataTypeView); |
| | | |
| | | Button btnShowHistroyData_Day = new Button() |
| | | btnShowHistroyData_Day = new Button() |
| | | { |
| | | Width = Application.GetRealWidth(48), |
| | | TextAlignment = TextAlignment.Center, |
| | |
| | | }; |
| | | showDataTypeView.AddChidren(btnShowHistroyData_Day); |
| | | |
| | | Button btnShowHistroyData_Week = new Button() |
| | | btnShowHistroyData_Week = new Button() |
| | | { |
| | | X = Application.GetRealWidth(48), |
| | | Width = Application.GetRealWidth(48), |
| | |
| | | }; |
| | | showDataTypeView.AddChidren(btnShowHistroyData_Week); |
| | | |
| | | |
| | | Button btnShowHistroyData_Month = new Button() |
| | | btnShowHistroyData_Month = new Button() |
| | | { |
| | | X = Application.GetRealWidth(48 * 2), |
| | | Width = Application.GetRealWidth(48), |
| | |
| | | TextColor = CSS_Color.PromptingColor2, |
| | | SelectedTextColor = CSS_Color.MainColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | TextID = StringId.month, |
| | | Text = DateTime.Now.Month.ToString() + Language.StringByID(StringId.month), |
| | | }; |
| | | showDataTypeView.AddChidren(btnShowHistroyData_Month); |
| | | #endregion |
| | | |
| | | |
| | | FrameLayout historyDataView = new FrameLayout() |
| | | historyDataView = new FrameLayout() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(52), |
| | |
| | | }; |
| | | diagramView.AddChidren(historyDataView); |
| | | |
| | | List<string> xStrings = new List<string>() ; |
| | | List<string> yStrings = new List<string>(); |
| | | Random random = new Random(); |
| | | for (int i = 0; i < 24; i++) |
| | | { |
| | | xStrings.Add(i.ToString()); |
| | | myEchartsView = new MyEchartsViewOn(); |
| | | |
| | | switch (sensor.functionType) |
| | | { |
| | | case FunctionType.PM10: |
| | | yStrings.Add( Math.Round(random.NextDouble() * 130, 0).ToString()); |
| | | break; |
| | | case FunctionType.PM25: |
| | | yStrings.Add( Math.Round(random.NextDouble() * 130, 0).ToString()); |
| | | break; |
| | | //case FunctionType.Noise: |
| | | // break; |
| | | case FunctionType.WindPower: |
| | | break; |
| | | case FunctionType.CO2: |
| | | yStrings.Add( Math.Round(random.NextDouble() * 6000, 0).ToString()); |
| | | break; |
| | | case FunctionType.Temp: |
| | | yStrings.Add( Math.Round(random.NextDouble() * 40, 0).ToString()); |
| | | break; |
| | | case FunctionType.TVOC: |
| | | yStrings.Add( Math.Round(random.NextDouble() * 10, 1).ToString()); |
| | | break; |
| | | case FunctionType.Humidity: |
| | | yStrings.Add( Math.Round(random.NextDouble() * 100, 0).ToString()); |
| | | break; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | MyEchartsView myEchartsView = new MyEchartsView(); |
| | | historyDataView.AddChidren(myEchartsView); |
| | | myEchartsView.Show(sensor.name, xStrings.ToArray(), yStrings.ToArray()); |
| | | |
| | | #region 底部等级提示 |
| | | HorizontalScrolViewLayout tipValuesView = new HorizontalScrolViewLayout() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(348), |
| | | Y = Application.GetRealWidth(348), |
| | | Width = Application.GetRealWidth(303), |
| | | Height = Application.GetRealHeight(30), |
| | | }; |
| | |
| | | }; |
| | | diagramView.AddChidren(tipTextView); |
| | | |
| | | |
| | | switch (sensor.functionType) |
| | | switch (function.spk) |
| | | { |
| | | case FunctionType.PM10: |
| | | case FunctionType.PM25: |
| | | tipValuesView.AddChidren(new Button() { |
| | | case SPK.SensorPm25: |
| | | tipValuesView.AddChidren(new Button() |
| | | { |
| | | Width = Application.GetRealWidth(101), |
| | | Text = "35", |
| | | TextAlignment = TextAlignment.Center, |
| | |
| | | TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, |
| | | }); |
| | | break; |
| | | //case FunctionType.PM25: |
| | | //_intervalValue.Add("0 ~ 35"); |
| | | //_intervalValue.Add("36 ~ 75"); |
| | | //_intervalValue.Add("76 ~ 115"); |
| | | //_intervalValue.Add("115 ~"); |
| | | //_levelTextList.Add(StringId.Great); |
| | | //_levelTextList.Add(StringId.Good); |
| | | //_levelTextList.Add(StringId.MildPollution); |
| | | //_levelTextList.Add(StringId.HeavyPollution); |
| | | //break; |
| | | //case FunctionType.Noise: |
| | | // break; |
| | | case FunctionType.WindPower: |
| | | break; |
| | | case FunctionType.CO2: |
| | | //case SPK.SensorPm25: |
| | | //_intervalValue.Add("0 ~ 35"); |
| | | //_intervalValue.Add("36 ~ 75"); |
| | | //_intervalValue.Add("76 ~ 115"); |
| | | //_intervalValue.Add("115 ~"); |
| | | //_levelTextList.Add(StringId.Great); |
| | | //_levelTextList.Add(StringId.Good); |
| | | //_levelTextList.Add(StringId.MildPollution); |
| | | //_levelTextList.Add(StringId.HeavyPollution); |
| | | //break; |
| | | case SPK.SensorCO2: |
| | | tipValuesView.AddChidren(new Button() |
| | | { |
| | | Width = Application.GetRealWidth(101), |
| | |
| | | TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, |
| | | }); |
| | | break; |
| | | case FunctionType.Temp: |
| | | case SPK.SensorTemperature: |
| | | tipValuesView.AddChidren(new Button() |
| | | { |
| | | Width = Application.GetRealWidth(50), |
| | |
| | | //_levelTextList.Add(StringId.); |
| | | //_levelTextList.Add(StringId.ExtremeHeat); |
| | | break; |
| | | case FunctionType.TVOC: |
| | | case SPK.SensorTVOC: |
| | | tipValuesView.AddChidren(new Button() |
| | | { |
| | | Width = Application.GetRealWidth(101), |
| | |
| | | TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, |
| | | }); |
| | | break; |
| | | case FunctionType.Humidity: |
| | | case SPK.SensorHumidity: |
| | | tipValuesView.AddChidren(new Button() |
| | | { |
| | | Width = Application.GetRealWidth(151), |
| | |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealWidth(100), |
| | | BackgroundColor= CSS_Color.MainBackgroundColor, |
| | | BackgroundColor = CSS_Color.MainBackgroundColor, |
| | | Radius = (uint)Application.GetRealWidth(12), |
| | | BorderColor = 0x00000000, |
| | | BorderWidth = 0, |
| | |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | Text = sensor.name, |
| | | Text = function.name, |
| | | IsBold = true, |
| | | }; |
| | | selfInfoView.AddChidren(btnSeltSensorName); |
| | | |
| | | |
| | | Button btnFromFoorAndRoom = new Button() |
| | | Button btnFromFoorAndRoom = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = btnSeltSensorName.Bottom, |
| | |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | Text = sensor.GetRoomListName() |
| | | Text = function.GetRoomListName() |
| | | }; |
| | | selfInfoView.AddChidren(btnFromFoorAndRoom); |
| | | |
| | |
| | | }; |
| | | selfInfoView.AddChidren(btnSeltSensorValue); |
| | | |
| | | var btnShowData = new Button() |
| | | Button btnShowData; |
| | | btnShowData = new Button() |
| | | { |
| | | X = Application.GetRealWidth(291), |
| | | Y = Application.GetRealWidth(62), |
| | |
| | | Height = Application.GetMinRealAverage(32), |
| | | UnSelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIcon.png", |
| | | SelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIconOn.png", |
| | | IsSelected = true, |
| | | }; |
| | | selfInfoView.AddChidren(btnShowData); |
| | | |
| | | //btnShowData.MouseUpEventHandler = (sender, e) => { |
| | | // btnShowData.IsSelected = !btnShowData.IsSelected; |
| | | // if(btnShowData.IsSelected) |
| | | // { |
| | | // if (!showSensors.Contains(sensor)) |
| | | // { |
| | | // showSensors.Add(sensor); |
| | | // } |
| | | // } |
| | | // else |
| | | // { |
| | | // if (showSensors.Contains(sensor)) |
| | | // { |
| | | // showSensors.Remove(sensor); |
| | | // } |
| | | // } |
| | | // LoadMothed_GetSensorHistoryData(); |
| | | //}; |
| | | |
| | | btnSetting.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | Action backAction = () => |
| | | { |
| | | btnSeltSensorName.Text = sensor.name; |
| | | btnSeltSensorName.Text = function.name; |
| | | }; |
| | | var infoView = new FunctionBaseInfoSetPage(sensor, backAction); |
| | | var infoView = new FunctionBaseInfoSetPage(function, backAction); |
| | | MainPage.BasePageView.AddChidren(infoView); |
| | | infoView.LoadPage(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | |
| | | |
| | | bool initTitleButton = true; |
| | | |
| | | foreach (var tempSensor in DB_ResidenceData.residenceData.functionList.sensorsEnvironmentalScience) |
| | | foreach (var tempSensor in FunctionList.List.GetEnvirSensorsList()) |
| | | { |
| | | if(tempSensor.sid == sensor.sid) |
| | | if (tempSensor.sid == function.sid) |
| | | { |
| | | continue; |
| | | } |
| | | if(tempSensor.functionType != sensor.functionType) |
| | | if (tempSensor.spk != function.spk) |
| | | { |
| | | continue; |
| | | } |
| | | if(initTitleButton) |
| | | contentView.ScrollEnabled = true; |
| | | |
| | | if (initTitleButton) |
| | | { |
| | | Button btnOthreTitle = new Button() |
| | | { |
| | |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | Text = sensor.name, |
| | | Text = function.name, |
| | | IsBold = true, |
| | | }; |
| | | otherInfoView.AddChidren(btnSensorName); |
| | | |
| | | |
| | | Button btnFromFoorAndRoom1 = new Button() |
| | | { |
| | |
| | | SelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIconOn.png", |
| | | }; |
| | | otherInfoView.AddChidren(btnShowData1); |
| | | |
| | | btnShowData1.MouseUpEventHandler = (sender, e) => { |
| | | btnShowData1.IsSelected = !btnShowData1.IsSelected; |
| | | if (btnShowData1.IsSelected) |
| | | { |
| | | if (!showFunctions.Contains(function)) |
| | | { |
| | | showFunctions.Add(function); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (showFunctions.Contains(function)) |
| | | { |
| | | showFunctions.Remove(function); |
| | | } |
| | | } |
| | | LoadMothed_GetSensorHistoryData(); |
| | | }; |
| | | #endregion |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | new TopViewDiv(bodyView, Language.StringByID(sensorTemp.GetFunctionTypeNameId(function.spk))).LoadTopView(); |
| | | |
| | | |
| | | |
| | | new TopViewDiv(bodyView, Language.StringByID(sensor.functionTypeNameId)).LoadTopView(); |
| | | |
| | | LoadMothed_GetSensorHistoryData(); |
| | | LoadEvent_ChangeSensorHistoryShowType(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | //------------ |
| | | public partial class EnvironmentalSensorPage |
| | | { |
| | | /// <summary> |
| | | /// 读取传感器历史数据 |
| | | /// </summary> |
| | | void LoadMothed_GetSensorHistoryData( ) |
| | | { |
| | | var loadPage = new Loading() { |
| | | LodingBackgroundColor = 0x88888888, |
| | | }; |
| | | historyDataView.AddChidren(loadPage); |
| | | |
| | | new System.Threading.Thread(() => |
| | | { |
| | | try |
| | | { |
| | | Application.RunOnMainThread(() => { |
| | | loadPage.Start(Language.StringByID(StringId.PleaseWait)); |
| | | }); |
| | | int i = 0; |
| | | |
| | | var ebl = new EchartsOption_BrokenLine(); |
| | | |
| | | string yDataString = ""; |
| | | |
| | | foreach (var sr in FunctionList.List.GetEnvirSensorsList()) |
| | | { |
| | | if (sr.spk != function.spk) |
| | | { |
| | | continue; |
| | | } |
| | | if (showFunctions.Find((obj) => obj.sid == sr.sid) == null) |
| | | { |
| | | i++; |
| | | continue; |
| | | } |
| | | |
| | | var sensorType = sr.spk.Split(".")[1]; |
| | | var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId,sensorType); |
| | | if (revertObj != null) |
| | | { |
| | | if (revertObj.Code == StateCode.SUCCESS) |
| | | { |
| | | var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString()); |
| | | |
| | | if (i == 0) |
| | | { |
| | | List<string> vs = new List<string>(); |
| | | foreach(var data in revertData) |
| | | { |
| | | vs.Add(data.fieldName); |
| | | } |
| | | ebl.InitXdata(vs); |
| | | } |
| | | yDataString += ebl.GetYdata(sr.name, revertData, tipColorStringList[i]); |
| | | } |
| | | } |
| | | i++; |
| | | } |
| | | |
| | | ebl.InitYdataString(yDataString); |
| | | |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | myEchartsView.ShowWithOption(ebl.optionString); |
| | | }); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"sensor history error : {ex.Message}"); |
| | | } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => { |
| | | loadPage.Hide(); |
| | | }); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | |
| | | 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_GetSensorHistoryData(); |
| | | }; |
| | | |
| | | 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_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 = "week"; |
| | | LoadMothed_GetSensorHistoryData(); |
| | | }; |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | public class EnvironmentalSensorHistor |
| | | { |
| | | /// <summary> |
| | | /// </summary> |
| | | public string fieldName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// </summary> |
| | | public string fieldValue { get; set; } |
| | | } |
| | | } |