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();
}
}
}