backwardCompat.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. var _util = require("zrender/lib/core/util");
  2. var each = _util.each;
  3. var isArray = _util.isArray;
  4. var isObject = _util.isObject;
  5. var compatStyle = require("./helper/compatStyle");
  6. var _model = require("../util/model");
  7. var normalizeToArray = _model.normalizeToArray;
  8. // Compatitable with 2.0
  9. function get(opt, path) {
  10. path = path.split(',');
  11. var obj = opt;
  12. for (var i = 0; i < path.length; i++) {
  13. obj = obj && obj[path[i]];
  14. if (obj == null) {
  15. break;
  16. }
  17. }
  18. return obj;
  19. }
  20. function set(opt, path, val, overwrite) {
  21. path = path.split(',');
  22. var obj = opt;
  23. var key;
  24. for (var i = 0; i < path.length - 1; i++) {
  25. key = path[i];
  26. if (obj[key] == null) {
  27. obj[key] = {};
  28. }
  29. obj = obj[key];
  30. }
  31. if (overwrite || obj[path[i]] == null) {
  32. obj[path[i]] = val;
  33. }
  34. }
  35. function compatLayoutProperties(option) {
  36. each(LAYOUT_PROPERTIES, function (prop) {
  37. if (prop[0] in option && !(prop[1] in option)) {
  38. option[prop[1]] = option[prop[0]];
  39. }
  40. });
  41. }
  42. var LAYOUT_PROPERTIES = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']];
  43. var COMPATITABLE_COMPONENTS = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'];
  44. var COMPATITABLE_SERIES = ['bar', 'boxplot', 'candlestick', 'chord', 'effectScatter', 'funnel', 'gauge', 'lines', 'graph', 'heatmap', 'line', 'map', 'parallel', 'pie', 'radar', 'sankey', 'scatter', 'treemap'];
  45. function _default(option, isTheme) {
  46. compatStyle(option, isTheme); // Make sure series array for model initialization.
  47. option.series = normalizeToArray(option.series);
  48. each(option.series, function (seriesOpt) {
  49. if (!isObject(seriesOpt)) {
  50. return;
  51. }
  52. var seriesType = seriesOpt.type;
  53. if (seriesType === 'pie' || seriesType === 'gauge') {
  54. if (seriesOpt.clockWise != null) {
  55. seriesOpt.clockwise = seriesOpt.clockWise;
  56. }
  57. }
  58. if (seriesType === 'gauge') {
  59. var pointerColor = get(seriesOpt, 'pointer.color');
  60. pointerColor != null && set(seriesOpt, 'itemStyle.normal.color', pointerColor);
  61. }
  62. for (var i = 0; i < COMPATITABLE_SERIES.length; i++) {
  63. if (COMPATITABLE_SERIES[i] === seriesOpt.type) {
  64. compatLayoutProperties(seriesOpt);
  65. break;
  66. }
  67. }
  68. }); // dataRange has changed to visualMap
  69. if (option.dataRange) {
  70. option.visualMap = option.dataRange;
  71. }
  72. each(COMPATITABLE_COMPONENTS, function (componentName) {
  73. var options = option[componentName];
  74. if (options) {
  75. if (!isArray(options)) {
  76. options = [options];
  77. }
  78. each(options, function (option) {
  79. compatLayoutProperties(option);
  80. });
  81. }
  82. });
  83. }
  84. module.exports = _default;