1 | import { __extends, __values } from "tslib";
|
2 | import { FIELD_ORIGIN } from '../constant';
|
3 | import Geometry from './base';
|
4 | import Element from './element';
|
5 |
|
6 | import './shape/line';
|
7 | import { isModelChange } from './util/is-model-change';
|
8 | import { diff } from './util/diff';
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | var Path = (function (_super) {
|
14 | __extends(Path, _super);
|
15 | function Path(cfg) {
|
16 | var _this = _super.call(this, cfg) || this;
|
17 | _this.type = 'path';
|
18 | _this.shapeType = 'line';
|
19 | var _a = cfg.connectNulls, connectNulls = _a === void 0 ? false : _a, _b = cfg.showSinglePoint, showSinglePoint = _b === void 0 ? true : _b;
|
20 | _this.connectNulls = connectNulls;
|
21 | _this.showSinglePoint = showSinglePoint;
|
22 | return _this;
|
23 | }
|
24 | |
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | Path.prototype.updateElements = function (mappingDataArray, isUpdate) {
|
31 | var e_1, _a, e_2, _b, e_3, _c;
|
32 | if (isUpdate === void 0) { isUpdate = false; }
|
33 |
|
34 | var keyData = new Map();
|
35 | var keyIndex = new Map();
|
36 | var keys = [];
|
37 | var index = 0;
|
38 | for (var i = 0; i < mappingDataArray.length; i++) {
|
39 | var mappingData = mappingDataArray[i];
|
40 | var key = this.getElementId(mappingData);
|
41 | keys.push(key);
|
42 | keyData.set(key, mappingData);
|
43 | keyIndex.set(key, index);
|
44 | index++;
|
45 | }
|
46 | this.elements = new Array(index);
|
47 | var _d = diff(this.lastElementsMap, keys), added = _d.added, updated = _d.updated, removed = _d.removed;
|
48 | try {
|
49 | for (var added_1 = __values(added), added_1_1 = added_1.next(); !added_1_1.done; added_1_1 = added_1.next()) {
|
50 | var key = added_1_1.value;
|
51 | var mappingData = keyData.get(key);
|
52 | var shapeFactory = this.getShapeFactory();
|
53 | var shapeCfg = this.getShapeInfo(mappingData);
|
54 | var i = keyIndex.get(key);
|
55 | var element = new Element({
|
56 | shapeFactory: shapeFactory,
|
57 | container: this.container,
|
58 | offscreenGroup: this.getOffscreenGroup(),
|
59 | elementIndex: i,
|
60 | });
|
61 | element.geometry = this;
|
62 | element.animate = this.animateOption;
|
63 | element.draw(shapeCfg, isUpdate);
|
64 | this.elementsMap[key] = element;
|
65 | this.elements[i] = element;
|
66 | }
|
67 | }
|
68 | catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
69 | finally {
|
70 | try {
|
71 | if (added_1_1 && !added_1_1.done && (_a = added_1.return)) _a.call(added_1);
|
72 | }
|
73 | finally { if (e_1) throw e_1.error; }
|
74 | }
|
75 | try {
|
76 | for (var updated_1 = __values(updated), updated_1_1 = updated_1.next(); !updated_1_1.done; updated_1_1 = updated_1.next()) {
|
77 | var key = updated_1_1.value;
|
78 | var mappingData = keyData.get(key);
|
79 | var element = this.lastElementsMap[key];
|
80 | var i = keyIndex.get(key);
|
81 | var shapeCfg = this.getShapeInfo(mappingData);
|
82 | var preShapeCfg = element.getModel();
|
83 | if (this.isCoordinateChanged || isModelChange(preShapeCfg, shapeCfg)) {
|
84 | element.animate = this.animateOption;
|
85 |
|
86 | element.update(shapeCfg);
|
87 | }
|
88 | this.elementsMap[key] = element;
|
89 | this.elements[i] = element;
|
90 | }
|
91 | }
|
92 | catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
93 | finally {
|
94 | try {
|
95 | if (updated_1_1 && !updated_1_1.done && (_b = updated_1.return)) _b.call(updated_1);
|
96 | }
|
97 | finally { if (e_2) throw e_2.error; }
|
98 | }
|
99 | try {
|
100 | for (var removed_1 = __values(removed), removed_1_1 = removed_1.next(); !removed_1_1.done; removed_1_1 = removed_1.next()) {
|
101 | var key = removed_1_1.value;
|
102 | var element = this.lastElementsMap[key];
|
103 |
|
104 | element.animate = this.animateOption;
|
105 | element.destroy();
|
106 | }
|
107 | }
|
108 | catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
109 | finally {
|
110 | try {
|
111 | if (removed_1_1 && !removed_1_1.done && (_c = removed_1.return)) _c.call(removed_1);
|
112 | }
|
113 | finally { if (e_3) throw e_3.error; }
|
114 | }
|
115 | };
|
116 | |
117 |
|
118 |
|
119 |
|
120 | Path.prototype.getPointsAndData = function (mappingData) {
|
121 | var points = [];
|
122 | var data = [];
|
123 | for (var i = 0, len = mappingData.length; i < len; i++) {
|
124 | var obj = mappingData[i];
|
125 | points.push({
|
126 | x: obj.x,
|
127 | y: obj.y,
|
128 | });
|
129 | data.push(obj[FIELD_ORIGIN]);
|
130 | }
|
131 | return {
|
132 | points: points,
|
133 | data: data,
|
134 | };
|
135 | };
|
136 | Path.prototype.getShapeInfo = function (mappingData) {
|
137 | var shapeCfg = this.getDrawCfg(mappingData[0]);
|
138 | var _a = this.getPointsAndData(mappingData), points = _a.points, data = _a.data;
|
139 | shapeCfg.mappingData = mappingData;
|
140 | shapeCfg.data = data;
|
141 | shapeCfg.isStack = !!this.getAdjust('stack');
|
142 | shapeCfg.points = points;
|
143 | shapeCfg.connectNulls = this.connectNulls;
|
144 | shapeCfg.showSinglePoint = this.showSinglePoint;
|
145 | return shapeCfg;
|
146 | };
|
147 | return Path;
|
148 | }(Geometry));
|
149 | export default Path;
|
150 |
|
\ | No newline at end of file |