| | |
| | | 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 |
| | | { |
| | |
| | | |
| | | MyEchartsViewOn myEchartsView; |
| | | |
| | | Sensor sensor; |
| | | Sensor sensorTemp = new Sensor(); |
| | | |
| | | List<Sensor> showSensors; |
| | | Function function; |
| | | List<Function> showFunctions; |
| | | List<Function> sensorList; |
| | | /// <summary> |
| | | /// 当前查询类型 |
| | | /// </summary> |
| | | string curQueryType = "hour"; |
| | | |
| | | List<uint> tipColorList = new List<uint>() |
| | | { |
| | |
| | | "#80AEFF","#FFD154","#FF9D54","#FE6A6A","#B183C3","#ADE764", |
| | | }; |
| | | |
| | | public EnvironmentalSensorPage(Sensor ss) |
| | | public EnvironmentalSensorPage(Function ss) |
| | | { |
| | | bodyView = this; |
| | | sensor = ss; |
| | | showSensors = new List<Sensor>(); |
| | | showSensors.Add(ss); |
| | | function = ss; |
| | | showFunctions = new List<Function>(); |
| | | showFunctions.Add(ss); |
| | | sensorList = FunctionList.List.GetEnvirSensorsList(); |
| | | } |
| | | |
| | | |
| | | public EnvironmentalSensorPage(Function ss,List<Function> functions) |
| | | { |
| | | bodyView = this; |
| | | function = ss; |
| | | sensorList = functions; |
| | | showFunctions = new List<Function>(); |
| | | showFunctions.Add(ss); |
| | | } |
| | | |
| | | public void LoadPage() |
| | | { |
| | | |
| | | bodyView.BackgroundColor = CSS_Color.BackgroundColor; |
| | | |
| | | VerticalScrolViewLayout contentView = new VerticalScrolViewLayout() |
| | |
| | | { |
| | | 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, |
| | |
| | | TextColor = CSS_Color.PromptingColor2, |
| | | SelectedTextColor = CSS_Color.MainColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | TextID = StringId.month, |
| | | Text = Language.StringByID(StringId.month),//DateTime.Now.Month.ToString() + |
| | | }; |
| | | showDataTypeView.AddChidren(btnShowHistroyData_Month); |
| | | #endregion |
| | |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(52), |
| | | Width = Application.GetRealWidth(343 - 32), |
| | | Height = Application.GetRealHeight(270), |
| | | Height = Application.GetRealWidth(270), |
| | | }; |
| | | diagramView.AddChidren(historyDataView); |
| | | |
| | |
| | | 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: |
| | | case SPK.SensorPm25: |
| | | tipValuesView.AddChidren(new Button() |
| | | { |
| | | Width = Application.GetRealWidth(101), |
| | |
| | | TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, |
| | | }); |
| | | break; |
| | | //case FunctionType.PM25: |
| | | //case SPK.SensorPm25: |
| | | //_intervalValue.Add("0 ~ 35"); |
| | | //_intervalValue.Add("36 ~ 75"); |
| | | //_intervalValue.Add("76 ~ 115"); |
| | |
| | | //_levelTextList.Add(StringId.MildPollution); |
| | | //_levelTextList.Add(StringId.HeavyPollution); |
| | | //break; |
| | | //case FunctionType.Noise: |
| | | // break; |
| | | case FunctionType.WindPower: |
| | | break; |
| | | case FunctionType.CO2: |
| | | 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), |
| | |
| | | tipTextView.AddChidren(new Button() |
| | | { |
| | | Width = Application.GetRealWidth(43), |
| | | TextID = StringId.ExtremelyCold, |
| | | TextID = StringId.SlightlyCold, |
| | | TextAlignment = TextAlignment.Center, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, |
| | |
| | | //_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), |
| | | Text = "70", |
| | | Text = "40%", |
| | | TextAlignment = TextAlignment.Center, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, |
| | |
| | | tipValuesView.AddChidren(new Button() |
| | | { |
| | | Width = Application.GetRealWidth(151), |
| | | Text = "40", |
| | | Text = "70%", |
| | | TextAlignment = TextAlignment.Center, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, |
| | |
| | | tipTextView.AddChidren(new Button() |
| | | { |
| | | Width = Application.GetRealWidth(101), |
| | | TextID = StringId.SensorReferenceTVOCTipLevel1, |
| | | TextID = StringId.SensorReferenceHumidityTipLevel1, |
| | | TextAlignment = TextAlignment.Center, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, |
| | |
| | | tipTextView.AddChidren(new Button() |
| | | { |
| | | Width = Application.GetRealWidth(101), |
| | | TextID = StringId.SensorReferenceTVOCTipLevel2, |
| | | TextID = StringId.SensorReferenceHumidityTipLevel2, |
| | | TextAlignment = TextAlignment.Center, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, |
| | |
| | | tipTextView.AddChidren(new Button() |
| | | { |
| | | Width = Application.GetRealWidth(101), |
| | | TextID = StringId.SensorReferenceTVOCTipLevel3, |
| | | TextID = StringId.SensorReferenceHumidityTipLevel3, |
| | | TextAlignment = TextAlignment.Center, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, |
| | |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | Text = sensor.name, |
| | | Text = function.name, |
| | | IsBold = true, |
| | | }; |
| | | selfInfoView.AddChidren(btnSeltSensorName); |
| | |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | Text = sensor.GetRoomListName() |
| | | Text = function.GetRoomListName() |
| | | }; |
| | | selfInfoView.AddChidren(btnFromFoorAndRoom); |
| | | |
| | |
| | | }; |
| | | selfInfoView.AddChidren(btnSeltSensorValue); |
| | | |
| | | Button btnShowData; |
| | | 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 = true, |
| | | }; |
| | | selfInfoView.AddChidren(btnShowData); |
| | | |
| | | //Button btnShowData; |
| | | //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 = 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) |
| | | { |
| | | if (tempSensor.sid == sensor.sid) |
| | | { |
| | | continue; |
| | | } |
| | | if (tempSensor.functionType != sensor.functionType) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | foreach (var tempSensor in sensorList) |
| | | { |
| | | if (tempSensor.sid == function.sid) |
| | | { |
| | | continue; |
| | | } |
| | | if (tempSensor.spk != function.spk) |
| | | { |
| | | continue; |
| | | } |
| | | contentView.ScrollEnabled = true; |
| | | |
| | | if (initTitleButton) |
| | |
| | | #region 其它传感器信息栏 |
| | | FrameLayout otherInfoView = new FrameLayout() |
| | | { |
| | | Gravity = Gravity.CenterVertical, |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealWidth(100), |
| | | BackgroundColor = CSS_Color.MainBackgroundColor, |
| | |
| | | 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() |
| | | { |
| | |
| | | { |
| | | Action backAction = () => |
| | | { |
| | | btnSeltSensorName.Text = tempSensor.name; |
| | | MainPage.Log("45678i"); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | btnSeltSensorName.Text = tempSensor.name; |
| | | }); |
| | | }; |
| | | var infoView = new FunctionBaseInfoSetPage(tempSensor, backAction); |
| | | MainPage.BasePageView.AddChidren(infoView); |
| | |
| | | SelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIconOn.png", |
| | | }; |
| | | otherInfoView.AddChidren(btnShowData1); |
| | | |
| | | btnShowData1.MouseUpEventHandler = (sender, e) => { |
| | | btnShowData1.IsSelected = !btnShowData1.IsSelected; |
| | | if (btnShowData1.IsSelected) |
| | | { |
| | | if (!showFunctions.Contains(tempSensor)) |
| | | { |
| | | showFunctions.Add(tempSensor); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (showFunctions.Contains(tempSensor)) |
| | | { |
| | | showFunctions.Remove(tempSensor); |
| | | } |
| | | } |
| | | LoadMothed_GetSensorHistoryData(); |
| | | }; |
| | | #endregion |
| | | |
| | | contentView.AddChidren(new Button() |
| | | { |
| | | Height = Application.GetRealHeight(12), |
| | | }); |
| | | |
| | | } |
| | | #endregion |
| | | new TopViewDiv(bodyView, Language.StringByID(sensor.functionTypeNameId)).LoadTopView(); |
| | | new TopViewDiv(bodyView, Language.StringByID(sensorTemp.GetFunctionTypeNameId(function.spk))).LoadTopView(); |
| | | |
| | | LoadMothed_GetSensorHistoryData(QueryType.NowDay); |
| | | LoadMothed_GetSensorHistoryData(); |
| | | LoadEvent_ChangeSensorHistoryShowType(); |
| | | } |
| | | } |
| | |
| | | //------------ |
| | | public partial class EnvironmentalSensorPage |
| | | { |
| | | enum QueryType |
| | | { |
| | | NowDay = 0,//当天 |
| | | NowMonth = 1,//指定月 |
| | | NowYear = 2,//今年 |
| | | LatelySevenDay = 3//最近七天 |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 读取传感器历史数据 |
| | | /// </summary> |
| | | void LoadMothed_GetSensorHistoryData(QueryType queryType) |
| | | void LoadMothed_GetSensorHistoryData( ) |
| | | { |
| | | string echartRootJsonString; |
| | | EchartsOption echartRootJson = new EchartsOption(); |
| | | var seriesList = new List<EchartSeriesItem>(); |
| | | echartRootJson.xAxis.data = new List<string>(); |
| | | var loadPage = new Loading() { |
| | | LodingBackgroundColor = 0x88888888, |
| | | }; |
| | |
| | | try |
| | | { |
| | | Application.RunOnMainThread(() => { |
| | | loadPage.Start("Loading..."); |
| | | loadPage.Start(Language.StringByID(StringId.PleaseWait)); |
| | | }); |
| | | var curMonth = 0; |
| | | if(queryType == QueryType.NowMonth) |
| | | { |
| | | curMonth = DateTime.Now.Month; |
| | | } |
| | | for (int i = 0; i < showSensors.Count; i++) |
| | | { |
| | | var sr = showSensors[i]; |
| | | var revertObj = new DAL.Server.HttpServerRequest().GetSensorHistory(sr.bus_Data.SubnetID, sr.bus_Data.DeviceID, |
| | | 5, (int)(sr.functionType) % 256, (int)queryType, sr.bus_Data.LoopID, curMonth, |
| | | DB_ResidenceData.residenceData.residenceGatewayMAC); |
| | | int i = 0; |
| | | |
| | | var ebl = new EchartsOption_BrokenLine(); |
| | | |
| | | string yDataString = ""; |
| | | |
| | | foreach (var sr in showFunctions) |
| | | { |
| | | if (sr.spk != function.spk) |
| | | { |
| | | continue; |
| | | } |
| | | if (showFunctions.Find((obj) => obj.sid == sr.sid) == null) |
| | | { |
| | | i++; |
| | | continue; |
| | | } |
| | | |
| | | var sensorType = sr.spk.Split(".")[1]; |
| | | var queryType = sr.GetAttrState("spk").ToString(); |
| | | if(queryType == "0") |
| | | { |
| | | queryType = "value"; |
| | | } |
| | | |
| | | var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId, queryType); |
| | | if (revertObj != null) |
| | | { |
| | | if (revertObj.StateCode == "SUCCESS") |
| | | if (revertObj.Code == StateCode.SUCCESS) |
| | | { |
| | | var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SensorPushHistoryRes>>(revertObj.ResponseData.ToString()); |
| | | var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString()); |
| | | |
| | | var sItem = new EchartSeriesItem |
| | | if (i == 0) |
| | | { |
| | | name = sr.GetRoomListName(), |
| | | data = new List<int>(), |
| | | lineStyle = new EchartLineStyle() |
| | | List<string> vs = new List<string>(); |
| | | foreach(var data in revertData) |
| | | { |
| | | color = tipColorStringList[i], |
| | | #if __IOS__ |
| | | width = 5, |
| | | #elif __ANDROID__ |
| | | width = 2, |
| | | #endif |
| | | }, |
| | | }; |
| | | |
| | | int ass = 0; |
| | | for (int j = 0; j < revertData.Count; j++) |
| | | { |
| | | if (revertData[j].TargetValue.ToString() != "NaN") |
| | | { |
| | | ass = Convert.ToInt32(revertData[j].TargetValue); |
| | | vs.Add(data.fieldName); |
| | | } |
| | | sItem.data.Add(ass); |
| | | switch (queryType) |
| | | { |
| | | case QueryType.NowDay: |
| | | echartRootJson.xAxis.data.Add(revertData[j].CreatedOnUtc.Hour.ToString()); |
| | | break; |
| | | case QueryType.LatelySevenDay: |
| | | echartRootJson.xAxis.data.Add(System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(revertData[j].CreatedOnUtc.DayOfWeek)); |
| | | break; |
| | | case QueryType.NowMonth: |
| | | echartRootJson.xAxis.data.Add(revertData[j].CreatedOnUtc.Day.ToString()); |
| | | break; |
| | | } |
| | | ebl.InitXdataText(vs); |
| | | } |
| | | seriesList.Add(sItem); |
| | | } |
| | | else |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.GetSensorHistoryFailed), true); |
| | | }); |
| | | yDataString += ebl.InitYdataText(sr.name, revertData, tipColorStringList[i]); |
| | | } |
| | | } |
| | | i++; |
| | | } |
| | | |
| | | //echartRootJson.title.text = "温度(℃)";lineStyle |
| | | //echartRootJson.color = new List<string> { "#80AEFF" };//, "FFD154", "FF9D54", "FE6A6A", "B183C3", "ADE764" |
| | | 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 |
| | | echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | myEchartsView.ShowWithOptionJsonString(echartRootJsonString); |
| | | myEchartsView.ShowWithOption(ebl.InitOption()); |
| | | }); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | btnShowHistroyData_Day.IsSelected = true; |
| | | btnShowHistroyData_Month.IsSelected = false; |
| | | btnShowHistroyData_Week.IsSelected = false; |
| | | LoadMothed_GetSensorHistoryData(QueryType.NowDay); |
| | | curQueryType = "hour"; |
| | | LoadMothed_GetSensorHistoryData(); |
| | | }; |
| | | |
| | | btnShowHistroyData_Month.MouseUpEventHandler = (sender, e) => |
| | |
| | | btnShowHistroyData_Day.IsSelected = false; |
| | | btnShowHistroyData_Month.IsSelected = true; |
| | | btnShowHistroyData_Week.IsSelected = false; |
| | | LoadMothed_GetSensorHistoryData(QueryType.NowMonth); |
| | | curQueryType = "month"; |
| | | LoadMothed_GetSensorHistoryData(); |
| | | }; |
| | | btnShowHistroyData_Week.MouseUpEventHandler = (sender, e) => |
| | | { |
| | |
| | | btnShowHistroyData_Day.IsSelected = false; |
| | | btnShowHistroyData_Month.IsSelected = false; |
| | | btnShowHistroyData_Week.IsSelected = true; |
| | | LoadMothed_GetSensorHistoryData(QueryType.LatelySevenDay); |
| | | curQueryType = "week"; |
| | | LoadMothed_GetSensorHistoryData(); |
| | | }; |
| | | |
| | | } |
| | | |
| | | void LoadEvent_SwitchOtherRoomSensorData() |
| | | { |
| | | |
| | | } |
| | | } |
| | | |
| | | public class SensorPushHistoryRes |
| | | public class EnvironmentalSensorHistor |
| | | { |
| | | /// <summary> |
| | | /// </summary> |
| | | public string fieldName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 实际目标值 |
| | | /// </summary> |
| | | public float TargetValue { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 查询的时间集群 |
| | | /// </summary> |
| | | public DateTime CreatedOnUtc { get; set; } |
| | | public string fieldValue { get; set; } |
| | | } |
| | | } |