| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /**
- * 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)');
- }
|