| | |
| | | |
| | | 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; |
| | | |
| | | FrameLayout historyDataView; |
| | | |
| | | MyEchartsViewOn myEchartsView; |
| | | |
| | | Sensor sensor; |
| | | |
| | | List<Sensor> showSensors; |
| | | |
| | | List<uint> tipColorList = new List<uint>() |
| | | { |
| | | 0xFF80AEFF,0xFFFFD154,0xFFFF9D54,0xFFFE6A6A,0xFFB183C3,0xFFADE764, |
| | | }; |
| | | |
| | | List<string> tipColorStringList = new List<string>() |
| | | { |
| | | "#80AEFF","#FFD154","#FF9D54","#FE6A6A","#B183C3","#ADE764", |
| | | }; |
| | | |
| | | public EnvironmentalSensorPage(Sensor ss) |
| | | { |
| | | bodyView = this; |
| | | sensor = ss; |
| | | showSensors = new List<Sensor>(); |
| | | showSensors.Add(ss); |
| | | } |
| | | |
| | | public void LoadPage() |
| | |
| | | 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), |
| | |
| | | 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() |
| | |
| | | }; |
| | | diagramView.AddChidren(tipTextView); |
| | | |
| | | |
| | | switch (sensor.functionType) |
| | | { |
| | | case FunctionType.PM10: |
| | | case FunctionType.PM25: |
| | | tipValuesView.AddChidren(new Button() { |
| | | tipValuesView.AddChidren(new Button() |
| | | { |
| | | Width = Application.GetRealWidth(101), |
| | | Text = "35", |
| | | TextAlignment = TextAlignment.Center, |
| | |
| | | }; |
| | | selfInfoView.AddChidren(btnSeltSensorName); |
| | | |
| | | |
| | | Button btnFromFoorAndRoom = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | |
| | | }; |
| | | 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); |
| | | |
| | |
| | | |
| | | #endregion |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | |
| | | new TopViewDiv(bodyView, Language.StringByID(sensor.functionTypeNameId)).LoadTopView(); |
| | | |
| | | LoadMothed_GetSensorHistoryData(QueryType.NowDay); |
| | | LoadEvent_ChangeSensorHistoryShowType(); |
| | | } |
| | | } |
| | | |
| | | |
| | | //------------ |
| | | public partial class EnvironmentalSensorPage |
| | | { |
| | | enum QueryType |
| | | { |
| | | NowDay = 0,//当天 |
| | | NowMonth = 1,//指定月 |
| | | NowYear = 2,//今年 |
| | | LatelySevenDay = 3//最近七天 |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 读取传感器历史数据 |
| | | /// </summary> |
| | | void LoadMothed_GetSensorHistoryData(QueryType queryType) |
| | | { |
| | | string echartRootJsonString; |
| | | EchartsOption echartRootJson = new EchartsOption(); |
| | | var seriesList = new List<EchartSeriesItem>(); |
| | | echartRootJson.xAxis.data = new List<string>(); |
| | | var loadPage = new Loading() { |
| | | LodingBackgroundColor = 0x88888888, |
| | | }; |
| | | historyDataView.AddChidren(loadPage); |
| | | |
| | | new System.Threading.Thread(() => |
| | | { |
| | | try |
| | | { |
| | | Application.RunOnMainThread(() => { |
| | | loadPage.Start("Loading..."); |
| | | }); |
| | | 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); |
| | | |
| | | if (revertObj != null) |
| | | { |
| | | if (revertObj.StateCode == "SUCCESS") |
| | | { |
| | | var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SensorPushHistoryRes>>(revertObj.ResponseData.ToString()); |
| | | |
| | | var sItem = new EchartSeriesItem |
| | | { |
| | | name = sr.GetRoomListName(), |
| | | data = new List<int>(), |
| | | lineStyle = new EchartLineStyle() |
| | | { |
| | | 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); |
| | | } |
| | | 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; |
| | | } |
| | | } |
| | | seriesList.Add(sItem); |
| | | } |
| | | else |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.GetSensorHistoryFailed), true); |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //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); |
| | | }); |
| | | } |
| | | 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; |
| | | LoadMothed_GetSensorHistoryData(QueryType.NowDay); |
| | | }; |
| | | |
| | | btnShowHistroyData_Month.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg3.png"; |
| | | btnShowHistroyData_Day.IsSelected = false; |
| | | btnShowHistroyData_Month.IsSelected = true; |
| | | btnShowHistroyData_Week.IsSelected = false; |
| | | LoadMothed_GetSensorHistoryData(QueryType.NowMonth); |
| | | }; |
| | | btnShowHistroyData_Week.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg2.png"; |
| | | btnShowHistroyData_Day.IsSelected = false; |
| | | btnShowHistroyData_Month.IsSelected = false; |
| | | btnShowHistroyData_Week.IsSelected = true; |
| | | LoadMothed_GetSensorHistoryData(QueryType.LatelySevenDay); |
| | | }; |
| | | |
| | | } |
| | | |
| | | void LoadEvent_SwitchOtherRoomSensorData() |
| | | { |
| | | |
| | | } |
| | | } |
| | | |
| | | public class SensorPushHistoryRes |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 实际目标值 |
| | | /// </summary> |
| | | public float TargetValue { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 查询的时间集群 |
| | | /// </summary> |
| | | public DateTime CreatedOnUtc { get; set; } |
| | | } |
| | | } |