setOption.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. describe('vsiaulMap_setOption', function() {
  2. var utHelper = window.utHelper;
  3. var testCase = utHelper.prepare([
  4. 'echarts/component/grid',
  5. 'echarts/chart/scatter',
  6. 'echarts/component/visualMap'
  7. ]);
  8. testCase.createChart()('defaultTargetController', function () {
  9. this.chart.setOption({
  10. xAxis: {},
  11. yAxis: {},
  12. series: [{type: 'scatter', data: [[12, 223]]}],
  13. visualMap: {
  14. inRange: {
  15. color: ['red', 'blue', 'yellow']
  16. }
  17. }
  18. });
  19. var option = this.chart.getOption();
  20. expect(option.visualMap.length).toEqual(1);
  21. expect(option.visualMap[0].inRange.color).toEqual(['red', 'blue', 'yellow']);
  22. expect(option.visualMap[0].target.inRange.color).toEqual(['red', 'blue', 'yellow']);
  23. expect(option.visualMap[0].controller.inRange.color).toEqual(['red', 'blue', 'yellow']);
  24. });
  25. testCase.createChart()('ec2ColorCompatiable', function () {
  26. this.chart.setOption({
  27. xAxis: {},
  28. yAxis: {},
  29. series: [{type: 'scatter', data: [[12, 223]]}],
  30. visualMap: {
  31. color: ['yellow', 'blue', 'red']
  32. }
  33. });
  34. var option = this.chart.getOption();
  35. expect(option.visualMap.length).toEqual(1);
  36. expect(option.visualMap[0].color).toEqual(['yellow', 'blue', 'red']);
  37. expect(option.visualMap[0].target.inRange.color).toEqual(['red', 'blue', 'yellow']);
  38. expect(option.visualMap[0].controller.inRange.color).toEqual(['red', 'blue', 'yellow']);
  39. });
  40. testCase.createChart()('remainVisualProp', function () {
  41. this.chart.setOption({
  42. xAxis: {},
  43. yAxis: {},
  44. series: [{type: 'scatter', data: [[12, 223]]}],
  45. visualMap: {
  46. inRange: {
  47. color: ['red', 'blue', 'yellow']
  48. }
  49. }
  50. });
  51. this.chart.setOption({
  52. visualMap: {}
  53. });
  54. expectTheSame(this.chart.getOption());
  55. this.chart.setOption({
  56. series: [{data: [[44, 55]]}] // visualMap depends series
  57. });
  58. expectTheSame(this.chart.getOption());
  59. function expectTheSame(option) {
  60. expect(option.visualMap.length).toEqual(1);
  61. expect(option.visualMap[0].inRange.color).toEqual(['red', 'blue', 'yellow']);
  62. expect(option.visualMap[0].target.inRange.color).toEqual(['red', 'blue', 'yellow']);
  63. expect(option.visualMap[0].controller.inRange.color).toEqual(['red', 'blue', 'yellow']);
  64. }
  65. });
  66. testCase.createChart()('eraseAllVisualProps_notRelative', function () {
  67. this.chart.setOption({
  68. xAxis: {},
  69. yAxis: {},
  70. series: [{type: 'scatter', data: [[12, 223]]}],
  71. visualMap: {
  72. inRange: {
  73. color: ['red', 'blue', 'yellow'],
  74. symbolSize: [0.3, 0.5]
  75. }
  76. }
  77. });
  78. var option = this.chart.getOption();
  79. this.chart.setOption({
  80. visualMap: {
  81. inRange: {
  82. symbolSize: [0.4, 0.6]
  83. }
  84. }
  85. });
  86. var option = this.chart.getOption();
  87. expect(option.visualMap.length).toEqual(1);
  88. expect(option.visualMap[0].inRange.hasOwnProperty('color')).toEqual(false);
  89. expect(option.visualMap[0].target.inRange.hasOwnProperty('color')).toEqual(false);
  90. expect(option.visualMap[0].controller.inRange.hasOwnProperty('color')).toEqual(false);
  91. expect(option.visualMap[0].inRange.symbolSize).toEqual([0.4, 0.6]);
  92. expect(option.visualMap[0].target.inRange.symbolSize).toEqual([0.4, 0.6]);
  93. // Do not compare controller.inRange.symbolSize, which will be amplified to controller size.
  94. // expect(option.visualMap[0].controller.inRange.symbolSize).toEqual([?, ?]);
  95. });
  96. testCase.createChart()('eraseAllVisualProps_reletive', function () {
  97. this.chart.setOption({
  98. xAxis: {},
  99. yAxis: {},
  100. series: [{type: 'scatter', data: [[12, 223]]}],
  101. visualMap: {
  102. inRange: {
  103. color: ['red', 'blue', 'yellow'],
  104. colorAlpha: [0.3, 0.5]
  105. }
  106. }
  107. });
  108. this.chart.setOption({
  109. visualMap: {
  110. inRange: {
  111. colorAlpha: [0.4, 0.6]
  112. }
  113. }
  114. });
  115. var option = this.chart.getOption();
  116. expect(option.visualMap.length).toEqual(1);
  117. expect(option.visualMap[0].inRange.hasOwnProperty('color')).toEqual(false);
  118. expect(option.visualMap[0].target.inRange.hasOwnProperty('color')).toEqual(false);
  119. expect(option.visualMap[0].controller.inRange.hasOwnProperty('color')).toEqual(false);
  120. expect(option.visualMap[0].inRange.colorAlpha).toEqual([0.4, 0.6]);
  121. expect(option.visualMap[0].target.inRange.colorAlpha).toEqual([0.4, 0.6]);
  122. expect(option.visualMap[0].controller.inRange.colorAlpha).toEqual([0.4, 0.6]);
  123. this.chart.setOption({
  124. visualMap: {
  125. color: ['red', 'blue', 'green']
  126. }
  127. });
  128. var option = this.chart.getOption();
  129. expect(option.visualMap.length).toEqual(1);
  130. expect(option.visualMap[0].target.inRange.hasOwnProperty('colorAlpha')).toEqual(false);
  131. expect(option.visualMap[0].controller.inRange.hasOwnProperty('colorAlpha')).toEqual(false);
  132. expect(option.visualMap[0].target.inRange.color).toEqual(['green', 'blue', 'red']);
  133. expect(option.visualMap[0].controller.inRange.color).toEqual(['green', 'blue', 'red']);
  134. this.chart.setOption({
  135. visualMap: {
  136. controller: {
  137. outOfRange: {
  138. symbol: ['diamond']
  139. }
  140. }
  141. }
  142. });
  143. var option = this.chart.getOption();
  144. expect(option.visualMap.length).toEqual(1);
  145. expect(!option.visualMap[0].target.inRange).toEqual(true);
  146. expect(option.visualMap[0].controller.outOfRange.symbol).toEqual(['diamond']);
  147. });
  148. testCase.createChart()('setOpacityWhenUseColor', function () {
  149. this.chart.setOption({
  150. xAxis: {},
  151. yAxis: {},
  152. series: [{type: 'scatter', data: [[12, 223]]}],
  153. visualMap: {
  154. inRange: {
  155. color: ['red', 'blue', 'yellow']
  156. }
  157. }
  158. });
  159. var option = this.chart.getOption();
  160. expect(!!option.visualMap[0].target.outOfRange.opacity).toEqual(true);
  161. });
  162. testCase.createChart(2)('normalizeVisualRange', function () {
  163. this.charts[0].setOption({
  164. xAxis: {},
  165. yAxis: {},
  166. series: [{type: 'scatter', data: [[12, 223]]}],
  167. visualMap: [
  168. {type: 'continuous', inRange: {color: 'red'}},
  169. {type: 'continuous', inRange: {opacity: 0.4}},
  170. {type: 'piecewise', inRange: {color: 'red'}},
  171. {type: 'piecewise', inRange: {opacity: 0.4}},
  172. {type: 'piecewise', inRange: {symbol: 'diamond'}},
  173. {type: 'piecewise', inRange: {color: 'red'}, categories: ['a', 'b']},
  174. {type: 'piecewise', inRange: {color: {a: 'red'}}, categories: ['a', 'b']},
  175. {type: 'piecewise', inRange: {opacity: 0.4}, categories: ['a', 'b']}
  176. ]
  177. });
  178. var ecModel = this.charts[0].getModel();
  179. function getVisual(idx, visualType) {
  180. return ecModel.getComponent('visualMap', idx)
  181. .targetVisuals.inRange[visualType].option.visual;
  182. }
  183. function makeCategoryVisual(val) {
  184. var CATEGORY_DEFAULT_VISUAL_INDEX = -1;
  185. var arr = [];
  186. if (val != null) {
  187. arr[CATEGORY_DEFAULT_VISUAL_INDEX] = val;
  188. }
  189. for (var i = 1; i < arguments.length; i++) {
  190. arr.push(arguments[i]);
  191. }
  192. return arr;
  193. }
  194. expect(getVisual(0, 'color')).toEqual(['red']);
  195. expect(getVisual(1, 'opacity')).toEqual([0.4, 0.4]);
  196. expect(getVisual(2, 'color')).toEqual(['red']);
  197. expect(getVisual(3, 'opacity')).toEqual([0.4, 0.4]);
  198. expect(getVisual(4, 'symbol')).toEqual(['diamond']);
  199. expect(getVisual(5, 'color')).toEqual(makeCategoryVisual('red'));
  200. expect(getVisual(6, 'color')).toEqual(makeCategoryVisual(null, 'red'));
  201. expect(getVisual(7, 'opacity')).toEqual(makeCategoryVisual(0.4));
  202. });
  203. });