using System; using System.Collections.Generic; using HDL_ON.DAL.Server; using HDL_ON.Entity; using HDL_ON.Stan; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI { public class CacWeekHistoryPage : FrameLayout { CacWeekHistoryPage bodyView; Function device; /// /// 数据显示类型 /// temp 温度 /// humidity 湿度 /// string showType; public CacWeekHistoryPage(Function device,string type) { bodyView = this; this.device = device; showType = type; BackgroundColor = CSS_Color.BackgroundColor; } public void InitView() { new TopViewDiv(bodyView, "数据").LoadTopView(); InitContentView(); } private void InitContentView() { FrameLayout contentView = new FrameLayout() { Y = Application.GetRealHeight(80), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(482), BackgroundColor = CSS_Color.MainBackgroundColor, Radius = (uint)Application.GetRealWidth(5) }; bodyView.AddChidren(contentView); Button btnTitle = new Button() { Height = Application.GetRealHeight(60), TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, TextAlignment = TextAlignment.Center, Text = "最近7天每天平均室内温度统计图" }; contentView.AddChidren(btnTitle); FrameLayout dataView = new FrameLayout() { Y = Application.GetRealHeight(69), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(293), Height = Application.GetRealHeight(336), }; contentView.AddChidren(dataView); Button btnUnit = new Button() { Height = Application.GetRealHeight(15), TextAlignment = TextAlignment.CenterLeft, TextColor = 0xFF43425D, TextSize = 8, Text = "单位:℃" }; dataView.AddChidren(btnUnit); Dictionary dataDic = new Dictionary(); #if DEBUG dataDic.Add("0201", 20); dataDic.Add("0202", -20); dataDic.Add("0203", 10); dataDic.Add("0204", 40); dataDic.Add("0205", 20); dataDic.Add("0206", 20); dataDic.Add("0207", 20); //dataDic.Add("0201", -20); //dataDic.Add("0202", -20); //dataDic.Add("0203", -20); //dataDic.Add("0204", -40); //dataDic.Add("0205", -20); //dataDic.Add("0206", -20); //dataDic.Add("0207", -20); #endif DataItemView dataShowView = new DataItemView("0"); dataShowView.Height = Application.GetRealHeight(157 * 2 + 1); dataShowView.Y = Application.GetRealHeight(21); List items = new List() { "50","40","30","20","10","0","-10","-20","-30","-40","-50" }; int index = 0; foreach(var item in items) { DataItemView dataItemView; if(item == "0") { dataItemView = dataShowView; } else { dataItemView = new DataItemView(item); dataItemView.Y = index * Application.GetRealHeight(30) + Application.GetRealHeight(15); } dataItemView.InitView(); dataView.AddChidren(dataItemView); index++; } RefrshDataView(dataDic, dataShowView); { var dateHorView = new HorizontalScrolViewLayout() { X = Application.GetRealWidth(51), Y = dataView.Bottom + Application.GetRealHeight(11), Width = Application.GetRealWidth(267), Height = Application.GetRealHeight(26), }; contentView.AddChidren(dateHorView); foreach(var dic in dataDic) { FrameLayout dateView = new FrameLayout() { Width = Application.GetRealWidth(39), Height = Application.GetRealHeight(26), }; dateHorView.AddChidren(dateView); Button btnLineh = new Button() { Width = 1, Height = Application.GetRealHeight(4), Gravity = Gravity.CenterHorizontal, BackgroundColor = 0xFFDBDBDB }; dateView.AddChidren(btnLineh); Button btnDate = new Button() { Y = Application.GetRealHeight(12), Height = Application.GetRealHeight(14), TextColor = 0xFF43425D, TextSize = 10, Text = dic.Key, }; dateView.AddChidren(btnDate); } } Button btnTip = new Button() { Y = contentView.Bottom + Application.GetRealHeight(28), Height = Application.GetRealHeight(20), TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, TextAlignment = TextAlignment.Center, Text = "*可通过点击柱形图查看当天24小时温度统计" }; bodyView.AddChidren(btnTip); new System.Threading.Thread(() => { var revertObj = new HttpServerRequest().GetSensorHistory("week", device.deviceId, "room_temp"); }) { IsBackground = true }.Start(); } void RefrshDataView(Dictionary dataDic, DataItemView dataShowView) { int valueIndex = 0; foreach (var data in dataDic) { ColumnarView cv = new ColumnarView(data.Value); cv.X = Application.GetRealWidth(valueIndex * 38 + 25); cv.InitView(); dataShowView.AddChidren(cv); cv.Clicker(); valueIndex++; } } } class DataItemView : FrameLayout { string value; public DataItemView(string value) { this.value = value; Width = Application.GetRealWidth(293); Height = Application.GetRealHeight(30); } public void InitView() { Button btnValue = new Button() { Gravity = Gravity.CenterVertical, Width = Application.GetRealWidth(18), Height = Application.GetRealHeight(30), TextAlignment = TextAlignment.CenterRight, TextColor = 0xFF43425D, TextSize = 8, Text = value }; AddChidren(btnValue); Button btnLine = new Button() { Gravity = Gravity.CenterVertical, X = Application.GetRealWidth(26), Width = Application.GetRealWidth(267), Height = 1, BackgroundColor = CSS_Color.DividingLineColor, }; AddChidren(btnLine); } } class ColumnarView : VerticalScrolViewLayout { int value; /// /// 方向:向上、向下 /// bool isUpward; Button btnValue; Button btnValueText; public ColumnarView(int value) { this.isUpward = value >= 0; if (isUpward) { this.value = value; } else { this.value = value * -1; } Width = Application.GetRealWidth(39); Height = Application.GetRealHeight(value * 3 + 30); } public void InitView() { int yValue = 0; btnValue = new Button() { Gravity = Gravity.CenterHorizontal, Height = Application.GetRealHeight(value * 3), Width = Application.GetRealWidth(16), BackgroundColor = 0xFFFF9D54, }; btnValueText = new Button() { Height = Application.GetRealHeight(30), TextSize = CSS_FontSize.PromptFontSize_FirstLevel, TextColor = 0xFF43425D, Text = value + "℃", }; AddChidren(btnValueText); if (isUpward) { //btnValue.Height += Application.GetRealHeight(1); yValue = 158 - 30 - value * 3; yValue = yValue > 0 ? yValue : 158; Y = Application.GetRealHeight(yValue); AddChidren(btnValueText); AddChidren(btnValue); } else { btnValue.Height += Application.GetRealHeight(2); Y = Application.GetRealHeight(157); AddChidren(btnValue); AddChidren(btnValueText); } } public void Clicker() { btnValue.MouseUpEventHandler = (sender, e) => { var page = new CacDayHistoryPage(); MainPage.BasePageView.AddChidren(page); page.InitView(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; btnValueText.MouseUpEventHandler = (sender, e) => { var page = new CacDayHistoryPage(); MainPage.BasePageView.AddChidren(page); page.InitView(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; } } }