nnnjjj123
2020-11-17 1b2c1edb61190eeb19f465ff031eaa3b2a1b8dbc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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
        });
      }
 
    });
  });