152 lines
4.3 KiB
JavaScript
152 lines
4.3 KiB
JavaScript
/**
|
|
* Ajax get chart data.
|
|
*
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
function ajaxGetChart(check = true, chart = DataStorage.chart, echart = window.echart, noDataDom = window.noDataDom)
|
|
{
|
|
var chartParams = JSON.parse(JSON.stringify(chart));
|
|
if(typeof DataStorage != 'undefined') chartParams.fieldSettings = JSON.parse(JSON.stringify(DataStorage.fieldSettings));
|
|
if(typeof DataStorage != 'undefined') chartParams.langs = JSON.parse(JSON.stringify(DataStorage.langs));
|
|
|
|
/* Redraw echart. */
|
|
/* 拿数据并重绘图表。*/
|
|
$.post(createLink('chart', 'ajaxGetChart'), chartParams, function(resp)
|
|
{
|
|
var data = JSON.parse(resp);
|
|
if(echart)
|
|
{
|
|
var type = chartParams.settings[0].type;
|
|
if(type == 'waterpolo')
|
|
{
|
|
data.series[0].label.formatter = function(params) { return (params.value * 100).toFixed(2) + '%';};
|
|
data.tooltip.formatter = function(params) { return (params.value * 100).toFixed(2) + '%';};
|
|
}
|
|
|
|
if(canLabelRotate.includes(type))
|
|
{
|
|
if(!data.xAxis.axisLabel) data.xAxis.axisLabel = {};
|
|
if(!data.yAxis.axisLabel) data.yAxis.axisLabel = {};
|
|
var labelFormatter = function(value)
|
|
{
|
|
value = value.toString();
|
|
return (value.length <= labelMaxLength) ? value : value.substring(0, labelMaxLength) + '...';
|
|
}
|
|
|
|
data.xAxis.axisLabel.formatter = labelFormatter;
|
|
data.yAxis.axisLabel.formatter = labelFormatter;
|
|
}
|
|
|
|
echart.resize();
|
|
echart.clear();
|
|
if(isChartHaveData(data, type))
|
|
{
|
|
echart.setOption(data, true);
|
|
$('.btn-export').removeClass('hidden');
|
|
noDataDom.addClass('hidden');
|
|
}
|
|
else
|
|
{
|
|
noDataDom.removeClass('hidden');
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Determine whether the returned data is available.
|
|
*
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
function isChartHaveData(dataInfo, type)
|
|
{
|
|
if(type == 'waterpolo') return true;
|
|
var data = [];
|
|
if(type == 'pie') data = dataInfo.series[0].data;
|
|
if(type == 'line') data = dataInfo.xAxis.data;
|
|
if(type == 'radar') data = dataInfo.radar.indicator;
|
|
if(type == 'cluBarY' || type == 'stackedBarY') data = dataInfo.yAxis.data;
|
|
if(type == 'cluBarX' || type == 'stackedBar') data = dataInfo.xAxis.data;
|
|
|
|
return data.length;
|
|
}
|
|
|
|
function resizeChart()
|
|
{
|
|
var filterHeight = $('.main-col .cell #filterContent').height();
|
|
$('.main-col .cell #draw').css('height', 'calc(100% - ' + (filterHeight + 16) + 'px)')
|
|
|
|
if(echart)
|
|
{
|
|
echart.resize();
|
|
}
|
|
}
|
|
|
|
function waitForRepaint(callback)
|
|
{
|
|
window.requestAnimationFrame(function()
|
|
{
|
|
window.requestAnimationFrame(callback);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Init picker.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function initPicker($row, pickerName = 'picker-select', onready = false)
|
|
{
|
|
$row.find('.' + pickerName).picker(
|
|
{
|
|
maxDropHeight: pickerHeight,
|
|
onReady: function()
|
|
{
|
|
if(!onready) return;
|
|
if(!$row.find('.picker')) return;
|
|
if(window.getComputedStyle($row.find('.picker').find('.picker-selections')[0]).getPropertyValue('width') !== 'auto')
|
|
{
|
|
var pickerWidth = $row.find('.picker')[0].getBoundingClientRect().width;
|
|
$row.find('.picker').find('.picker-selections').css('width', pickerWidth);
|
|
}
|
|
}
|
|
});
|
|
$row.find("." + pickerName).each(function(index)
|
|
{
|
|
if($(this).hasClass('required')) $(this).siblings("div .picker").addClass('required');
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Init datepicker.
|
|
*
|
|
* @param object $obj
|
|
* @param function callback
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function initDatepicker($obj, callback)
|
|
{
|
|
$obj.find('.form-date').datepicker();
|
|
$obj.find('.form-datetime').datetimepicker();
|
|
|
|
if(typeof callback == 'function') callback($obj);
|
|
}
|
|
|
|
/**
|
|
* Attr date check.
|
|
*
|
|
* @param object $obj
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function attrDateCheck($obj)
|
|
{
|
|
$obj.find('.form-date').attr('onchange', 'checkDate(this, this.value)');
|
|
$obj.find('.form-datetime').attr('onchange', 'checkDate(this, this.value)');
|
|
}
|
|
|