TreeSeries.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. var SeriesModel = require("../../model/Series");
  2. var Tree = require("../../data/Tree");
  3. var _format = require("../../util/format");
  4. var encodeHTML = _format.encodeHTML;
  5. /**
  6. * @file Create data struct and define tree view's series model
  7. */
  8. var _default = SeriesModel.extend({
  9. type: 'series.tree',
  10. layoutInfo: null,
  11. // can support the position parameters 'left', 'top','right','bottom', 'width',
  12. // 'height' in the setOption() with 'merge' mode normal.
  13. layoutMode: 'box',
  14. /**
  15. * Init a tree data structure from data in option series
  16. * @param {Object} option the object used to config echarts view
  17. * @return {module:echarts/data/List} storage initial data
  18. */
  19. getInitialData: function (option) {
  20. //create an virtual root
  21. var root = {
  22. name: option.name,
  23. children: option.data
  24. };
  25. var leaves = option.leaves || {};
  26. var treeOption = {};
  27. treeOption.leaves = leaves;
  28. var tree = Tree.createTree(root, this, treeOption);
  29. var treeDepth = 0;
  30. tree.eachNode('preorder', function (node) {
  31. if (node.depth > treeDepth) {
  32. treeDepth = node.depth;
  33. }
  34. });
  35. var expandAndCollapse = option.expandAndCollapse;
  36. var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth;
  37. tree.root.eachNode('preorder', function (node) {
  38. var item = node.hostTree.data.getRawDataItem(node.dataIndex);
  39. node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth;
  40. });
  41. return tree.data;
  42. },
  43. /**
  44. * @override
  45. * @param {number} dataIndex
  46. */
  47. formatTooltip: function (dataIndex) {
  48. var tree = this.getData().tree;
  49. var realRoot = tree.root.children[0];
  50. var node = tree.getNodeByDataIndex(dataIndex);
  51. var value = node.getValue();
  52. var name = node.name;
  53. while (node && node !== realRoot) {
  54. name = node.parentNode.name + '.' + name;
  55. node = node.parentNode;
  56. }
  57. return encodeHTML(name + (isNaN(value) || value == null ? '' : ' : ' + value));
  58. },
  59. defaultOption: {
  60. zlevel: 0,
  61. z: 2,
  62. // the position of the whole view
  63. left: '12%',
  64. top: '12%',
  65. right: '12%',
  66. bottom: '12%',
  67. // the layout of the tree, two value can be selected, 'orthogonal' or 'radial'
  68. layout: 'orthogonal',
  69. // the orient of orthoginal layout, can be setted to 'horizontal' or 'vertical'
  70. orient: 'horizontal',
  71. symbol: 'emptyCircle',
  72. symbolSize: 7,
  73. expandAndCollapse: true,
  74. initialTreeDepth: 2,
  75. lineStyle: {
  76. normal: {
  77. color: '#ccc',
  78. width: 1.5,
  79. curveness: 0.5
  80. }
  81. },
  82. itemStyle: {
  83. normal: {
  84. color: 'lightsteelblue',
  85. borderColor: '#c23531',
  86. borderWidth: 1.5
  87. }
  88. },
  89. label: {
  90. normal: {
  91. show: true,
  92. color: '#555'
  93. }
  94. },
  95. leaves: {
  96. label: {
  97. normal: {
  98. show: true
  99. }
  100. }
  101. },
  102. animationEasing: 'linear',
  103. animationDuration: 700,
  104. animationDurationUpdate: 1000
  105. }
  106. });
  107. module.exports = _default;