define([ 'dojo/_base/declare' ], function(declare) { return declare([], { constructor: function(option) { this.chart = option.chart; this.chartUtils = option.chartUtils; }, produceOption: function(option, config) { option = this.chartUtils.preProcessConfig(option, config); if (config.shape === 'curved') { option = this.setCurvedGaugeOption(option, config); } else if (config.shape === 'vertical') { option = this.setVerticalGaugeOption(option, config); } else if (config.shape === 'horizontal') { option = this.setHorizontalGaugeOption(option, config); } else { console.error('invaild gauge shape'); } option = this.chartUtils.settingLabelColor(option, config); option = this.chartUtils.settingValueStyle(option, config); return option; }, setCurvedGaugeOption: function(option, config) { option = this.chartUtils.initCurvedOption(option); option = this.chartUtils.settingCurvedSeries(option, config); option = this.chartUtils.settingCurvedTooltip(option, config); option = this.chartUtils.settingCurvedGaugeColor(option, config); option = this.chartUtils.settingCurvedTargets(option, config); return option; }, setVerticalGaugeOption: function(option, config) { option = this.chartUtils.initVerticalOption(option, this.vertical); option = this.chartUtils.setVerticalGrid(option); option = this.chartUtils.settingVerticalAxis(option, config); option = this.chartUtils.settingVerticalSeries(option, config); option = this.chartUtils.settingGaugeColumnColor(option, config); option = this.chartUtils.settingVerticalGaugeRTL(option, config); return option; }, setHorizontalGaugeOption: function(option, config) { option = this.chartUtils.initHorizontalOption(option, this.horizontal); option = this.chartUtils.setHorizontalGrid(option); option = this.chartUtils.settingHorizontalAxis(option, config); option = this.chartUtils.settingHorizontalSeries(option, config); option = this.chartUtils.settingGaugeColumnColor(option, config); option = this.chartUtils.settingHorizontalGaugeRTL(option, config); return option; }, //-------------dynamic update graphic---------- resetGraphic: function(config) { if (config.shape !== 'horizontal' && config.shape !== 'vertical') { return; } var graphic = this.chartUtils.createTargetGraphic(config); this.clearGraphic(); this.chart.setOption({ graphic: graphic }); this.cacheGraphic = null; this.cacheGraphic = graphic; }, clearGraphic: function() { if (this.cacheGraphic) { this.cacheGraphic.forEach(function(cacheGraph) { cacheGraph.$action = 'remove'; }); this.chart.setOption({ graphic: this.cacheGraphic }); } }, //-------------dynamic update grid---------- resetGrid: function(config) { if (config.shape !== 'horizontal' && config.shape !== 'vertical') { return; } var grid = this.chartUtils.updateGridForVerticalGauge(config); if (!grid) { return; } this.chart.setOption({ grid: grid }); } }); });