ecData.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /**
  2. * echarts通用私有数据服务
  3. *
  4. * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。
  5. * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)
  6. *
  7. */
  8. define(function() {
  9. /**
  10. * 打包私有数据
  11. *
  12. * @param {shape} shape 修改目标
  13. * @param {Object} series
  14. * @param {number} seriesIndex
  15. * @param {number | Object} data
  16. * @param {number} dataIndex
  17. * @param {*=} special
  18. * @param {*=} special2
  19. */
  20. function pack(
  21. shape, series, seriesIndex, data, dataIndex, name, special, special2
  22. ) {
  23. var value;
  24. if (typeof data != 'undefined') {
  25. value = data.value == null
  26. ? data
  27. : data.value;
  28. }
  29. shape._echartsData = {
  30. '_series' : series,
  31. '_seriesIndex' : seriesIndex,
  32. '_data' : data,
  33. '_dataIndex' : dataIndex,
  34. '_name' : name,
  35. '_value' : value,
  36. '_special' : special,
  37. '_special2' : special2
  38. };
  39. return shape._echartsData;
  40. }
  41. /**
  42. * 从私有数据中获取特定项
  43. * @param {shape} shape
  44. * @param {string} key
  45. */
  46. function get(shape, key) {
  47. var data = shape._echartsData;
  48. if (!key) {
  49. return data;
  50. }
  51. switch (key) {
  52. case 'series' :
  53. case 'seriesIndex' :
  54. case 'data' :
  55. case 'dataIndex' :
  56. case 'name' :
  57. case 'value' :
  58. case 'special' :
  59. case 'special2' :
  60. return data && data['_' + key];
  61. }
  62. return null;
  63. }
  64. /**
  65. * 修改私有数据中获取特定项
  66. * @param {shape} shape
  67. * @param {string} key
  68. * @param {*} value
  69. */
  70. function set(shape, key, value) {
  71. shape._echartsData = shape._echartsData || {};
  72. switch (key) {
  73. case 'series' : // 当前系列值
  74. case 'seriesIndex' : // 系列数组位置索引
  75. case 'data' : // 当前数据值
  76. case 'dataIndex' : // 数据数组位置索引
  77. case 'name' :
  78. case 'value' :
  79. case 'special' :
  80. case 'special2' :
  81. shape._echartsData['_' + key] = value;
  82. break;
  83. }
  84. }
  85. /**
  86. * 私有数据克隆,把source拷贝到target上
  87. * @param {shape} source 源
  88. * @param {shape} target 目标
  89. */
  90. function clone(source, target) {
  91. target._echartsData = {
  92. '_series' : source._echartsData._series,
  93. '_seriesIndex' : source._echartsData._seriesIndex,
  94. '_data' : source._echartsData._data,
  95. '_dataIndex' : source._echartsData._dataIndex,
  96. '_name' : source._echartsData._name,
  97. '_value' : source._echartsData._value,
  98. '_special' : source._echartsData._special,
  99. '_special2' : source._echartsData._special2
  100. };
  101. }
  102. return {
  103. pack : pack,
  104. set : set,
  105. get : get,
  106. clone : clone
  107. };
  108. });