using System;
|
using System.Collections.Generic;
|
using HDL_ON.DAL.Server;
|
using HDL_ON.DriverLayer;
|
using HDL_ON.Entity;
|
using HDL_ON.UI.CSS;
|
using Shared;
|
namespace HDL_ON.UI
|
{
|
public class SocketPage_CumulativePowerConsumption : FrameLayout
|
{
|
static SocketPage_CumulativePowerConsumption bodyView;
|
|
/// <summary>
|
/// 顶部区域
|
/// </summary>
|
FrameLayout generalTableView;
|
|
/// <summary>
|
/// 实时功耗
|
/// </summary>
|
Button btnRealTimeData;
|
/// <summary>
|
/// 实时功耗单位
|
/// </summary>
|
Button btnTotalValueUint;
|
/// <summary>
|
/// 总功耗
|
/// </summary>
|
TextButton btnTotalValue;
|
/// <summary>
|
/// 历史数据区域
|
/// </summary>
|
FrameLayout diagramView;
|
/// <summary>
|
/// 曲线图数据string
|
/// </summary>
|
EchartsOption_BrokenLine brokenLine;
|
|
|
/// <summary>
|
/// 插查询的能源列表
|
/// </summary>
|
List<Function> queryList = new List<Function>();
|
/// <summary>
|
/// 查询条件
|
/// hour、week、month
|
/// </summary>
|
string curQueryType = "hour";
|
|
|
/// <summary>
|
/// 能源列表区域
|
/// </summary>
|
FrameLayout energyListView;
|
/// <summary>
|
/// 历史数据图表
|
/// </summary>
|
MyEchartsViewOn myEchartsView_Line;
|
|
|
Function function;
|
/// <summary>
|
/// 主页
|
/// </summary>
|
public SocketPage_CumulativePowerConsumption(Function function)
|
{
|
this.function = function;
|
bodyView = this;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
public void LoadPage()
|
{
|
new TopViewDiv(bodyView, Language.StringByID(StringId.CumulativePowerConsumption)).LoadTopView();
|
bodyView.BackgroundColor = CSS_Color.BackgroundColor;
|
|
var contentView = new FrameLayout()
|
{
|
Y = Application.GetRealHeight(64),
|
Height = Application.GetRealHeight(603),
|
};
|
bodyView.AddChidren(contentView);
|
|
#region 顶部view
|
generalTableView = new FrameLayout()
|
{
|
Gravity = Gravity.CenterHorizontal,
|
Y = Application.GetRealWidth(16),
|
Width = Application.GetRealWidth(343),
|
Height = Application.GetRealWidth(148),//419//148
|
Radius = (uint)Application.GetRealWidth(5),
|
BackgroundColor = CSS_Color.MainBackgroundColor,
|
};
|
contentView.AddChidren(generalTableView);
|
|
btnTotalValue = new TextButton()
|
{
|
X = Application.GetRealWidth(18),
|
Y = Application.GetRealWidth(24),
|
Width = Application.GetRealWidth(18),
|
Height = Application.GetRealWidth(52),
|
TextColor = CSS_Color.FirstLevelTitleColor,
|
IsBold = true,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextSize = 40,
|
Text = function.GetAttrState("total_electricity")
|
};
|
btnTotalValue.Width = btnTotalValue.GetTextWidth();
|
generalTableView.AddChidren(btnTotalValue);
|
|
btnTotalValueUint = new Button()
|
{
|
X = btnTotalValue.Right,
|
Y = Application.GetRealWidth(24),
|
Width = Application.GetRealWidth(60),
|
Height = Application.GetRealWidth(28),
|
TextColor = CSS_Color.FirstLevelTitleColor,
|
TextSize = CSS_FontSize.SubheadingFontSize,
|
IsBold = true,
|
Text = "kW‧h",
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
generalTableView.AddChidren(btnTotalValueUint);
|
|
btnRealTimeData = new Button()
|
{
|
X = Application.GetRealWidth(18),
|
Y = btnTotalValue.Bottom,
|
Width = Application.GetRealWidth(209),
|
Height = Application.GetRealWidth(28),
|
TextColor = CSS_Color.TextualColor,
|
TextSize = CSS_FontSize.SubheadingFontSize,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextID = StringId.RealTimePowerConsumption,
|
};
|
double realTimePower = 0;
|
double.TryParse(function.GetAttrState("active_power"), out realTimePower);
|
realTimePower /= 1000;
|
btnRealTimeData.Text = Language.StringByID(StringId.RealTimePowerConsumption).Replace("{0}", realTimePower.ToString());
|
generalTableView.AddChidren(btnRealTimeData);
|
|
|
|
generalTableView.Height = Application.GetRealWidth(459);
|
|
#endregion
|
|
initDiagramView();
|
|
}
|
|
/// <summary>
|
/// 加载曲线图
|
/// </summary>
|
/// <param name="contentView"></param>
|
void initDiagramView()
|
{
|
brokenLine = new EchartsOption_BrokenLine();
|
|
|
diagramView = new FrameLayout()
|
{
|
Y = Application.GetRealWidth(136),
|
Gravity = Gravity.CenterHorizontal,
|
Width = Application.GetRealWidth(343),
|
Height = Application.GetRealWidth(281),
|
BackgroundColor = CSS_Color.MainBackgroundColor,
|
Radius = (uint)Application.GetRealWidth(12),
|
BorderColor = 0x00000000,
|
BorderWidth = 0,
|
};
|
generalTableView.AddChidren(diagramView);
|
|
#region 选择数据日期范围
|
var showDataTypeView = new FrameLayout()
|
{
|
X = Application.GetRealWidth(136),
|
Y = Application.GetRealHeight(12),
|
Width = Application.GetRealWidth(144+47),
|
Height = Application.GetRealHeight(24),
|
BackgroundImagePath = "FunctionIcon/EnvironmentalScience/HistoryOpionBg1.png",
|
};
|
diagramView.AddChidren(showDataTypeView);
|
|
var 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);
|
|
var 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);
|
|
var 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)
|
};
|
showDataTypeView.AddChidren(btnShowHistroyData_Month);
|
|
var btnShowHistroyData_Year = new Button()
|
{
|
X = Application.GetRealWidth(48 * 3),
|
Width = Application.GetRealWidth(48),
|
TextAlignment = TextAlignment.Center,
|
TextColor = CSS_Color.PromptingColor2,
|
SelectedTextColor = CSS_Color.MainColor,
|
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
|
Text = Language.StringByID(StringId.Years),
|
};
|
showDataTypeView.AddChidren(btnShowHistroyData_Year);
|
|
|
btnShowHistroyData_Day.MouseUpEventHandler = (sender, e) =>
|
{
|
showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/HistoryOpionBg1.png";
|
btnShowHistroyData_Day.IsSelected = true;
|
btnShowHistroyData_Month.IsSelected = false;
|
btnShowHistroyData_Week.IsSelected = false;
|
btnShowHistroyData_Year.IsSelected = false;
|
curQueryType = "hour";
|
brokenLine.YvalueText = "";
|
LoadMothed_GetHistoryData();
|
};
|
|
btnShowHistroyData_Week.MouseUpEventHandler = (sender, e) =>
|
{
|
showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/HistoryOpionBg2.png";
|
btnShowHistroyData_Day.IsSelected = false;
|
btnShowHistroyData_Month.IsSelected = false;
|
btnShowHistroyData_Week.IsSelected = true;
|
btnShowHistroyData_Year.IsSelected = false;
|
curQueryType = "week";
|
brokenLine.YvalueText = "";
|
LoadMothed_GetHistoryData();
|
};
|
btnShowHistroyData_Month.MouseUpEventHandler = (sender, e) =>
|
{
|
showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/HistoryOpionBg3.png";
|
btnShowHistroyData_Day.IsSelected = false;
|
btnShowHistroyData_Month.IsSelected = true;
|
btnShowHistroyData_Week.IsSelected = false;
|
btnShowHistroyData_Year.IsSelected = false;
|
curQueryType = "month";
|
brokenLine.YvalueText = "";
|
LoadMothed_GetHistoryData();
|
};
|
|
btnShowHistroyData_Year.MouseUpEventHandler = (sender, e) =>
|
{
|
showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/HistoryOpionBg4.png";
|
btnShowHistroyData_Day.IsSelected = false;
|
btnShowHistroyData_Month.IsSelected = false;
|
btnShowHistroyData_Year.IsSelected = true;
|
btnShowHistroyData_Week.IsSelected = false;
|
curQueryType = "year_month";
|
brokenLine.YvalueText = "";
|
LoadMothed_GetHistoryData();
|
};
|
|
#endregion
|
|
var historyDataView = new FrameLayout()
|
{
|
Gravity = Gravity.CenterHorizontal,
|
Y = Application.GetRealWidth(52),
|
Height = Application.GetRealWidth(240),
|
};
|
diagramView.AddChidren(historyDataView);
|
|
myEchartsView_Line = new MyEchartsViewOn()
|
{
|
Y = Application.GetRealWidth(10),
|
Height = Application.GetRealWidth(220),
|
};
|
historyDataView.AddChidren(myEchartsView_Line);
|
|
LoadMothed_GetHistoryData();
|
|
}
|
|
/// <summary>
|
/// 读取历史数据
|
/// </summary>
|
void LoadMothed_GetHistoryData()
|
{
|
var loadPage = new Loading()
|
{
|
LodingBackgroundColor = 0x88888888,
|
};
|
diagramView.AddChidren(loadPage);
|
|
//var d = new List<string> ();
|
//var dd = new List<EnvironmentalSensorHistor>();
|
//Random random = new Random() ;
|
//for (int ii = 0; ii < 13; ii++)
|
//{
|
// var i = random.Next(10000);
|
|
// d.Add(i.ToString());
|
// dd.Add(new EnvironmentalSensorHistor
|
// {
|
// fieldName = i.ToString(),
|
// fieldValue = i.ToString()
|
// });
|
//}
|
//brokenLine.InitXdataText(d);
|
|
//brokenLine.InitYdataText(function.name, dd, "#80AEFF");
|
//brokenLine.yTitle = "能耗(kW)";
|
//brokenLine.xTitle = "小时";
|
//var opString = brokenLine.InitOption();
|
//myEchartsView_Line.ShowWithOption(opString);
|
//return;
|
|
|
new System.Threading.Thread(() =>
|
{
|
try
|
{
|
Application.RunOnMainThread(() =>
|
{
|
loadPage.Start(Language.StringByID(StringId.PleaseWait));
|
});
|
|
var sensorType = function.spk.Split(".")[1];
|
var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, function.deviceId, "total_electricity");
|
if (revertObj != null)
|
{
|
if (revertObj.Code == StateCode.SUCCESS)
|
{
|
var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
|
|
List<string> vs = new List<string>();
|
if (brokenLine.YvalueText == "")
|
{
|
foreach (var data in revertData)
|
{
|
vs.Add(data.fieldName);
|
}
|
brokenLine.InitXdataText(vs);
|
}
|
if (function.GetAttribute("ydata") == null)
|
{
|
function.attributes.Add(new FunctionAttributes() { key = "ydata" });
|
}
|
function.SetAttrState("ydata", brokenLine.InitYdataText(function.name, revertData, "#80AEFF") + ",");
|
}
|
}
|
brokenLine.yTitle = Language.StringByID(StringId.EnergyConsumption) + "(kW)";
|
brokenLine.xTitle = Language.StringByID(StringId.timeMode);
|
if (curQueryType != "hour")
|
{
|
brokenLine.xTitle = Language.StringByID(StringId.Date);
|
}
|
var opString = brokenLine.InitOption();
|
|
Application.RunOnMainThread(() =>
|
{
|
myEchartsView_Line.ShowWithOption(opString);
|
});
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log($"sensor history error : {ex.Message}");
|
}
|
finally
|
{
|
Application.RunOnMainThread(() =>
|
{
|
loadPage.Hide();
|
});
|
}
|
})
|
{ IsBackground = true }.Start();
|
}
|
|
}
|
|
|
}
|