/**
* 图表+表格组件,参见showChartTable()
*/
/*var _mtssTemplate = Handlebars.compile('../widget/mtss.handlebars');*/
function _setupDateRangePicker(eid, startDate, endDate, fn, options) {
//var now = moment();
$('#' + eid).daterangepicker({
"ranges": {
"近7天": [moment().subtract(6, 'days'), moment()],
"近15天": [moment().subtract(14, 'days'), moment()],
"近30天": [moment().subtract(29, 'days'), moment()],
"近90天": [moment().subtract(89, 'days'), moment()],
"本月起": [moment().startOf('month'), moment()],
"上月起": [moment().subtract(1, 'month').startOf('month'), moment()]
},
"locale": {
"format": "YYYY-MM-DD",
"separator": options && options.realtime == true ? " 与 " : " 至 ",
"applyLabel": "确定",
"cancelLabel": "取消",
"customRangeLabel": "自定义",
"daysOfWeek": [
"日",
"一",
"二",
"三",
"四",
"五",
"六"
],
"monthNames": [
"1月",
"2月",
"3月",
"4月",
"5月",
"6月",
"7月",
"8月",
"9月",
"10月",
"11月",
"12月"
],
"firstDay": 1
},
"startDate": startDate,
"endDate": endDate
}, function (start, end, label) {
var s = start.format('YYYY-MM-DD');
var e = end.format('YYYY-MM-DD');
var str = options && options.realtime == true ? " 与 " : " 至 ";
$("#" + eid).children("span").html(s + str + e);
fn(s, e);
});
}
function _hasPrecent(s) {
return s && s.substr(-1) == '%';
}
function _erasePrecent(s) {
return s.substr(0, s.length - 1);
}
function _noPrecent(s) {
if (_hasPrecent(s)) return _erasePrecent(s);
else return s;
}
// 检查label最后是不是以%结尾,如果是说明该图表要以%显示
function _handleLabelPrecent(ds) {
var ret = false;
for (var i = 0; i < ds.length; ++i) {
var item = ds[i];
if (_hasPrecent(item.label)) {
ret = true;
item.label = _erasePrecent(item.label);
}
}
return ret;
}
// 只显示图表
function _plotChart(eid, ds, options) {
var showBars = options && options.stack == true;
//console.log(options)
//console.log(options.stack)
var showRealTime = options && options.realtime == true; //实时数据,坐标显示时分
var showLine = !showBars;
var isPrecent = _handleLabelPrecent(ds);
var op;
if (showLine) {
op = {
xaxes: [{
mode: 'time',
timezone: 'browser',
tickFormatter: function (val, axis) {
if (showRealTime) return moment(val, 'x').format('HH:mm');
else return moment(val, 'x').format('MM-DD');
}
}],
yaxes: [{
tickFormatter: isPrecent ? function (val, axis) {
return val.toFixed(3) + '%';
} :
function (val, axis) {
return val.toFixed(1);
}
}],
grid: {
hoverable: true //IMPORTANT! this is needed for tooltip to work
},
tooltip: true,
tooltipOpts: {
content: "%x is %y
%s",
xDateFormat: showRealTime ? "%H:%M" : "%Y-%m-%d",
shifts: {
x: -60,
y: 25
}
},
shadowSize: 0,
legend: {
hideable: ds.length > 1
}
};
} else if (showBars) {
op = {
xaxis: {
mode: 'time',
timezone: 'browser',
tickFormatter: function (val, axis) {
return moment(val, 'x').format('MM-DD');
}
},
yaxis: {
tickFormatter: function (val, axis) {
return val.toFixed(1);
}
/*tickFormatter : function (value, axis) {
var value = value + '';
if (value.indexOf('.') == -1) {
return value + '.00';
} else {
var arr = value.split('.');
if (arr[1].length == 2) {
return value;
} else {
return value + '0';
}
}
}*/
},
series: {
stack: true,
group: true,
groupInterval: 24 * 60 * 60 * 1000,
bars: {
show: true,
align: 'center',
lineWidth: 0,
barWidth: 24 * 60 * 60 * 500
}
},
grid: {
hoverable: true //IMPORTANT! this is needed for tooltip to work
},
tooltip: true,
tooltipOpts: {
content: "%x is %y
%s",
xDateFormat: showRealTime ? "%H:%M" : "%Y-%m-%d",
shifts: {
x: -60,
y: 25
}
},
shadowSize: 0
}
}
$.plot($('#' + eid + '_chartZone'), ds, op);
}
// 显示图表和表格
function _plotChartTable(eid, data, index, isChart, options) {
if (options.type == '2m') {
isChart = !isChart;
}
if (isChart) {
// 图表
if (options.type == 'm1') {
var seriesData = [];
for (var i = 0; i < data.data.length; ++i) {
seriesData.push([data.data[i][0], data.data[i][index]]);
}
var ds = [{data: seriesData, label: data.columns[index]}];
_plotChart(eid, ds, options);
} else { // options.type == 'mn' || options.type == '1m'
var ds = [];
for (var i = 1; i < data.columns.length; ++i) {
var seriesData = [];
for (var j = 0; j < data.data.length; ++j) {
seriesData.push([data.data[j][0], data.data[j][i]]);
}
ds.push({data: seriesData, label: data.columns[i]});
}
_plotChart(eid, ds, options);
}
} else {
$('#' + eid + '_chartZone').html('