var hasLoaded = false;
var prId = -1;
var ctValueAndDdNumbersMap = {};
var initDdNumberCallbackCount = 0;
var varTypesIdAndNameList = [];//变量类型及id的数组,例如[id:1010, typeName:"电流"]
var hasSent = false;//标记是否向主窗体发送过过滤条件
var isLoadingVarType = false;
// Add start 2018/8/23 16:00 kangzhi
var isLoadingChart = false;//加载'查看类型曲线'
// Add end 2018/8/23 16:00 kangzhi
var filterResult = {
locName: "高压侧",
ctValue: "1",
ddNumber: "201",
// Add start 2018/8/23 16:00 kangzhi
typeChartId: 'f',// 存储查看类型曲线 id
typeChartName: '频率',// 存储查看类型曲线 name
// Add end 2018/8/23 16:00 kangzhi
typeIds: [],
typeNames: [],
interval: 3600,
intervalDesc: "1小时"
};
/**
* 弹出提示框
*/
function toast(msg) {
api.toast({
msg: msg,
duration: 3000,
locaiton: 'top'
});
}
/**
* 通过主界面
* @param {*} msg
*/
function remoteToast(msg) {
api.sendEvent({
name: 'historyDtRemoteToast',
extra: {
msg: msg
}
});
}
/**
* 根据id清空所有子元素
*/
function clearAllChildren(id) {
var tobeRemoved = $("#" + id);
tobeRemoved.empty();
}
/**
* 界面显示完成后的回调
*/
function viewAppear(ret, err) {
if (!hasLoaded) {
//如果用户滑动打开了侧栏,但是还没加载过数据,则开始加载
toast("加载中...");
historyLoadData();
}
}
/**
* 主窗体通知侧栏加载数据
*/
function historyLoadData() {
//标记为已经加载数据
hasLoaded = true;
//获取prId
prId = $api.getStorage('powerRoom').prId;
if (prId > 0) {
//获取各个位置下的调度号
initDdNumber(function () {
var defaultDdNumbers = ctValueAndDdNumbersMap[filterResult.ctValue];
if (!(defaultDdNumbers && defaultDdNumbers.length > 0)) {
//提示用户手动选择分类
remoteToast("请选择查询条件");
}
//更新界面上的调度号显示
updateDdNumberView();
});
}
}
/**
* 调接口获取各个分类下的调度号
*/
function initDdNumber(callback) {
ctValueAndDdNumbersMap["1"] = [];//高压侧调度号假数据
ctValueAndDdNumbersMap["2"] = [];//低压侧假数据
ctValueAndDdNumbersMap["3"] = [];//变压器假数据
ctValueAndDdNumbersMap["4"] = [];//直流屏假数据
ctValueAndDdNumbersMap["5"] = [];//信号屏假数据
ctValueAndDdNumbersMap["6"] = [];//其他假数据
initDdNumberCallbackCount = 0;//回调计数清零
var url = '/ems/rest/ddnum/list';
var args = { prId: prId, ct: 1 };
for (var i = 1; i <= 6; i++) {
args.location = i;
args.varType = '1'; // 只能查看AI点的历史数据
$api.get(url, args, function (data, err) {
initDdNumberCallbackCount++;
if (err) {
toast("网络请求失败");
} else {
if (!data.code || data.code != "200") {
toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : ""));
} else {
if (data.body) {
for (var i = 0; i < data.body.length; i++) {
var element = data.body[i];
ctValueAndDdNumbersMap[element.location + ""].push(element.ddNum);
}
}
}
}
if (initDdNumberCallbackCount == 4 && callback) {
callback();
}
});
}
}
/**
* 向调度号列表中添加一个调度号
*/
function addDdnumber(ddnumber) {
var template = '';
template = template.replace("{dd}", ddnumber);
$("#ddnumber-group").append(template);
}
/**
* 清空界面上的所有调度号
*/
function clearDdnumberGroup() {
clearAllChildren("ddnumber-group");
}
/**
* 调接口获取变量类型
*/
function initVarType() {
var url = '/ems/rest/var/category';
var args = { prId: prId, location: filterResult.ctValue, ddNum: filterResult.ddNumber, varType: "1" };
varTypesIdAndNameList = [];//先清空变量类型id和名称的数组
showVarTypeLoading();//显示载入中
// Add start 2018/8/23 16:00 kangzhi
showChartLoading();// 显示'查看类型曲线'加载中
// Add end 2018/8/23 16:00 kangzhi
$api.get(url, args, function (data, err) {
if (err) {
toast("网络请求失败");
} else {
if (!data.code || data.code != "200") {
toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : ""));
} else {
for (var i = 0; i < data.body.length; i++) {
var v = data.body[i];
varTypesIdAndNameList.push({ id: v.categoryKey, typeName: v.categoryName });
}
//更新界面上显示的变量类型
updateVarTypesView();
//如果从未向主窗体发送过过滤条件,则发送一次
if (!hasSent) {
sendResult();
}
}
}
});
}
/**
* 清空界面上显示的变量类型
*/
function clearVarTypesGroup() {
clearAllChildren("vartype-group");
}
/**
* 向界面中的变量类型按钮组中添加一个变量类型按钮
*/
function addVarType(v) {
var template = '';
template = template.replace(/{value}/g, v.typeName);
template = template.replace("{typeId}", v.id);
$("#vartype-group").append(template);
}
/**
* 更新界面上显示的变量类型
*/
function updateVarTypesView() {
//先清空界面上显示的变量类型
clearVarTypesGroup();
if (varTypesIdAndNameList) {
for (var i = 0; i < varTypesIdAndNameList.length; i++) {
var v = varTypesIdAndNameList[i];
addVarType(v);
}
}
//隐藏载入中的提示
hideVarTypeLoading();
//默认选中第前两个变量类型
var childrens = $("#vartype-group").children();
if (childrens.length >= 2) {
var first = $(childrens[0]);
var second = $(childrens[1]);
first.addClass("btn-highlight");
second.addClass("btn-highlight");
} else if (childrens.length >= 1) {
//如果只有一个就默认选中一个
var first = $(childrens[0]);
first.addClass("btn-highlight");
}
// Add start 2018/8/23 16:00 kangzhi
// 获取‘类型’中的所有按钮
var typeBtnList = $("#vartype-group").children();
// 更新查看曲线类型
updateChartBtn(typeBtnList);
// Add end 2018/8/23 16:00 kangzhi
//为所有的变量类型绑定事件
bindCheckButtonEvent($("#vartype-group").children());
}
// Add start 2018/8/23 14:00 kangzhi
/**
* 清除'查看曲线类型'中的所有按钮
*/
function clearChartGroup() {
clearAllChildren('chart-group');
}
/**
* 更新'查看类型曲线'(参数是'类型'中的所有按钮jQuery对象组成的数组)
*/
function updateChartBtn(typeBtnList) {
// 隐藏'查看类型曲线'加载中的提示
hideChartLoading();
// 先循环遍历 typeBtnList 当没有选中类型按钮时,查看类型曲线中显示'无'按钮,
// 当有选中类型按钮时,隐藏'无'按钮,正常显示选中的类型按钮
var flag = true;
for (var j = 0; j < typeBtnList.length; j++) {
if ($(typeBtnList[j]).hasClass('btn-highlight')) {
flag = false;
}
}
if (flag) {
showChartNoneBtn();
} else {
hideChartNoneBtn();
}
// 清空查看曲线类型
clearAllChildren('chart-group');
for (var i = 0; i < typeBtnList.length; i++) {
// 将 typeBtnList 中所有含有 btn-highlight 类名的按钮更新到 chart-group 中
if ($(typeBtnList[i]).hasClass('btn-highlight')) {
// 将含有 btn-highlight 类名的按钮 clone
var chartBtn = $(typeBtnList[i]).clone()
.removeClass('btn-highlight')
.attr('group', 'chart');
// 将克隆的按钮更新到 chart-group 中
$('#chart-group').append(chartBtn);
}
}
// 默认给'查看类型曲线'中第一个按钮添加 btn-highlight 类名
var chartBtnList = $('#chart-group').children();
$(chartBtnList[0]).addClass('btn-highlight');
// 将默认选中的第一个按钮的数据存储到 filterResult.typeChartId 和 filterResult.typeChartName 中
checkedChartButton_clicked($(chartBtnList[0]));
// 给'查看类型曲线'单选按钮添加点击事件
bindSwitchButtonEvent(chartBtnList);
}
/**
* 显示'查看曲线类型'中的'无'按钮
*/
function showChartNoneBtn() {
$('#chart-group').css('display', 'none');
$('#chart-group-none').css('display', 'block');
}
/**
* 隐藏'查看曲线类型'中的'无'按钮
*/
function hideChartNoneBtn() {
$('#chart-group').css('display', 'block');
$('#chart-group-none').css('display', 'none');
}
// Add end 2018/8/23 14:00 kangzhi
/**
* 显示变量类型载入中
*/
function showVarTypeLoading() {
isLoadingVarType = true;
$("#vartype-group-loading").css("display", "block");
$("#vartype-group").css("display", "none");
}
/**
* 隐藏变量类型载入中
*/
function hideVarTypeLoading() {
isLoadingVarType = false;
$("#vartype-group-loading").css("display", "none");
$("#vartype-group").css("display", "block");
}
// Add start 2018/8/23 14:00 kangzhi
/**
* 显示'查看类型曲线'载入中
*/
function showChartLoading() {
isLoadingChart = true;
$("#chart-group-loading").css("display", "block");
$("#chart-group").css("display", "none");
}
/**
* 隐藏'查看类型曲线'载入中
*/
function hideChartLoading() {
isLoadingChart = false;
$("#chart-group-loading").css("display", "none");
$("#chart-group").css("display", "block");
}
// Add end 2018/8/23 14:00 kangzhi
/**
* 显示调度号不存在和类型不存在的占位符
*/
function showEmptyDataPlaceHolder() {
//隐藏调度号
$("#ddnumber-group").css("display", "none");
$("#ddnumber-group-none").css("display", "flex");
//隐藏类型
$("#vartype-group").css("display", "none");
$("#vartype-group-none").css("display", "flex");
// Add start 2018/8/23 14:00 kangzhi
// 隐藏‘选择查看类型曲线’
$("#chart-group").css("display", "none");
$("#chart-group-none").css("display", "flex");
// Add end 2018/8/23 14:00 kangzhi
}
/**
* 隐藏调度号不存在和类型不存在的占位符
*/
function hideEmptyDataPlaceHolder() {
//隐藏调度号
$("#ddnumber-group").css("display", "flex");
$("#ddnumber-group-none").css("display", "none");
//隐藏类型
$("#vartype-group").css("display", "flex");
$("#vartype-group-none").css("display", "none");
}
/**
* 更新界面显示的调度号
*/
function updateDdNumberView() {
//先清空界面上显示的调度号
clearDdnumberGroup();
var ddNumbers = ctValueAndDdNumbersMap[filterResult.ctValue];
if (ddNumbers.length > 0) {
//隐藏占位符
hideEmptyDataPlaceHolder();
for (var i = 0; i < ddNumbers.length; i++) {
var dd = ddNumbers[i];
addDdnumber(dd);
}
//默认选中第一个调度号
var childrens = $("#ddnumber-group").children();
if (childrens.length > 0) {
var first = $(childrens[0]);
first.attr("class", "btn btn-highlight");
ddNumberButton_clicked(first);
}
//为所有的调度号绑定事件
bindSwitchButtonEvent($("#ddnumber-group").children());
} else {
//显示占位符
showEmptyDataPlaceHolder();
//设置调度号为空
filterResult.ddNumber = null;
//设置变量类型为空
filterResult.typeIds = [];
filterResult.typeNames = [];
}
}
/**
* 用户点击了确定按钮
*/
function btOk_clicked() {
if (isLoadingVarType) {
toast("载入中,请稍后再试");
} else {
if (filterResult.ddNumber) {
sendResult();
api.closeDrawerPane();
} else {
toast("当前分类下暂无数据");
}
}
}
/**
* 用户点击了取消按钮
*/
function btCancel_clicked() {
api.closeDrawerPane();
}
/**
* 向主窗体发送筛选条件
*/
function sendResult() {
//获取多选的变量类型
filterResult.typeIds = [];
filterResult.typeNames = [];
var checkButtons = $('#vartype-group').children();
for (var i = 0; i < checkButtons.length; i++) {
var cb = $(checkButtons[i]);
if (cb.hasClass('btn-highlight')) {
filterResult.typeIds.push(cb.attr('typeId'));
filterResult.typeNames.push(cb.attr('value'));
}
}
hasSent = true;
api.sendEvent({
name: 'filterSelectionChanged',
extra: filterResult
});
}
/**
* 为单选按钮绑定事件
*/
function bindSwitchButtonEvent(buttons) {
for (var i = 0; i < buttons.length; i++) {
var btn = $(buttons[i]);
btn.on('touchend', switchButtonClicked);
}
}
/**
* 单选按钮被点击
*/
function switchButtonClicked() {
var sender = $(this);
var brothers = sender.parent().children();
for (var i = 0; i < brothers.length; i++) {
var inputElement = $(brothers[i]);
// inputElement.attr('class', 'btn');
inputElement.removeClass("btn-highlight");
}
// sender.attr('class', 'btn btn-highlight');
sender.addClass("btn-highlight");
var groupName = sender.attr('group');
switch (groupName) {
case "loc":
locationButton_clicked(sender);
break;
case "ddNumber":
ddNumberButton_clicked(sender);
break;
case "time":
timeIntervalButton_clicked(sender);
break;
// Add start 2018/8/23 14:00 kangzhi
// 当点击的是查看曲线按钮时
case "chart":
checkedChartButton_clicked(sender);
break;
// Add end 2018/8/23 14:00 kangzhi
default:
break;
}
}
/**
* 为多选按钮绑定事件
* @param {*} buttons
*/
function bindCheckButtonEvent(buttons) {
for (var i = 0; i < buttons.length; i++) {
var btn = $(buttons[i]);
btn.on('touchend', checkButtonClicked);
}
}
/**
* 多选按钮被点击
*/
function checkButtonClicked(event) {
var sender = $(this);
if (sender.hasClass('btn-highlight')) {
sender.removeClass('btn-highlight');
} else {
sender.addClass('btn-highlight');
}
// Add start 2018/8/23 14:00 kangzhi
// 获取到当前'类型'中所有的多选按钮
var checkedTypeBtnList = $(event.target).parent().children();
// 调用更新类型曲线函数
updateChartBtn(checkedTypeBtnList);
// Add end 2018/8/23 14:00 kangzhi
// var groupName = sender.attr('group');
// switch (groupName) {
// case "vartype":
// break;
// default:
// break;
// }
}
/**
* 用户点击了位置按钮中的一个
*/
function locationButton_clicked(locButton) {
filterResult.locName = locButton.attr("value");
filterResult.ctValue = locButton.attr("ctvalue");
updateDdNumberView();
}
/**
* 用户点击了调度号中的一个
*/
function ddNumberButton_clicked(ddButton) {
filterResult.ddNumber = ddButton.attr("value");
//获取该调度号下的变量类型
initVarType();
}
/**
* 用户点击了时间粒度中的一个
*/
function timeIntervalButton_clicked(timeIntervalButton) {
filterResult.interval = timeIntervalButton.attr("interval");
filterResult.intervalDesc = timeIntervalButton.attr("value");
}
// Add start 2018/8/23 14:00 kangzhi
/**
* 用户点击了'查看类型曲线'中的一个
*/
function checkedChartButton_clicked(checkedChartButton) {
filterResult.typeChartId = checkedChartButton.attr('typeId');
filterResult.typeChartName = checkedChartButton.attr('value');
}
// Add end 2018/8/23 14:00 kangzhi
apiready = function () {
// 解决iphonex底部标签栏被虚拟home键遮挡
$api.fixTabBar($api.byId('footer'));
var ctrl = {
init: {},
bind: {}
}
ctrl.bind = function () {
//主窗体通知侧栏加载数据
api.addEventListener({ name: 'historyLoadData' }, historyLoadData);
//界面显示完成后的回调
api.addEventListener({ name: 'viewappear' }, viewAppear);
//为位置和类型绑定事件
bindSwitchButtonEvent($("#location-group").children());
bindSwitchButtonEvent($("#time-group").children());
//为确定和取消绑定事件
$("#btn-cancel").on("touchend", btCancel_clicked);
$("#btn-ok").on("touchend", btOk_clicked);
}
ctrl.init = function () {
ctrl.bind();
}
ctrl.init();
}