@visactor/vgrammar-core 0.11.0-alpha.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/component/label.js.map +1 -1
- package/cjs/graph/animation/animator.js +3 -4
- package/cjs/graph/animation/animator.js.map +1 -1
- package/cjs/graph/attributes/line.d.ts +2 -0
- package/cjs/graph/attributes/line.js +38 -5
- package/cjs/graph/attributes/line.js.map +1 -1
- package/cjs/graph/element.js +15 -6
- package/cjs/graph/element.js.map +1 -1
- package/cjs/graph/enums.d.ts +2 -1
- package/cjs/graph/enums.js +1 -1
- package/cjs/graph/enums.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interactions/brush-filter.js +1 -2
- package/cjs/interactions/crosshair.js +2 -2
- package/cjs/interactions/crosshair.js.map +1 -1
- package/cjs/interactions/dimension-tooltip.js +2 -2
- package/cjs/interactions/dimension-tooltip.js.map +1 -1
- package/cjs/interactions/element-active.js +2 -2
- package/cjs/interactions/element-active.js.map +1 -1
- package/cjs/interactions/element-highlight-by-group.js +4 -3
- package/cjs/interactions/element-highlight-by-group.js.map +1 -1
- package/cjs/interactions/element-highlight-by-key.js +2 -2
- package/cjs/interactions/element-highlight-by-key.js.map +1 -1
- package/cjs/interactions/element-highlight-by-name.js +2 -2
- package/cjs/interactions/element-highlight-by-name.js.map +1 -1
- package/cjs/interactions/element-highlight.d.ts +5 -2
- package/cjs/interactions/element-highlight.js +10 -25
- package/cjs/interactions/element-highlight.js.map +1 -1
- package/cjs/interactions/element-select.d.ts +6 -3
- package/cjs/interactions/element-select.js +26 -34
- package/cjs/interactions/element-select.js.map +1 -1
- package/cjs/interactions/filter.js +1 -1
- package/cjs/interactions/filter.js.map +1 -1
- package/cjs/interactions/fish-eye.js +3 -3
- package/cjs/interactions/fish-eye.js.map +1 -1
- package/cjs/interactions/index.js +5 -2
- package/cjs/interactions/index.js.map +1 -1
- package/cjs/interactions/legend-filter.js +1 -1
- package/cjs/interactions/player-filter.js +1 -1
- package/cjs/interactions/roll-up.js +3 -3
- package/cjs/interactions/roll-up.js.map +1 -1
- package/cjs/interactions/scrollbar-filter.js +1 -1
- package/cjs/interactions/slider-filter.js +1 -1
- package/cjs/interactions/toggle-state-mixin.d.ts +8 -0
- package/cjs/interactions/toggle-state-mixin.js +30 -0
- package/cjs/interactions/toggle-state-mixin.js.map +1 -0
- package/cjs/interactions/tooltip.js +3 -3
- package/cjs/interactions/tooltip.js.map +1 -1
- package/cjs/interactions/utils.d.ts +2 -1
- package/cjs/interactions/utils.js +14 -1
- package/cjs/interactions/utils.js.map +1 -1
- package/cjs/interactions/view-navigation-base.js +1 -1
- package/cjs/interactions/view-navigation-base.js.map +1 -1
- package/cjs/interactions/view-roam.js +3 -3
- package/cjs/interactions/view-roam.js.map +1 -1
- package/cjs/interactions/view-zoom.js +2 -2
- package/cjs/interactions/view-zoom.js.map +1 -1
- package/cjs/parse/coordinate.js +1 -1
- package/cjs/parse/event.js +1 -1
- package/cjs/parse/mark.js +1 -1
- package/cjs/parse/option.js +1 -1
- package/cjs/parse/scale.js +2 -1
- package/cjs/parse/transform.js +1 -1
- package/cjs/parse/util.js +1 -1
- package/cjs/parse/view.js +1 -1
- package/cjs/transforms/data/sampling.js.map +1 -1
- package/cjs/types/dataflow.d.ts +1 -2
- package/cjs/types/dataflow.js.map +1 -1
- package/cjs/types/grammar.d.ts +0 -1
- package/cjs/types/grammar.js.map +1 -1
- package/cjs/types/interaction.d.ts +14 -10
- package/cjs/types/interaction.js.map +1 -1
- package/cjs/types/mark.d.ts +1 -1
- package/cjs/types/mark.js.map +1 -1
- package/cjs/types/plot.d.ts +0 -1
- package/cjs/types/plot.js.map +1 -1
- package/cjs/types/transform.d.ts +1 -1
- package/cjs/types/transform.js.map +1 -1
- package/cjs/types/view.d.ts +2 -5
- package/cjs/types/view.js.map +1 -1
- package/cjs/util/data.d.ts +0 -1
- package/cjs/util/data.js +1 -37
- package/cjs/util/data.js.map +1 -1
- package/cjs/view/View.d.ts +2 -10
- package/cjs/view/View.js +20 -103
- package/cjs/view/View.js.map +1 -1
- package/cjs/view/data.d.ts +1 -2
- package/cjs/view/data.js +7 -49
- package/cjs/view/data.js.map +1 -1
- package/cjs/view/dataflow.d.ts +1 -6
- package/cjs/view/dataflow.js +7 -72
- package/cjs/view/dataflow.js.map +1 -1
- package/cjs/view/grammar-base.d.ts +3 -6
- package/cjs/view/grammar-base.js +0 -46
- package/cjs/view/grammar-base.js.map +1 -1
- package/cjs/view/mark.d.ts +1 -2
- package/cjs/view/mark.js +9 -38
- package/cjs/view/mark.js.map +1 -1
- package/es/component/label.js.map +1 -1
- package/es/graph/animation/animator.js +2 -3
- package/es/graph/animation/animator.js.map +1 -1
- package/es/graph/attributes/line.d.ts +2 -0
- package/es/graph/attributes/line.js +34 -5
- package/es/graph/attributes/line.js.map +1 -1
- package/es/graph/element.js +17 -8
- package/es/graph/element.js.map +1 -1
- package/es/graph/enums.d.ts +2 -1
- package/es/graph/enums.js +1 -1
- package/es/graph/enums.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/interactions/crosshair.js +2 -2
- package/es/interactions/crosshair.js.map +1 -1
- package/es/interactions/dimension-tooltip.js +2 -2
- package/es/interactions/dimension-tooltip.js.map +1 -1
- package/es/interactions/element-active.js +2 -2
- package/es/interactions/element-active.js.map +1 -1
- package/es/interactions/element-highlight-by-group.js +2 -2
- package/es/interactions/element-highlight-by-group.js.map +1 -1
- package/es/interactions/element-highlight-by-key.js +2 -2
- package/es/interactions/element-highlight-by-key.js.map +1 -1
- package/es/interactions/element-highlight-by-name.js +2 -2
- package/es/interactions/element-highlight-by-name.js.map +1 -1
- package/es/interactions/element-highlight.d.ts +5 -2
- package/es/interactions/element-highlight.js +11 -24
- package/es/interactions/element-highlight.js.map +1 -1
- package/es/interactions/element-select.d.ts +6 -3
- package/es/interactions/element-select.js +25 -31
- package/es/interactions/element-select.js.map +1 -1
- package/es/interactions/filter.js +1 -1
- package/es/interactions/filter.js.map +1 -1
- package/es/interactions/fish-eye.js +3 -3
- package/es/interactions/fish-eye.js.map +1 -1
- package/es/interactions/index.js +4 -2
- package/es/interactions/index.js.map +1 -1
- package/es/interactions/roll-up.js +2 -2
- package/es/interactions/roll-up.js.map +1 -1
- package/es/interactions/toggle-state-mixin.d.ts +8 -0
- package/es/interactions/toggle-state-mixin.js +22 -0
- package/es/interactions/toggle-state-mixin.js.map +1 -0
- package/es/interactions/tooltip.js +2 -2
- package/es/interactions/tooltip.js.map +1 -1
- package/es/interactions/utils.d.ts +2 -1
- package/es/interactions/utils.js +12 -1
- package/es/interactions/utils.js.map +1 -1
- package/es/interactions/view-navigation-base.js +1 -1
- package/es/interactions/view-navigation-base.js.map +1 -1
- package/es/interactions/view-roam.js +3 -3
- package/es/interactions/view-roam.js.map +1 -1
- package/es/interactions/view-zoom.js +2 -2
- package/es/interactions/view-zoom.js.map +1 -1
- package/es/transforms/data/sampling.js.map +1 -1
- package/es/types/dataflow.d.ts +1 -2
- package/es/types/dataflow.js.map +1 -1
- package/es/types/grammar.d.ts +0 -1
- package/es/types/grammar.js.map +1 -1
- package/es/types/interaction.d.ts +14 -10
- package/es/types/interaction.js.map +1 -1
- package/es/types/mark.d.ts +1 -1
- package/es/types/mark.js.map +1 -1
- package/es/types/plot.d.ts +0 -1
- package/es/types/plot.js.map +1 -1
- package/es/types/transform.d.ts +1 -1
- package/es/types/transform.js.map +1 -1
- package/es/types/view.d.ts +2 -5
- package/es/types/view.js.map +1 -1
- package/es/util/data.d.ts +0 -1
- package/es/util/data.js +0 -34
- package/es/util/data.js.map +1 -1
- package/es/view/View.d.ts +2 -10
- package/es/view/View.js +19 -103
- package/es/view/View.js.map +1 -1
- package/es/view/data.d.ts +1 -2
- package/es/view/data.js +8 -49
- package/es/view/data.js.map +1 -1
- package/es/view/dataflow.d.ts +1 -6
- package/es/view/dataflow.js +7 -72
- package/es/view/dataflow.js.map +1 -1
- package/es/view/grammar-base.d.ts +3 -6
- package/es/view/grammar-base.js +0 -45
- package/es/view/grammar-base.js.map +1 -1
- package/es/view/mark.d.ts +1 -2
- package/es/view/mark.js +8 -39
- package/es/view/mark.js.map +1 -1
- package/package.json +6 -6
package/cjs/view/data.js
CHANGED
|
@@ -1,31 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
|
|
4
|
-
return new (P || (P = Promise))((function(resolve, reject) {
|
|
5
|
-
function fulfilled(value) {
|
|
6
|
-
try {
|
|
7
|
-
step(generator.next(value));
|
|
8
|
-
} catch (e) {
|
|
9
|
-
reject(e);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
function rejected(value) {
|
|
13
|
-
try {
|
|
14
|
-
step(generator.throw(value));
|
|
15
|
-
} catch (e) {
|
|
16
|
-
reject(e);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function step(result) {
|
|
20
|
-
var value;
|
|
21
|
-
result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
|
|
22
|
-
resolve(value);
|
|
23
|
-
}))).then(fulfilled, rejected);
|
|
24
|
-
}
|
|
25
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
26
|
-
}));
|
|
27
|
-
};
|
|
28
|
-
|
|
29
3
|
Object.defineProperty(exports, "__esModule", {
|
|
30
4
|
value: !0
|
|
31
5
|
}), exports.Data = void 0;
|
|
@@ -39,22 +13,8 @@ class Data extends grammar_base_1.GrammarBase {
|
|
|
39
13
|
const format = (0, util_1.invokeParameterFunctionType)(options.format, this.parameters());
|
|
40
14
|
return this._input = (0, data_1.parseFormat)(options.values, format), this._input;
|
|
41
15
|
}, this.load = options => {
|
|
42
|
-
var _a;
|
|
43
16
|
if (options.values) return this.ingest(options);
|
|
44
|
-
|
|
45
|
-
util_1.invokeParameterFunctionType)(options.format, this.parameters())) && void 0 !== _a ? _a : {
|
|
46
|
-
type: "json"
|
|
47
|
-
};
|
|
48
|
-
return (0, data_1.load)(url).then((data => this.ingest({
|
|
49
|
-
values: data,
|
|
50
|
-
format: format
|
|
51
|
-
})));
|
|
52
|
-
}, this.relay = options => options[0], this.evaluateSync = (upstream, parameters) => {
|
|
53
|
-
this.view.emit(enums_1.HOOK_EVENT.BEFORE_EVALUATE_DATA);
|
|
54
|
-
const tasks = this._isLoaded ? this.transforms : this._loadTasks.concat(this.transforms), values = this.evaluateTransformSync(tasks, this.grammarSource ? upstream : this._input, parameters), filteredValues = this._evaluateFilter(values, parameters);
|
|
55
|
-
return this.setValues(filteredValues), this._isLoaded = !0, this.view.emit(enums_1.HOOK_EVENT.AFTER_EVALUATE_DATA),
|
|
56
|
-
this;
|
|
57
|
-
}, this._loadTasks = [], (0, vutils_1.isNil)(values) || this.values(values, format);
|
|
17
|
+
}, this.relay = options => options[0], this._loadTasks = [], (0, vutils_1.isNil)(values) || this.values(values, format);
|
|
58
18
|
}
|
|
59
19
|
parse(spec) {
|
|
60
20
|
return super.parse(spec), this._isLoaded = !1, this.source(spec.source, spec.format, !1),
|
|
@@ -101,14 +61,12 @@ class Data extends grammar_base_1.GrammarBase {
|
|
|
101
61
|
};
|
|
102
62
|
}
|
|
103
63
|
evaluate(upstream, parameters) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
this;
|
|
111
|
-
}));
|
|
64
|
+
this.view.emit(enums_1.HOOK_EVENT.BEFORE_EVALUATE_DATA);
|
|
65
|
+
const tasks = this._isLoaded ? this.transforms : this._loadTasks.concat(this.transforms);
|
|
66
|
+
this.grammarSource && (this._input = upstream);
|
|
67
|
+
const values = this.evaluateTransform(tasks, this._input, parameters), filteredValues = this._evaluateFilter(values, parameters);
|
|
68
|
+
return this.setValues(filteredValues), this._isLoaded = !0, this.view.emit(enums_1.HOOK_EVENT.AFTER_EVALUATE_DATA),
|
|
69
|
+
this;
|
|
112
70
|
}
|
|
113
71
|
output() {
|
|
114
72
|
return this._values;
|
package/cjs/view/data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/view/data.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAgD;AAahD,iDAA6C;AAC7C,wCAA0F;AAC1F,kDAAwD;AAExD,0CAA4C;AAC5C,uCAAiD;AAEjD,MAAa,IAAK,SAAQ,0BAAW;IAiBnC,YAAY,IAAW,EAAE,MAAY,EAAE,MAAuB;QAC5D,KAAK,CAAC,IAAI,CAAC,CAAC;QAjBL,gBAAW,GAAgB,MAAM,CAAC;QAEjC,SAAI,GAAa,EAAE,CAAC;QAEtB,eAAU,GAAG,wBAAwB,IAAI,CAAC,GAAG,EAAE,CAAC;QAShD,eAAU,GAAmB,EAAE,CAAC;QAChC,iBAAY,GAAkB,EAAE,CAAC;QA0FjC,WAAM,GAAG,CAAC,OAAyE,EAAE,EAAE;YAC7F,MAAM,MAAM,GAAG,IAAA,kCAA2B,EAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,MAAM,GAAG,IAAA,kBAAW,EAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC,CAAC;QAEM,SAAI,GAAG,CACb,OAEmE,EACnE,EAAE;;YACF,IAAK,OAA2E,CAAC,MAAM,EAAE;gBACvF,OAAO,IAAI,CAAC,MAAM,CAAC,OAA0E,CAAC,CAAC;aAChG;YACD,MAAM,GAAG,GAAG,IAAA,kCAA2B,EAAE,OAAkD,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAEpH,MAAM,MAAM,GAAG,MAAA,IAAA,kCAA2B,EAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,mCAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAClG,OAAO,IAAA,WAAI,EAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC;QAEM,UAAK,GAAG,CAAC,OAAc,EAAE,EAAE;YACjC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC;QAmBF,iBAAY,GAAG,CAAC,QAAa,EAAE,UAAe,EAAE,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAU,CAAC,oBAAoB,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEzF,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC1G,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAChE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YAE/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAU,CAAC,mBAAmB,CAAC,CAAC;YAE/C,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QA5IA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAErB,IAAI,CAAC,IAAA,cAAK,EAAC,MAAM,CAAC,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAE7B;IACH,CAAC;IAED,KAAK,CAAC,IAAc;QAClB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,IAAc;QACpC,MAAM,IAAI,GAAmB,EAAE,CAAC;QAChC,MAAM,UAAU,GAAmB,EAAE,CAAC;QAEtC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,wBAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACtB;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,SAAS,GAAG,IAAA,wBAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/D,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACtB;YAED,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,YAAY,EAAE,IAAI;gBAClB,OAAO,EAAE;oBACP,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB;aACF,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,CAAC,GAAG,EAAE;YACnB,MAAM,MAAM,GAAG,IAAA,wBAAiB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACnB;YAED,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,IAAI,CAAC,IAAI;gBACpB,OAAO,EAAE;oBACP,GAAG,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,CAAC,GAAG;oBACvB,MAAM,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,CAAC,MAAM;iBACjC;aACF,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE;YACtB,MAAM,YAAY,GAAY,EAAE,CAAC;YAEjC,IAAA,cAAK,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACpC,MAAM,UAAU,GAAG,IAAA,gBAAS,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAEpF,IAAI,UAAU,EAAE;oBACd,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACtB,YAAY,CAAC,IAAI,CAAC,UAAmB,CAAC,CAAC;iBACxC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,YAAY,CAAC,MAAM,EAAE;gBACvB,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,OAAO;oBACb,SAAS,EAAE,IAAI,CAAC,KAAK;oBACrB,OAAO,EAAE,YAAY;iBACtB,CAAC,CAAC;gBACH,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;aACtC;SACF;QACD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;IA0BK,QAAQ,CAAC,QAAa,EAAE,UAAe;;YAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAU,CAAC,oBAAoB,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzF,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;aACxB;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAChE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YAE/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAU,CAAC,mBAAmB,CAAC,CAAC;YAE/C,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAiBD,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,MAAiB,EAAE,MAA8C,EAAE,OAAgB,IAAI;QAC5F,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAA,cAAK,EAAC,MAAM,CAAC,EAAE;YAClB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,GAAG,CAAC,GAAwC,EAAE,MAA8C,EAAE,OAAgB,IAAI;QAChH,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAA,cAAK,EAAC,GAAG,CAAC,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,MAAM,CACJ,MAAiD,EACjD,MAA8C,EAC9C,OAAgB,IAAI;QAEpB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAA,cAAK,EAAC,MAAM,CAAC,EAAE;YAClB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;SACtB;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAEO,SAAS,CAAC,IAAc;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,SAAS,CAAC,IAAW;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9C,MAAM,KAAK,GAAG,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,CAAC,UAAiC;QACzC,MAAM,cAAc,GAAG,IAAA,8BAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;SACtB;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;QAEjC,MAAM,cAAc,GAAG,IAAA,8BAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;SAC7C;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,MAAmC;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,eAAC,OAAA,CAAC,MAAA,OAAO,CAAC,IAAI,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,OAAO,CAAC,IAAI,mCAAI,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,MAAmC;QAClD,MAAM,OAAO,GAAG,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,KAAU,EAAE,UAAe;QACjD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;YACjD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC3C,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,OAAqB;QACzB,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE;YAC5C,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;CACF;AA9RD,oBA8RC","file":"data.js","sourcesContent":["import { array, isNil } from '@visactor/vutils';\nimport type {\n IGrammarBase,\n DataSpec,\n IData,\n GrammarType,\n DataFormatSpec,\n IView,\n IGrammarTask,\n TransformSpec,\n ParameterFunctionType,\n IDataFilter\n} from '../types';\nimport { GrammarBase } from './grammar-base';\nimport { invokeParameterFunctionType, isGrammar, parseFunctionType } from '../parse/util';\nimport { parseTransformSpec } from '../parse/transform';\nimport type { Nil } from '../types/base';\nimport { HOOK_EVENT } from '../graph/enums';\nimport { load, parseFormat } from '../util/data';\n\nexport class Data extends GrammarBase implements IData {\n readonly grammarType: GrammarType = 'data';\n\n protected spec: DataSpec = {};\n\n private _dataIDKey = `VGRAMMAR_DATA_ID_KEY_${this.uid}`;\n\n /** 原始输入数据 */\n private _input: any[];\n\n /** 计算后的数据 */\n private _values: any[];\n\n private _isLoaded?: boolean;\n private _loadTasks: IGrammarTask[] = [];\n private _postFilters: IDataFilter[] = [];\n\n constructor(view: IView, values?: any, format?: DataFormatSpec) {\n super(view);\n this._loadTasks = [];\n\n if (!isNil(values)) {\n this.values(values, format);\n // this.ingest({ values });\n }\n }\n\n parse(spec: DataSpec) {\n super.parse(spec);\n this._isLoaded = false;\n\n this.source(spec.source, spec.format, false);\n this.url(spec.url, spec.format, false);\n this.values(spec.values, spec.format, false);\n this.transform(spec.transform);\n\n this.parseLoad(spec);\n\n this.commit();\n return this;\n }\n\n private parseDataSource(spec: DataSpec) {\n const refs: IGrammarBase[] = [];\n const transforms: IGrammarTask[] = [];\n\n const formatRef = spec.format ? parseFunctionType(spec.format, this.view)[0] : null;\n if (formatRef) {\n refs.push(formatRef);\n }\n\n if (spec.values) {\n const valuesRef = parseFunctionType(spec.values, this.view)[0];\n\n if (valuesRef) {\n refs.push(valuesRef);\n }\n\n transforms.push({\n type: 'ingest',\n transform: this.ingest,\n isRawOptions: true,\n options: {\n values: spec.values,\n format: spec.format\n }\n });\n } else if (spec.url) {\n const urlRef = parseFunctionType(spec.url, this.view)[0];\n if (urlRef) {\n refs.push(urlRef);\n }\n\n transforms.push({\n type: 'load',\n transform: this.load,\n options: {\n url: urlRef ?? spec.url,\n format: formatRef ?? spec.format\n }\n });\n } else if (spec.source) {\n const upstreamData: IData[] = [];\n\n array(spec.source).forEach(sourceId => {\n const sourceData = isGrammar(sourceId) ? sourceId : this.view.getDataById(sourceId);\n\n if (sourceData) {\n refs.push(sourceData);\n upstreamData.push(sourceData as IData);\n }\n });\n\n if (upstreamData.length) {\n transforms.push({\n type: 'relay',\n transform: this.relay,\n options: upstreamData\n });\n this.grammarSource = upstreamData[0];\n }\n }\n return { transforms, refs };\n }\n\n private ingest = (options: { values?: any; format?: ParameterFunctionType<DataFormatSpec> }) => {\n const format = invokeParameterFunctionType(options.format, this.parameters());\n this._input = parseFormat(options.values, format);\n return this._input;\n };\n\n private load = (\n options:\n | { url: ParameterFunctionType<string>; format?: ParameterFunctionType<DataFormatSpec> }\n | { values: any; format?: ParameterFunctionType<DataFormatSpec> }\n ) => {\n if ((options as { values: any; format?: ParameterFunctionType<DataFormatSpec> }).values) {\n return this.ingest(options as { values: any; format?: ParameterFunctionType<DataFormatSpec> });\n }\n const url = invokeParameterFunctionType((options as { url: ParameterFunctionType<string> }).url, this.parameters());\n // default format for loaded data is json\n const format = invokeParameterFunctionType(options.format, this.parameters()) ?? { type: 'json' };\n return load(url).then(data => this.ingest({ values: data, format }));\n };\n\n private relay = (options: any[]) => {\n return options[0];\n };\n\n async evaluate(upstream: any, parameters: any) {\n this.view.emit(HOOK_EVENT.BEFORE_EVALUATE_DATA);\n const tasks = this._isLoaded ? this.transforms : this._loadTasks.concat(this.transforms);\n if (this.grammarSource) {\n this._input = upstream;\n }\n\n const values = await this.evaluateTransform(tasks, this._input, parameters);\n const filteredValues = this._evaluateFilter(values, parameters);\n this.setValues(filteredValues);\n\n this._isLoaded = true;\n this.view.emit(HOOK_EVENT.AFTER_EVALUATE_DATA);\n\n return this;\n }\n\n evaluateSync = (upstream: any, parameters: any) => {\n this.view.emit(HOOK_EVENT.BEFORE_EVALUATE_DATA);\n const tasks = this._isLoaded ? this.transforms : this._loadTasks.concat(this.transforms);\n\n const values = this.evaluateTransformSync(tasks, this.grammarSource ? upstream : this._input, parameters);\n const filteredValues = this._evaluateFilter(values, parameters);\n this.setValues(filteredValues);\n\n this._isLoaded = true;\n\n this.view.emit(HOOK_EVENT.AFTER_EVALUATE_DATA);\n\n return this;\n };\n\n output() {\n return this._values;\n }\n\n getDataIDKey() {\n return this._dataIDKey;\n }\n\n values(values: any | Nil, format?: ParameterFunctionType<DataFormatSpec>, load: boolean = true) {\n const spec = Object.assign({}, this.spec, { values, format });\n if (!isNil(values)) {\n spec.url = undefined;\n spec.source = undefined;\n }\n return load ? this.parseLoad(spec) : this;\n }\n\n url(url: ParameterFunctionType<string> | Nil, format?: ParameterFunctionType<DataFormatSpec>, load: boolean = true) {\n const spec = Object.assign({}, this.spec, { url, format });\n if (!isNil(url)) {\n spec.values = undefined;\n spec.source = undefined;\n }\n return load ? this.parseLoad(spec) : this;\n }\n\n source(\n source: string | string[] | IData | IData[] | Nil,\n format?: ParameterFunctionType<DataFormatSpec>,\n load: boolean = true\n ) {\n const spec = Object.assign({}, this.spec, { source, format });\n if (!isNil(source)) {\n spec.values = undefined;\n spec.url = undefined;\n }\n return load ? this.parseLoad(spec) : this;\n }\n\n private parseLoad(spec: DataSpec) {\n this.detach(this.parseDataSource(this.spec).refs);\n\n this.spec = spec;\n\n const dataSourceResult = this.parseDataSource(this.spec);\n this.attach(dataSourceResult.refs);\n this._loadTasks = dataSourceResult.transforms;\n this._isLoaded = false;\n\n this.commit();\n return this;\n }\n\n private setValues(data: any[]) {\n this._values = array(data).map((entry, index) => {\n const datum = entry === Object(entry) ? entry : { data: entry };\n datum[this._dataIDKey] = index;\n return datum;\n });\n }\n\n field(field: string): any[] {\n return this._values.map((value: any) => value[field]);\n }\n\n transform(transforms: TransformSpec[] | Nil): this {\n const prevTransforms = parseTransformSpec(this.spec.transform, this.view);\n if (prevTransforms) {\n this.detach(prevTransforms.refs);\n this.transforms = [];\n }\n\n this.spec.transform = transforms;\n\n const nextTransforms = parseTransformSpec(this.spec.transform, this.view);\n if (nextTransforms) {\n this.attach(nextTransforms.refs);\n this.transforms = nextTransforms.transforms;\n }\n\n this.commit();\n return this;\n }\n\n getValue() {\n return this._values;\n }\n\n getInput() {\n return this._input;\n }\n\n addDataFilter(filter: IDataFilter | IDataFilter[]) {\n this._postFilters = this._postFilters.concat(array(filter));\n this._postFilters.sort((filterA, filterB) => (filterA.rank ?? 0) - (filterB.rank ?? 0));\n return this;\n }\n\n removeDataFilter(filter: IDataFilter | IDataFilter[]) {\n const filters = array(filter);\n this._postFilters = this._postFilters.filter(filter => !filters.includes(filter));\n return this;\n }\n\n private _evaluateFilter(value: any, parameters: any) {\n return this._postFilters.reduce((result, filter) => {\n return filter.filter(result, parameters);\n }, value);\n }\n\n reuse(grammar: IGrammarBase) {\n if (grammar.grammarType !== this.grammarType) {\n return this;\n }\n\n this._isLoaded = false;\n this._values = grammar.output();\n return this;\n }\n\n clear() {\n super.clear();\n this._input = null;\n this._values = null;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/view/data.ts"],"names":[],"mappings":"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","file":"data.js","sourcesContent":["import { array, isNil } from '@visactor/vutils';\nimport type {\n IGrammarBase,\n DataSpec,\n IData,\n GrammarType,\n DataFormatSpec,\n IView,\n IGrammarTask,\n TransformSpec,\n ParameterFunctionType,\n IDataFilter\n} from '../types';\nimport { GrammarBase } from './grammar-base';\nimport { invokeParameterFunctionType, isGrammar, parseFunctionType } from '../parse/util';\nimport { parseTransformSpec } from '../parse/transform';\nimport type { Nil } from '../types/base';\nimport { HOOK_EVENT } from '../graph/enums';\nimport { parseFormat } from '../util/data';\n\nexport class Data extends GrammarBase implements IData {\n readonly grammarType: GrammarType = 'data';\n\n protected spec: DataSpec = {};\n\n private _dataIDKey = `VGRAMMAR_DATA_ID_KEY_${this.uid}`;\n\n /** 原始输入数据 */\n private _input: any[];\n\n /** 计算后的数据 */\n private _values: any[];\n\n private _isLoaded?: boolean;\n private _loadTasks: IGrammarTask[] = [];\n private _postFilters: IDataFilter[] = [];\n\n constructor(view: IView, values?: any, format?: DataFormatSpec) {\n super(view);\n this._loadTasks = [];\n\n if (!isNil(values)) {\n this.values(values, format);\n // this.ingest({ values });\n }\n }\n\n parse(spec: DataSpec) {\n super.parse(spec);\n this._isLoaded = false;\n\n this.source(spec.source, spec.format, false);\n this.url(spec.url, spec.format, false);\n this.values(spec.values, spec.format, false);\n this.transform(spec.transform);\n\n this.parseLoad(spec);\n\n this.commit();\n return this;\n }\n\n private parseDataSource(spec: DataSpec) {\n const refs: IGrammarBase[] = [];\n const transforms: IGrammarTask[] = [];\n\n const formatRef = spec.format ? parseFunctionType(spec.format, this.view)[0] : null;\n if (formatRef) {\n refs.push(formatRef);\n }\n\n if (spec.values) {\n const valuesRef = parseFunctionType(spec.values, this.view)[0];\n\n if (valuesRef) {\n refs.push(valuesRef);\n }\n\n transforms.push({\n type: 'ingest',\n transform: this.ingest,\n isRawOptions: true,\n options: {\n values: spec.values,\n format: spec.format\n }\n });\n } else if (spec.url) {\n const urlRef = parseFunctionType(spec.url, this.view)[0];\n if (urlRef) {\n refs.push(urlRef);\n }\n\n transforms.push({\n type: 'load',\n transform: this.load,\n options: {\n url: urlRef ?? spec.url,\n format: formatRef ?? spec.format\n }\n });\n } else if (spec.source) {\n const upstreamData: IData[] = [];\n\n array(spec.source).forEach(sourceId => {\n const sourceData = isGrammar(sourceId) ? sourceId : this.view.getDataById(sourceId);\n\n if (sourceData) {\n refs.push(sourceData);\n upstreamData.push(sourceData as IData);\n }\n });\n\n if (upstreamData.length) {\n transforms.push({\n type: 'relay',\n transform: this.relay,\n options: upstreamData\n });\n this.grammarSource = upstreamData[0];\n }\n }\n return { transforms, refs };\n }\n\n private ingest = (options: { values?: any; format?: ParameterFunctionType<DataFormatSpec> }) => {\n const format = invokeParameterFunctionType(options.format, this.parameters());\n this._input = parseFormat(options.values, format);\n return this._input;\n };\n\n private load = (options: { values: any; format?: ParameterFunctionType<DataFormatSpec> }) => {\n if ((options as { values: any; format?: ParameterFunctionType<DataFormatSpec> }).values) {\n return this.ingest(options as { values: any; format?: ParameterFunctionType<DataFormatSpec> });\n }\n };\n\n private relay = (options: any[]) => {\n return options[0];\n };\n\n evaluate(upstream: any, parameters: any) {\n this.view.emit(HOOK_EVENT.BEFORE_EVALUATE_DATA);\n const tasks = this._isLoaded ? this.transforms : this._loadTasks.concat(this.transforms);\n if (this.grammarSource) {\n this._input = upstream;\n }\n\n const values = this.evaluateTransform(tasks, this._input, parameters);\n const filteredValues = this._evaluateFilter(values, parameters);\n this.setValues(filteredValues);\n\n this._isLoaded = true;\n this.view.emit(HOOK_EVENT.AFTER_EVALUATE_DATA);\n\n return this;\n }\n\n output() {\n return this._values;\n }\n\n getDataIDKey() {\n return this._dataIDKey;\n }\n\n values(values: any | Nil, format?: ParameterFunctionType<DataFormatSpec>, load: boolean = true) {\n const spec = Object.assign({}, this.spec, { values, format });\n if (!isNil(values)) {\n spec.url = undefined;\n spec.source = undefined;\n }\n return load ? this.parseLoad(spec) : this;\n }\n\n url(url: ParameterFunctionType<string> | Nil, format?: ParameterFunctionType<DataFormatSpec>, load: boolean = true) {\n const spec = Object.assign({}, this.spec, { url, format });\n if (!isNil(url)) {\n spec.values = undefined;\n spec.source = undefined;\n }\n return load ? this.parseLoad(spec) : this;\n }\n\n source(\n source: string | string[] | IData | IData[] | Nil,\n format?: ParameterFunctionType<DataFormatSpec>,\n load: boolean = true\n ) {\n const spec = Object.assign({}, this.spec, { source, format });\n if (!isNil(source)) {\n spec.values = undefined;\n spec.url = undefined;\n }\n return load ? this.parseLoad(spec) : this;\n }\n\n private parseLoad(spec: DataSpec) {\n this.detach(this.parseDataSource(this.spec).refs);\n\n this.spec = spec;\n\n const dataSourceResult = this.parseDataSource(this.spec);\n this.attach(dataSourceResult.refs);\n this._loadTasks = dataSourceResult.transforms;\n this._isLoaded = false;\n\n this.commit();\n return this;\n }\n\n private setValues(data: any[]) {\n this._values = array(data).map((entry, index) => {\n const datum = entry === Object(entry) ? entry : { data: entry };\n datum[this._dataIDKey] = index;\n return datum;\n });\n }\n\n field(field: string): any[] {\n return this._values.map((value: any) => value[field]);\n }\n\n transform(transforms: TransformSpec[] | Nil): this {\n const prevTransforms = parseTransformSpec(this.spec.transform, this.view);\n if (prevTransforms) {\n this.detach(prevTransforms.refs);\n this.transforms = [];\n }\n\n this.spec.transform = transforms;\n\n const nextTransforms = parseTransformSpec(this.spec.transform, this.view);\n if (nextTransforms) {\n this.attach(nextTransforms.refs);\n this.transforms = nextTransforms.transforms;\n }\n\n this.commit();\n return this;\n }\n\n getValue() {\n return this._values;\n }\n\n getInput() {\n return this._input;\n }\n\n addDataFilter(filter: IDataFilter | IDataFilter[]) {\n this._postFilters = this._postFilters.concat(array(filter));\n this._postFilters.sort((filterA, filterB) => (filterA.rank ?? 0) - (filterB.rank ?? 0));\n return this;\n }\n\n removeDataFilter(filter: IDataFilter | IDataFilter[]) {\n const filters = array(filter);\n this._postFilters = this._postFilters.filter(filter => !filters.includes(filter));\n return this;\n }\n\n private _evaluateFilter(value: any, parameters: any) {\n return this._postFilters.reduce((result, filter) => {\n return filter.filter(result, parameters);\n }, value);\n }\n\n reuse(grammar: IGrammarBase) {\n if (grammar.grammarType !== this.grammarType) {\n return this;\n }\n\n this._isLoaded = false;\n this._values = grammar.output();\n return this;\n }\n\n clear() {\n super.clear();\n this._input = null;\n this._values = null;\n }\n}\n"]}
|
package/cjs/view/dataflow.d.ts
CHANGED
|
@@ -9,12 +9,9 @@ export default class Dataflow implements IDataflow {
|
|
|
9
9
|
private _heap?;
|
|
10
10
|
private _beforeRunner?;
|
|
11
11
|
private _afterRunner?;
|
|
12
|
-
private _isRunning?;
|
|
13
12
|
private _updateCounter;
|
|
14
13
|
private _finishFirstRender?;
|
|
15
|
-
private _isReleased;
|
|
16
14
|
constructor();
|
|
17
|
-
asyncCallback(callback: (context: IDataflow) => any): Promise<void>;
|
|
18
15
|
add(grammar: IGrammarBase): boolean;
|
|
19
16
|
remove(grammar: IGrammarBase): void;
|
|
20
17
|
private _setRankOfGrammar;
|
|
@@ -25,9 +22,7 @@ export default class Dataflow implements IDataflow {
|
|
|
25
22
|
commit(grammar: IGrammarBase): this;
|
|
26
23
|
private _beforeEvaluate;
|
|
27
24
|
private _enqueueTargets;
|
|
28
|
-
evaluate():
|
|
29
|
-
evaluateSync(): boolean;
|
|
30
|
-
private stop;
|
|
25
|
+
evaluate(): boolean;
|
|
31
26
|
runBefore(callback?: IDataflowCallback): void;
|
|
32
27
|
runAfter(callback?: IDataflowCallback): void;
|
|
33
28
|
release(): void;
|
package/cjs/view/dataflow.js
CHANGED
|
@@ -1,31 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
|
|
4
|
-
return new (P || (P = Promise))((function(resolve, reject) {
|
|
5
|
-
function fulfilled(value) {
|
|
6
|
-
try {
|
|
7
|
-
step(generator.next(value));
|
|
8
|
-
} catch (e) {
|
|
9
|
-
reject(e);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
function rejected(value) {
|
|
13
|
-
try {
|
|
14
|
-
step(generator.throw(value));
|
|
15
|
-
} catch (e) {
|
|
16
|
-
reject(e);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function step(result) {
|
|
20
|
-
var value;
|
|
21
|
-
result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
|
|
22
|
-
resolve(value);
|
|
23
|
-
}))).then(fulfilled, rejected);
|
|
24
|
-
}
|
|
25
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
26
|
-
}));
|
|
27
|
-
};
|
|
28
|
-
|
|
29
3
|
Object.defineProperty(exports, "__esModule", {
|
|
30
4
|
value: !0
|
|
31
5
|
});
|
|
@@ -36,17 +10,7 @@ class Dataflow {
|
|
|
36
10
|
constructor() {
|
|
37
11
|
this.grammars = [], this.logger = vutils_1.Logger.getInstance(), this._curRank = 0,
|
|
38
12
|
this._committed = new unique_list_1.UniqueList((grammar => grammar.uid)), this._heap = new grammar_heap_1.Heap(((a, b) => (null == a ? void 0 : a.qrank) - (null == b ? void 0 : b.qrank))),
|
|
39
|
-
this._beforeRunner = null, this._afterRunner = null, this.
|
|
40
|
-
this._finishFirstRender = !1;
|
|
41
|
-
}
|
|
42
|
-
asyncCallback(callback) {
|
|
43
|
-
return __awaiter(this, void 0, void 0, (function*() {
|
|
44
|
-
try {
|
|
45
|
-
yield callback(this);
|
|
46
|
-
} catch (err) {
|
|
47
|
-
this.logger.error(err);
|
|
48
|
-
}
|
|
49
|
-
}));
|
|
13
|
+
this._beforeRunner = null, this._afterRunner = null, this._updateCounter = 0, this._finishFirstRender = !1;
|
|
50
14
|
}
|
|
51
15
|
add(grammar) {
|
|
52
16
|
if (grammar) return this._setRankOfGrammar(grammar), this.commit(grammar), !this.grammars.includes(grammar) && (this.grammars.push(grammar),
|
|
@@ -88,8 +52,7 @@ class Dataflow {
|
|
|
88
52
|
return !!this._committed.length;
|
|
89
53
|
}
|
|
90
54
|
commit(grammar) {
|
|
91
|
-
return this.
|
|
92
|
-
this;
|
|
55
|
+
return this._committed.add(grammar), this;
|
|
93
56
|
}
|
|
94
57
|
_beforeEvaluate() {
|
|
95
58
|
this.grammars.forEach((grammar => {
|
|
@@ -100,42 +63,15 @@ class Dataflow {
|
|
|
100
63
|
grammar.targets && grammar.targets.length && this._finishFirstRender && grammar.targets.forEach((target => this._enqueue(target)));
|
|
101
64
|
}
|
|
102
65
|
evaluate() {
|
|
103
|
-
return __awaiter(this, void 0, void 0, (function*() {
|
|
104
|
-
if (this._isReleased) return;
|
|
105
|
-
if (this._beforeRunner && (yield this.asyncCallback(this._beforeRunner)), !this._committed.length) return this.logger.info("Dataflow invoked, but nothing to do."),
|
|
106
|
-
!1;
|
|
107
|
-
this._isRunning = !0, this._updateCounter += 1;
|
|
108
|
-
let grammar, next, dt, error, count = 0;
|
|
109
|
-
this.logger.canLogInfo() && (dt = Date.now(), this.logger.debug(`-- START PROPAGATION (${this._updateCounter}) -----`)),
|
|
110
|
-
this._beforeEvaluate();
|
|
111
|
-
try {
|
|
112
|
-
for (;this._heap.size() > 0 && !this._isReleased; ) if (grammar = this._heap.pop(),
|
|
113
|
-
grammar) if (grammar.rank === grammar.qrank) {
|
|
114
|
-
if (next = grammar.run(), next && next.then && (next = yield next), !this._isRunning) return !1;
|
|
115
|
-
this._logGrammarRunInfo(grammar), this._enqueueTargets(grammar), count += 1;
|
|
116
|
-
} else this._enqueue(grammar);
|
|
117
|
-
} catch (err) {
|
|
118
|
-
this._heap.clear(), error = err;
|
|
119
|
-
}
|
|
120
|
-
return !this._isReleased && (this._isRunning = !1, this.logger.canLogInfo() && (dt = Date.now() - dt,
|
|
121
|
-
this.logger.info(`> ${count} grammars; ${dt} ms`)), error ? this.logger.error(error) : this._afterRunner && (yield this.asyncCallback(this._afterRunner)),
|
|
122
|
-
this._finishFirstRender = !0, !0);
|
|
123
|
-
}));
|
|
124
|
-
}
|
|
125
|
-
evaluateSync() {
|
|
126
66
|
if (this._beforeRunner && this._beforeRunner(this), !this._committed.length) return this.logger.info("Dataflow invoked, but nothing to do."),
|
|
127
67
|
!1;
|
|
128
|
-
this.
|
|
68
|
+
this._updateCounter += 1;
|
|
129
69
|
let grammar, dt, count = 0;
|
|
130
70
|
for (this.logger.canLogInfo() && (dt = Date.now(), this.logger.debug(`-- START PROPAGATION (${this._updateCounter}) -----`)),
|
|
131
|
-
this._beforeEvaluate(); this._heap.size() > 0; ) grammar = this._heap.pop(), grammar && (grammar.rank === grammar.qrank ? (grammar.
|
|
71
|
+
this._beforeEvaluate(); this._heap.size() > 0; ) grammar = this._heap.pop(), grammar && (grammar.rank === grammar.qrank ? (grammar.run(),
|
|
132
72
|
this._logGrammarRunInfo(grammar), this._enqueueTargets(grammar), count += 1) : this._enqueue(grammar));
|
|
133
|
-
return this.
|
|
134
|
-
this.
|
|
135
|
-
this._finishFirstRender = !0, !0;
|
|
136
|
-
}
|
|
137
|
-
stop() {
|
|
138
|
-
this._isRunning && (this._isRunning = !1);
|
|
73
|
+
return this.logger.canLogInfo() && (dt = Date.now() - dt, this.logger.info(`> ${count} grammars updated; ${dt} ms`)),
|
|
74
|
+
this._afterRunner && this._afterRunner(this), this._finishFirstRender = !0, !0;
|
|
139
75
|
}
|
|
140
76
|
runBefore(callback) {
|
|
141
77
|
this._beforeRunner = callback;
|
|
@@ -144,8 +80,7 @@ class Dataflow {
|
|
|
144
80
|
this._afterRunner = callback;
|
|
145
81
|
}
|
|
146
82
|
release() {
|
|
147
|
-
this.
|
|
148
|
-
this.logger = null, this._committed = null;
|
|
83
|
+
this._heap && (this._heap.clear(), this._heap = null), this.logger = null, this._committed = null;
|
|
149
84
|
}
|
|
150
85
|
}
|
|
151
86
|
|
package/cjs/view/dataflow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/view/dataflow.ts"],"names":[],"mappings":"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","file":"dataflow.js","sourcesContent":["import type { ILogger } from '@visactor/vutils';\nimport type { IDataflow } from '../types/dataflow';\nimport { isNil, Logger } from '@visactor/vutils';\nimport { Heap } from '../util/grammar-heap';\nimport { UniqueList } from '../util/unique-list';\nimport type { IDataflowCallback, IGrammarBase } from '../types';\n\n/**\n * A dataflow to run all the grammar elements\n */\nexport default class Dataflow implements IDataflow {\n logger: ILogger;\n private grammars: IGrammarBase[] = [];\n /** 当前排序 */\n private _curRank: number;\n /** 发生了变更的元素 */\n private _committed?: UniqueList<IGrammarBase>;\n private _heap?: Heap;\n private _beforeRunner?: IDataflowCallback;\n private _afterRunner?: IDataflowCallback;\n /** 正在运行dataflow */\n private _isRunning?: boolean;\n private _updateCounter: number;\n /** 是否完成初次渲染 */\n private _finishFirstRender?: boolean;\n private _isReleased: boolean;\n\n constructor() {\n this.logger = Logger.getInstance();\n\n this._curRank = 0;\n\n this._committed = new UniqueList(grammar => grammar.uid);\n\n this._heap = new Heap((a, b) => a?.qrank - b?.qrank);\n this._beforeRunner = null;\n this._afterRunner = null;\n this._isRunning = false;\n this._updateCounter = 0;\n this._finishFirstRender = false;\n }\n\n async asyncCallback(callback: (context: IDataflow) => any) {\n try {\n await callback(this);\n } catch (err) {\n this.logger.error(err);\n }\n }\n\n add(grammar: IGrammarBase) {\n if (!grammar) {\n return;\n }\n this._setRankOfGrammar(grammar);\n this.commit(grammar);\n if (!this.grammars.includes(grammar)) {\n this.grammars.push(grammar);\n\n return true;\n }\n\n return false;\n }\n\n remove(grammar: IGrammarBase) {\n if (grammar) {\n this._committed.remove(grammar);\n this._heap.remove(grammar);\n this.grammars = this.grammars.filter(storedGrammar => storedGrammar !== grammar);\n }\n }\n\n private _setRankOfGrammar(grammar?: IGrammarBase) {\n if (!grammar) {\n return;\n }\n grammar.rank = ++this._curRank;\n }\n\n private _reRank(grammar?: IGrammarBase) {\n const queue = [grammar];\n\n while (queue.length) {\n const cur = queue.pop();\n this._setRankOfGrammar(cur);\n const list = cur.targets;\n\n if (list) {\n list.forEach((entry: IGrammarBase) => {\n queue.push(entry);\n if (entry === grammar) {\n this.logger.error('Cycle detected in dataflow graph.');\n }\n });\n }\n }\n }\n\n private _enqueue(grammar: IGrammarBase) {\n if (!grammar) {\n return;\n }\n\n (grammar as any).qrank = grammar.rank;\n // push and reRank in the heap\n this._heap.push(grammar);\n }\n\n private _logGrammarRunInfo(grammar: IGrammarBase) {\n if (this.logger.canLogError()) {\n const debugInfos = [\n { key: 'id', value: grammar.id() },\n { key: 'name', value: grammar.name() }\n ];\n const debugStr = debugInfos.reduce((str, entry, index) => {\n if (!isNil(entry.value)) {\n return `${str}${index ? ' , ' : ''}${entry.key}: ${entry.value}`;\n }\n\n return str;\n }, '');\n\n this.logger.debug('Run Operator: ', grammar, debugStr);\n }\n }\n\n hasCommitted() {\n return !!this._committed.length;\n }\n\n // OPERATOR UPDATES\n commit(grammar: IGrammarBase) {\n if (this._isRunning) {\n // this may lead to a problem, the same op may be added to the queue multiple times\n // if in midst of propagation, add to priority queue\n this._enqueue(grammar);\n } else {\n // otherwise, queue for next propagation\n this._committed.add(grammar);\n }\n\n return this;\n }\n\n private _beforeEvaluate() {\n // reRank grammar element which has higher rank than its targets\n this.grammars.forEach(grammar => {\n if (grammar.targets.some(target => target?.rank < grammar?.rank)) {\n this._reRank(grammar);\n }\n });\n // initialize priority queue, reset committed grammars\n this._committed.forEach(grammar => this._enqueue(grammar));\n this._committed = new UniqueList(grammar => grammar.uid);\n }\n\n private _enqueueTargets(grammar: IGrammarBase) {\n if (grammar.targets && grammar.targets.length && this._finishFirstRender) {\n grammar.targets.forEach((target: IGrammarBase) => this._enqueue(target));\n }\n }\n\n async evaluate() {\n if (this._isReleased) {\n return;\n }\n // invoke prerun function, if provided\n if (this._beforeRunner) {\n await this.asyncCallback(this._beforeRunner);\n }\n\n // exit early if there are no updates\n if (!this._committed.length) {\n this.logger.info('Dataflow invoked, but nothing to do.');\n return false;\n }\n\n this._isRunning = true;\n this._updateCounter += 1;\n let count = 0;\n let grammar;\n let next;\n let dt;\n let error;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now();\n this.logger.debug(`-- START PROPAGATION (${this._updateCounter}) -----`);\n }\n\n this._beforeEvaluate();\n\n try {\n while (this._heap.size() > 0) {\n if (this._isReleased) {\n break;\n }\n // dequeue grammar with highest priority\n grammar = this._heap.pop();\n\n if (!grammar) {\n continue;\n }\n\n // re-queue if rank changed\n if (grammar.rank !== grammar.qrank) {\n this._enqueue(grammar);\n continue;\n }\n\n next = grammar.run();\n\n // await if grammar returned a promise\n if (next && next.then) {\n next = await next;\n }\n\n // finish evaluation if dataflow is stopped during asynchronous process\n if (!this._isRunning) {\n return false;\n }\n\n this._logGrammarRunInfo(grammar);\n this._enqueueTargets(grammar);\n count += 1;\n }\n } catch (err) {\n this._heap.clear();\n error = err;\n }\n if (this._isReleased) {\n return false;\n }\n\n this._isRunning = false;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now() - dt;\n this.logger.info(`> ${count} grammars; ${dt} ms`);\n }\n\n if (error) {\n this.logger.error(error);\n } else if (this._afterRunner) {\n // invoke callbacks queued via runAfter\n await this.asyncCallback(this._afterRunner);\n }\n\n this._finishFirstRender = true;\n\n return true;\n }\n\n evaluateSync() {\n // invoke prerun function, if provided\n if (this._beforeRunner) {\n this._beforeRunner(this);\n }\n\n // exit early if there are no updates\n if (!this._committed.length) {\n this.logger.info('Dataflow invoked, but nothing to do.');\n return false;\n }\n\n this._isRunning = true;\n this._updateCounter += 1;\n let count = 0;\n let grammar;\n let dt;\n let error;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now();\n this.logger.debug(`-- START PROPAGATION (${this._updateCounter}) -----`);\n }\n\n this._beforeEvaluate();\n\n while (this._heap.size() > 0) {\n // dequeue grammar with highest priority\n grammar = this._heap.pop();\n\n if (!grammar) {\n continue;\n }\n\n // re-queue if rank changed\n if (grammar.rank !== grammar.qrank) {\n this._enqueue(grammar);\n continue;\n }\n\n grammar.runSync();\n\n this._logGrammarRunInfo(grammar);\n this._enqueueTargets(grammar);\n count += 1;\n }\n\n this._isRunning = false;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now() - dt;\n this.logger.info(`> ${count} grammars updated; ${dt} ms`);\n }\n\n if (error) {\n this.logger.error(error);\n } else if (this._afterRunner) {\n this._afterRunner(this);\n }\n\n this._finishFirstRender = true;\n\n return true;\n }\n\n private stop() {\n if (!this._isRunning) {\n return;\n }\n this._isRunning = false;\n }\n\n runBefore(callback?: IDataflowCallback) {\n this._beforeRunner = callback;\n }\n\n runAfter(callback?: IDataflowCallback) {\n this._afterRunner = callback;\n }\n\n release() {\n // stop asynchronous evaluation\n this.stop();\n this._isReleased = true;\n\n if (this._heap) {\n this._heap.clear();\n this._heap = null;\n }\n\n this.logger = null;\n this._committed = null;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/view/dataflow.ts"],"names":[],"mappings":"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","file":"dataflow.js","sourcesContent":["import type { ILogger } from '@visactor/vutils';\nimport type { IDataflow } from '../types/dataflow';\nimport { isNil, Logger } from '@visactor/vutils';\nimport { Heap } from '../util/grammar-heap';\nimport { UniqueList } from '../util/unique-list';\nimport type { IDataflowCallback, IGrammarBase } from '../types';\n\n/**\n * A dataflow to run all the grammar elements\n */\nexport default class Dataflow implements IDataflow {\n logger: ILogger;\n private grammars: IGrammarBase[] = [];\n /** 当前排序 */\n private _curRank: number;\n /** 发生了变更的元素 */\n private _committed?: UniqueList<IGrammarBase>;\n private _heap?: Heap;\n private _beforeRunner?: IDataflowCallback;\n private _afterRunner?: IDataflowCallback;\n private _updateCounter: number;\n /** 是否完成初次渲染 */\n private _finishFirstRender?: boolean;\n\n constructor() {\n this.logger = Logger.getInstance();\n\n this._curRank = 0;\n\n this._committed = new UniqueList(grammar => grammar.uid);\n\n this._heap = new Heap((a, b) => a?.qrank - b?.qrank);\n this._beforeRunner = null;\n this._afterRunner = null;\n this._updateCounter = 0;\n this._finishFirstRender = false;\n }\n\n add(grammar: IGrammarBase) {\n if (!grammar) {\n return;\n }\n this._setRankOfGrammar(grammar);\n this.commit(grammar);\n if (!this.grammars.includes(grammar)) {\n this.grammars.push(grammar);\n\n return true;\n }\n\n return false;\n }\n\n remove(grammar: IGrammarBase) {\n if (grammar) {\n this._committed.remove(grammar);\n this._heap.remove(grammar);\n this.grammars = this.grammars.filter(storedGrammar => storedGrammar !== grammar);\n }\n }\n\n private _setRankOfGrammar(grammar?: IGrammarBase) {\n if (!grammar) {\n return;\n }\n grammar.rank = ++this._curRank;\n }\n\n private _reRank(grammar?: IGrammarBase) {\n const queue = [grammar];\n\n while (queue.length) {\n const cur = queue.pop();\n this._setRankOfGrammar(cur);\n const list = cur.targets;\n\n if (list) {\n list.forEach((entry: IGrammarBase) => {\n queue.push(entry);\n if (entry === grammar) {\n this.logger.error('Cycle detected in dataflow graph.');\n }\n });\n }\n }\n }\n\n private _enqueue(grammar: IGrammarBase) {\n if (!grammar) {\n return;\n }\n\n (grammar as any).qrank = grammar.rank;\n // push and reRank in the heap\n this._heap.push(grammar);\n }\n\n private _logGrammarRunInfo(grammar: IGrammarBase) {\n if (this.logger.canLogError()) {\n const debugInfos = [\n { key: 'id', value: grammar.id() },\n { key: 'name', value: grammar.name() }\n ];\n const debugStr = debugInfos.reduce((str, entry, index) => {\n if (!isNil(entry.value)) {\n return `${str}${index ? ' , ' : ''}${entry.key}: ${entry.value}`;\n }\n\n return str;\n }, '');\n\n this.logger.debug('Run Operator: ', grammar, debugStr);\n }\n }\n\n hasCommitted() {\n return !!this._committed.length;\n }\n\n // OPERATOR UPDATES\n commit(grammar: IGrammarBase) {\n // otherwise, queue for next propagation\n this._committed.add(grammar);\n\n return this;\n }\n\n private _beforeEvaluate() {\n // reRank grammar element which has higher rank than its targets\n this.grammars.forEach(grammar => {\n if (grammar.targets.some(target => target?.rank < grammar?.rank)) {\n this._reRank(grammar);\n }\n });\n // initialize priority queue, reset committed grammars\n this._committed.forEach(grammar => this._enqueue(grammar));\n this._committed = new UniqueList(grammar => grammar.uid);\n }\n\n private _enqueueTargets(grammar: IGrammarBase) {\n if (grammar.targets && grammar.targets.length && this._finishFirstRender) {\n grammar.targets.forEach((target: IGrammarBase) => this._enqueue(target));\n }\n }\n\n evaluate() {\n // invoke prerun function, if provided\n if (this._beforeRunner) {\n this._beforeRunner(this);\n }\n\n // exit early if there are no updates\n if (!this._committed.length) {\n this.logger.info('Dataflow invoked, but nothing to do.');\n return false;\n }\n\n this._updateCounter += 1;\n let count = 0;\n let grammar;\n let dt;\n let error;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now();\n this.logger.debug(`-- START PROPAGATION (${this._updateCounter}) -----`);\n }\n\n this._beforeEvaluate();\n\n while (this._heap.size() > 0) {\n // dequeue grammar with highest priority\n grammar = this._heap.pop();\n\n if (!grammar) {\n continue;\n }\n\n // re-queue if rank changed\n if (grammar.rank !== grammar.qrank) {\n this._enqueue(grammar);\n continue;\n }\n\n grammar.run();\n\n this._logGrammarRunInfo(grammar);\n this._enqueueTargets(grammar);\n count += 1;\n }\n\n if (this.logger.canLogInfo()) {\n dt = Date.now() - dt;\n this.logger.info(`> ${count} grammars updated; ${dt} ms`);\n }\n\n if (error) {\n this.logger.error(error);\n } else if (this._afterRunner) {\n this._afterRunner(this);\n }\n\n this._finishFirstRender = true;\n\n return true;\n }\n\n runBefore(callback?: IDataflowCallback) {\n this._beforeRunner = callback;\n }\n\n runAfter(callback?: IDataflowCallback) {\n this._afterRunner = callback;\n }\n\n release() {\n if (this._heap) {\n this._heap.clear();\n this._heap = null;\n }\n\n this.logger = null;\n this._committed = null;\n }\n}\n"]}
|
|
@@ -20,11 +20,9 @@ export declare abstract class GrammarBase extends EventEmitter implements IGramm
|
|
|
20
20
|
removeEventListener(type: string, handler?: BaseEventHandler): this;
|
|
21
21
|
emit<T extends EventEmitter.EventNames<string | symbol>>(event: T, ...args: EventEmitter.EventArgs<string | symbol, T>): boolean;
|
|
22
22
|
emitGrammarEvent<T extends EventEmitter.EventNames<string | symbol>>(event: T, ...args: EventEmitter.EventArgs<string | symbol, T>): boolean;
|
|
23
|
-
abstract evaluate(upstream: any, parameters: any): this |
|
|
23
|
+
abstract evaluate(upstream: any, parameters: any): this | this;
|
|
24
24
|
abstract output(): any;
|
|
25
|
-
|
|
26
|
-
evaluateTransform(transforms: IGrammarTask[], upstream: any, parameters: any): Promise<any>;
|
|
27
|
-
evaluateTransformSync(transforms: IGrammarTask[], upstream: any, parameters: any): any;
|
|
25
|
+
evaluateTransform(transforms: IGrammarTask[], upstream: any, parameters: any): any;
|
|
28
26
|
set(value: any): boolean;
|
|
29
27
|
id(): string;
|
|
30
28
|
id(id: string): this;
|
|
@@ -34,8 +32,7 @@ export declare abstract class GrammarBase extends EventEmitter implements IGramm
|
|
|
34
32
|
detach(reference: IGrammarBase | IGrammarBase[], count?: number): this;
|
|
35
33
|
detachAll(): void;
|
|
36
34
|
link(source: IGrammarBase): void;
|
|
37
|
-
run(): this
|
|
38
|
-
runSync(): this | Promise<this>;
|
|
35
|
+
run(): this;
|
|
39
36
|
commit(): void;
|
|
40
37
|
parameters(): any;
|
|
41
38
|
getSpec(): any;
|
package/cjs/view/grammar-base.js
CHANGED
|
@@ -1,31 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
|
|
4
|
-
return new (P || (P = Promise))((function(resolve, reject) {
|
|
5
|
-
function fulfilled(value) {
|
|
6
|
-
try {
|
|
7
|
-
step(generator.next(value));
|
|
8
|
-
} catch (e) {
|
|
9
|
-
reject(e);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
function rejected(value) {
|
|
13
|
-
try {
|
|
14
|
-
step(generator.throw(value));
|
|
15
|
-
} catch (e) {
|
|
16
|
-
reject(e);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function step(result) {
|
|
20
|
-
var value;
|
|
21
|
-
result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
|
|
22
|
-
resolve(value);
|
|
23
|
-
}))).then(fulfilled, rejected);
|
|
24
|
-
}
|
|
25
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
26
|
-
}));
|
|
27
|
-
};
|
|
28
|
-
|
|
29
3
|
Object.defineProperty(exports, "__esModule", {
|
|
30
4
|
value: !0
|
|
31
5
|
}), exports.GrammarBase = void 0;
|
|
@@ -71,21 +45,6 @@ class GrammarBase extends vutils_1.EventEmitter {
|
|
|
71
45
|
return super.emit(event, ...args);
|
|
72
46
|
}
|
|
73
47
|
evaluateTransform(transforms, upstream, parameters) {
|
|
74
|
-
return __awaiter(this, void 0, void 0, (function*() {
|
|
75
|
-
if (!transforms || !transforms.length) return upstream;
|
|
76
|
-
let currentUpstreamData = upstream, i = 0;
|
|
77
|
-
const n = transforms.length;
|
|
78
|
-
for (;i < n; ) {
|
|
79
|
-
const task = transforms[i];
|
|
80
|
-
this.emit(enums_1.HOOK_EVENT.BEFORE_TRANSFORM, task.type), currentUpstreamData = task.transform(task.isRawOptions ? task.options : (0,
|
|
81
|
-
option_1.parseOptions)(task.options, parameters), currentUpstreamData, parameters, this.view),
|
|
82
|
-
(null == currentUpstreamData ? void 0 : currentUpstreamData.then) && (currentUpstreamData = yield currentUpstreamData),
|
|
83
|
-
i++, this.emit(enums_1.HOOK_EVENT.AFTER_TRANSFORM, task.type);
|
|
84
|
-
}
|
|
85
|
-
return currentUpstreamData;
|
|
86
|
-
}));
|
|
87
|
-
}
|
|
88
|
-
evaluateTransformSync(transforms, upstream, parameters) {
|
|
89
48
|
if (!transforms || !transforms.length) return upstream;
|
|
90
49
|
let currentUpstreamData = upstream, i = 0;
|
|
91
50
|
const n = transforms.length;
|
|
@@ -134,11 +93,6 @@ class GrammarBase extends vutils_1.EventEmitter {
|
|
|
134
93
|
const upstream = null === (_a = this.grammarSource) || void 0 === _a ? void 0 : _a.output(), parameters = this.parameters();
|
|
135
94
|
return this.evaluate(upstream, parameters);
|
|
136
95
|
}
|
|
137
|
-
runSync() {
|
|
138
|
-
var _a;
|
|
139
|
-
const upstream = null === (_a = this.grammarSource) || void 0 === _a ? void 0 : _a.output(), parameters = this.parameters();
|
|
140
|
-
return this.evaluateSync ? this.evaluateSync(upstream, parameters) : this.evaluate(upstream, parameters);
|
|
141
|
-
}
|
|
142
96
|
commit() {
|
|
143
97
|
this.view.commit(this);
|
|
144
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/view/grammar-base.ts"],"names":[],"mappings":"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","file":"grammar-base.js","sourcesContent":["import { array, EventEmitter, isNil, isString, isValid } from '@visactor/vutils';\nimport type { GrammarType, IGrammarBase, IView, IGrammarTask, BaseEventHandler } from '../types';\nimport { parseOptions } from '../parse/option';\nimport { parseFunctionType } from '../parse/util';\nimport type { Nil } from '../types/base';\nimport { HOOK_EVENT } from '../graph/enums';\n\nlet grammarBaseId = -1;\n\nexport abstract class GrammarBase extends EventEmitter implements IGrammarBase {\n readonly grammarType: GrammarType;\n\n readonly uid: number;\n protected _id: string;\n protected _name: string;\n\n protected spec: any = {};\n\n view: IView;\n rank: number;\n\n // FIXME: adapt current implementation of dataflow, refactor after dataflow design is finished\n grammarSource: IGrammarBase;\n references: Map<IGrammarBase, number> = new Map();\n targets: IGrammarBase[] = [];\n transforms: IGrammarTask[] = [];\n\n constructor(view: IView) {\n super();\n this.view = view;\n this.uid = ++grammarBaseId;\n }\n\n parse(spec: any): this {\n this.id(spec.id);\n this.name(spec.name);\n this.depend(spec.dependency);\n return this;\n }\n\n depend(grammars: IGrammarBase[] | IGrammarBase | string[] | string) {\n if (this.spec?.dependency) {\n const lastGrammars = array(this.spec.dependency).map(grammar => {\n return isString(grammar) ? this.view.getGrammarById(grammar) : grammar;\n });\n this.detach(lastGrammars);\n }\n this.spec.dependency = grammars;\n const currentGrammars = array(grammars).map(grammar => {\n return isString(grammar) ? this.view.getGrammarById(grammar) : grammar;\n });\n this.attach(currentGrammars);\n\n this.commit();\n return this;\n }\n\n addEventListener(type: string, handler: BaseEventHandler, options?: any) {\n let callback = handler;\n if (!(options && options.trap === false)) {\n callback = handler;\n (callback as any).raw = handler;\n }\n if (options && options.target) {\n (callback as any).target = options.target;\n }\n this.on(type, callback);\n return this;\n }\n\n removeEventListener(type: string, handler?: BaseEventHandler) {\n if (handler) {\n this.off(type, handler);\n } else {\n this.off(type);\n }\n return this;\n }\n\n emit<T extends EventEmitter.EventNames<string | symbol>>(\n event: T,\n ...args: EventEmitter.EventArgs<string | symbol, T>\n ): boolean {\n this.view?.emit?.(event, ...args);\n return super.emit(event, ...args);\n }\n\n emitGrammarEvent<T extends EventEmitter.EventNames<string | symbol>>(\n event: T,\n ...args: EventEmitter.EventArgs<string | symbol, T>\n ): boolean {\n return super.emit(event, ...args);\n }\n\n abstract evaluate(upstream: any, parameters: any): this | Promise<this>;\n abstract output(): any;\n evaluateSync?: (upstream: any, parameters: any) => this;\n\n async evaluateTransform(transforms: IGrammarTask[], upstream: any, parameters: any) {\n if (!transforms || !transforms.length) {\n return upstream;\n }\n let currentUpstreamData = upstream;\n let i = 0;\n const n = transforms.length;\n\n while (i < n) {\n const task = transforms[i];\n\n this.emit(HOOK_EVENT.BEFORE_TRANSFORM, task.type);\n currentUpstreamData = task.transform(\n task.isRawOptions ? task.options : parseOptions(task.options, parameters),\n currentUpstreamData,\n parameters,\n this.view\n );\n if ((currentUpstreamData as any)?.then) {\n currentUpstreamData = await currentUpstreamData;\n }\n i++;\n this.emit(HOOK_EVENT.AFTER_TRANSFORM, task.type);\n }\n\n return currentUpstreamData;\n }\n\n evaluateTransformSync(transforms: IGrammarTask[], upstream: any, parameters: any) {\n if (!transforms || !transforms.length) {\n return upstream;\n }\n let currentUpstreamData = upstream;\n let i = 0;\n const n = transforms.length;\n\n while (i < n) {\n const task = transforms[i];\n\n this.emit(HOOK_EVENT.BEFORE_TRANSFORM, task.type);\n currentUpstreamData = task.transform(\n task.isRawOptions ? task.options : parseOptions(task.options, parameters),\n currentUpstreamData,\n parameters,\n this.view\n );\n i++;\n this.emit(HOOK_EVENT.AFTER_TRANSFORM, task.type);\n }\n\n return currentUpstreamData;\n }\n\n set(value: any): boolean {\n // do nothing\n return false;\n }\n\n id(): string;\n id(id: string): this;\n id(id?: string) {\n if (arguments.length) {\n this.view.grammars.unrecord(this);\n this._id = id;\n this.view.grammars.record(this);\n return this;\n }\n return this._id;\n }\n\n name(): string;\n name(name: string): this;\n name(name?: string) {\n if (arguments.length) {\n this._name = name;\n return this;\n }\n return this._name;\n }\n\n attach(reference: IGrammarBase | IGrammarBase[], count: number = 1) {\n array(reference)\n .filter(ref => !isNil(ref))\n .forEach(ref => {\n if (isNil(reference)) {\n return;\n }\n if (!ref.targets.includes(this)) {\n ref.targets.push(this);\n }\n this.references.set(ref, (this.references.get(ref) ?? 0) + count);\n });\n return this;\n }\n\n detach(reference: IGrammarBase | IGrammarBase[], count: number = 1) {\n array(reference)\n .filter(ref => !isNil(ref))\n .forEach(ref => {\n const refCount = this.references.get(ref) - count;\n if (refCount > 0) {\n this.references.set(ref, refCount - 1);\n } else {\n this.references.delete(ref);\n if (ref.targets.includes(this)) {\n ref.targets = ref.targets.filter(target => target !== this);\n }\n }\n });\n return this;\n }\n\n detachAll() {\n this.references.forEach((count, ref) => {\n this.detach(ref, count);\n });\n }\n\n link(source: IGrammarBase) {\n this.grammarSource = source;\n }\n\n run() {\n const upstream = this.grammarSource?.output();\n const parameters = this.parameters();\n return this.evaluate(upstream, parameters);\n }\n\n runSync() {\n const upstream = this.grammarSource?.output();\n const parameters = this.parameters();\n\n if (this.evaluateSync) {\n return this.evaluateSync(upstream, parameters);\n }\n return this.evaluate(upstream, parameters);\n }\n\n commit() {\n this.view.commit(this);\n }\n\n parameters() {\n const params: any = {};\n this.references.forEach((count, ref) => {\n // upstream reference with no valid id will not be recorded in parameters\n if (isValid(ref.id())) {\n params[ref.id() as string] = ref.output();\n }\n });\n return params;\n }\n\n getSpec() {\n return this.spec;\n }\n\n reuse(grammar: IGrammarBase) {\n return this;\n }\n\n clear() {\n this.spec = null;\n this.view = null;\n }\n\n release() {\n this.clear();\n }\n\n protected setFunctionSpec<T>(spec: T | Nil, specField: string) {\n if (!isNil(this.spec[specField])) {\n this.detach(parseFunctionType(this.spec[specField], this.view));\n }\n this.spec[specField] = spec;\n this.attach(parseFunctionType(spec, this.view));\n this.commit();\n return this;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/view/grammar-base.ts"],"names":[],"mappings":"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","file":"grammar-base.js","sourcesContent":["import { array, EventEmitter, isNil, isString, isValid } from '@visactor/vutils';\nimport type { GrammarType, IGrammarBase, IView, IGrammarTask, BaseEventHandler } from '../types';\nimport { parseOptions } from '../parse/option';\nimport { parseFunctionType } from '../parse/util';\nimport type { Nil } from '../types/base';\nimport { HOOK_EVENT } from '../graph/enums';\n\nlet grammarBaseId = -1;\n\nexport abstract class GrammarBase extends EventEmitter implements IGrammarBase {\n readonly grammarType: GrammarType;\n\n readonly uid: number;\n protected _id: string;\n protected _name: string;\n\n protected spec: any = {};\n\n view: IView;\n rank: number;\n\n // FIXME: adapt current implementation of dataflow, refactor after dataflow design is finished\n grammarSource: IGrammarBase;\n references: Map<IGrammarBase, number> = new Map();\n targets: IGrammarBase[] = [];\n transforms: IGrammarTask[] = [];\n\n constructor(view: IView) {\n super();\n this.view = view;\n this.uid = ++grammarBaseId;\n }\n\n parse(spec: any): this {\n this.id(spec.id);\n this.name(spec.name);\n this.depend(spec.dependency);\n return this;\n }\n\n depend(grammars: IGrammarBase[] | IGrammarBase | string[] | string) {\n if (this.spec?.dependency) {\n const lastGrammars = array(this.spec.dependency).map(grammar => {\n return isString(grammar) ? this.view.getGrammarById(grammar) : grammar;\n });\n this.detach(lastGrammars);\n }\n this.spec.dependency = grammars;\n const currentGrammars = array(grammars).map(grammar => {\n return isString(grammar) ? this.view.getGrammarById(grammar) : grammar;\n });\n this.attach(currentGrammars);\n\n this.commit();\n return this;\n }\n\n addEventListener(type: string, handler: BaseEventHandler, options?: any) {\n let callback = handler;\n if (!(options && options.trap === false)) {\n callback = handler;\n (callback as any).raw = handler;\n }\n if (options && options.target) {\n (callback as any).target = options.target;\n }\n this.on(type, callback);\n return this;\n }\n\n removeEventListener(type: string, handler?: BaseEventHandler) {\n if (handler) {\n this.off(type, handler);\n } else {\n this.off(type);\n }\n return this;\n }\n\n emit<T extends EventEmitter.EventNames<string | symbol>>(\n event: T,\n ...args: EventEmitter.EventArgs<string | symbol, T>\n ): boolean {\n this.view?.emit?.(event, ...args);\n return super.emit(event, ...args);\n }\n\n emitGrammarEvent<T extends EventEmitter.EventNames<string | symbol>>(\n event: T,\n ...args: EventEmitter.EventArgs<string | symbol, T>\n ): boolean {\n return super.emit(event, ...args);\n }\n\n abstract evaluate(upstream: any, parameters: any): this | this;\n abstract output(): any;\n\n evaluateTransform(transforms: IGrammarTask[], upstream: any, parameters: any) {\n if (!transforms || !transforms.length) {\n return upstream;\n }\n let currentUpstreamData = upstream;\n let i = 0;\n const n = transforms.length;\n\n while (i < n) {\n const task = transforms[i];\n\n this.emit(HOOK_EVENT.BEFORE_TRANSFORM, task.type);\n currentUpstreamData = task.transform(\n task.isRawOptions ? task.options : parseOptions(task.options, parameters),\n currentUpstreamData,\n parameters,\n this.view\n );\n i++;\n this.emit(HOOK_EVENT.AFTER_TRANSFORM, task.type);\n }\n\n return currentUpstreamData;\n }\n\n set(value: any): boolean {\n // do nothing\n return false;\n }\n\n id(): string;\n id(id: string): this;\n id(id?: string) {\n if (arguments.length) {\n this.view.grammars.unrecord(this);\n this._id = id;\n this.view.grammars.record(this);\n return this;\n }\n return this._id;\n }\n\n name(): string;\n name(name: string): this;\n name(name?: string) {\n if (arguments.length) {\n this._name = name;\n return this;\n }\n return this._name;\n }\n\n attach(reference: IGrammarBase | IGrammarBase[], count: number = 1) {\n array(reference)\n .filter(ref => !isNil(ref))\n .forEach(ref => {\n if (isNil(reference)) {\n return;\n }\n if (!ref.targets.includes(this)) {\n ref.targets.push(this);\n }\n this.references.set(ref, (this.references.get(ref) ?? 0) + count);\n });\n return this;\n }\n\n detach(reference: IGrammarBase | IGrammarBase[], count: number = 1) {\n array(reference)\n .filter(ref => !isNil(ref))\n .forEach(ref => {\n const refCount = this.references.get(ref) - count;\n if (refCount > 0) {\n this.references.set(ref, refCount - 1);\n } else {\n this.references.delete(ref);\n if (ref.targets.includes(this)) {\n ref.targets = ref.targets.filter(target => target !== this);\n }\n }\n });\n return this;\n }\n\n detachAll() {\n this.references.forEach((count, ref) => {\n this.detach(ref, count);\n });\n }\n\n link(source: IGrammarBase) {\n this.grammarSource = source;\n }\n\n run() {\n const upstream = this.grammarSource?.output();\n const parameters = this.parameters();\n return this.evaluate(upstream, parameters);\n }\n\n commit() {\n this.view.commit(this);\n }\n\n parameters() {\n const params: any = {};\n this.references.forEach((count, ref) => {\n // upstream reference with no valid id will not be recorded in parameters\n if (isValid(ref.id())) {\n params[ref.id() as string] = ref.output();\n }\n });\n return params;\n }\n\n getSpec() {\n return this.spec;\n }\n\n reuse(grammar: IGrammarBase) {\n return this;\n }\n\n clear() {\n this.spec = null;\n this.view = null;\n }\n\n release() {\n this.clear();\n }\n\n protected setFunctionSpec<T>(spec: T | Nil, specField: string) {\n if (!isNil(this.spec[specField])) {\n this.detach(parseFunctionType(this.spec[specField], this.view));\n }\n this.spec[specField] = spec;\n this.attach(parseFunctionType(spec, this.view));\n this.commit();\n return this;\n }\n}\n"]}
|
package/cjs/view/mark.d.ts
CHANGED
|
@@ -38,8 +38,7 @@ export declare class Mark extends GrammarBase implements IMark {
|
|
|
38
38
|
private _getTransformsAfterEncodeItems;
|
|
39
39
|
private _getTransformsAfterEncode;
|
|
40
40
|
private _getTransformsBeforeJoin;
|
|
41
|
-
evaluate(data: any[], parameters: any):
|
|
42
|
-
evaluateSync: (data: any[], parameters: any) => this;
|
|
41
|
+
evaluate(data: any[], parameters: any): this;
|
|
43
42
|
output(): this;
|
|
44
43
|
join(data: IData | string | Nil, key?: MarkKeySpec, sort?: MarkSortSpec, groupBy?: MarkKeySpec, groupSort?: MarkSortSpec): this;
|
|
45
44
|
coordinate(coordinate: ICoordinate | string | Nil): this;
|
package/cjs/view/mark.js
CHANGED
|
@@ -1,30 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
return new (P || (P = Promise))((function(resolve, reject) {
|
|
5
|
-
function fulfilled(value) {
|
|
6
|
-
try {
|
|
7
|
-
step(generator.next(value));
|
|
8
|
-
} catch (e) {
|
|
9
|
-
reject(e);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
function rejected(value) {
|
|
13
|
-
try {
|
|
14
|
-
step(generator.throw(value));
|
|
15
|
-
} catch (e) {
|
|
16
|
-
reject(e);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function step(result) {
|
|
20
|
-
var value;
|
|
21
|
-
result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
|
|
22
|
-
resolve(value);
|
|
23
|
-
}))).then(fulfilled, rejected);
|
|
24
|
-
}
|
|
25
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
26
|
-
}));
|
|
27
|
-
}, __importDefault = this && this.__importDefault || function(mod) {
|
|
3
|
+
var __importDefault = this && this.__importDefault || function(mod) {
|
|
28
4
|
return mod && mod.__esModule ? mod : {
|
|
29
5
|
default: mod
|
|
30
6
|
};
|
|
@@ -40,11 +16,8 @@ class Mark extends grammar_base_1.GrammarBase {
|
|
|
40
16
|
constructor(view, markType, group) {
|
|
41
17
|
super(view), this.grammarType = "mark", this.elements = [], this.elementMap = new Map,
|
|
42
18
|
this.isUpdated = !0, this._isReentered = !1, this.animate = new animate_1.Animate(this, {}),
|
|
43
|
-
this.differ = new differ_1.Differ([]), this.
|
|
44
|
-
|
|
45
|
-
return this.evaluateMainTasks(data, parameters), (null === (_a = this.renderContext) || void 0 === _a ? void 0 : _a.progressive) || this.evaluateTransformSync(this._getTransformsAfterEncode(), this.elements, parameters),
|
|
46
|
-
this;
|
|
47
|
-
}, this.markType = markType, this.spec.type = markType, this.spec.encode = {
|
|
19
|
+
this.differ = new differ_1.Differ([]), this.markType = markType, this.spec.type = markType,
|
|
20
|
+
this.spec.encode = {
|
|
48
21
|
update: {}
|
|
49
22
|
}, this.spec.group = group, group && (this.group = group, this.attach(group), group.appendChild(this));
|
|
50
23
|
}
|
|
@@ -96,7 +69,7 @@ class Mark extends grammar_base_1.GrammarBase {
|
|
|
96
69
|
if (this.needSkipBeforeLayout() && this.view.getLayoutState() === enums_1.LayoutState.before) return this;
|
|
97
70
|
const stage = null === (_a = this.view.renderer) || void 0 === _a ? void 0 : _a.stage();
|
|
98
71
|
this.init(stage, parameters);
|
|
99
|
-
const transformData = this.
|
|
72
|
+
const transformData = this.evaluateTransform(this._getTransformsBeforeJoin(), null != data ? data : constants_1.DefaultMarkData, parameters);
|
|
100
73
|
let inputData = (null == transformData ? void 0 : transformData.progressive) ? data : transformData;
|
|
101
74
|
return this.evaluateGroup(inputData), this.renderContext = this.parseRenderContext(inputData, parameters),
|
|
102
75
|
this.renderContext.progressive ? (this.differ.reset(), this.elementMap.clear(),
|
|
@@ -126,10 +99,8 @@ class Mark extends grammar_base_1.GrammarBase {
|
|
|
126
99
|
}
|
|
127
100
|
evaluate(data, parameters) {
|
|
128
101
|
var _a;
|
|
129
|
-
return
|
|
130
|
-
|
|
131
|
-
this;
|
|
132
|
-
}));
|
|
102
|
+
return this.evaluateMainTasks(data, parameters), (null === (_a = this.renderContext) || void 0 === _a ? void 0 : _a.progressive) || this.evaluateTransform(this._getTransformsAfterEncode(), this.elements, parameters),
|
|
103
|
+
this;
|
|
133
104
|
}
|
|
134
105
|
output() {
|
|
135
106
|
return this;
|
|
@@ -366,7 +337,7 @@ class Mark extends grammar_base_1.GrammarBase {
|
|
|
366
337
|
})) : (null == groupEncodeAttrs ? void 0 : groupEncodeAttrs[element.groupKey]) && !this.isCollectionMark() && element.items.forEach((item => {
|
|
367
338
|
item.nextAttrs = Object.assign(item.nextAttrs, groupEncodeAttrs[element.groupKey]);
|
|
368
339
|
})), element.encodeItems(element.items, encoders, this._isReentered, parameters);
|
|
369
|
-
})), this._isReentered = !1, this.
|
|
340
|
+
})), this._isReentered = !1, this.evaluateTransform(this._getTransformsAfterEncodeItems(), elements, parameters),
|
|
370
341
|
elements.forEach((element => {
|
|
371
342
|
element.encodeGraphic(this.isCollectionMark() ? null == groupEncodeAttrs ? void 0 : groupEncodeAttrs[element.groupKey] : null);
|
|
372
343
|
})), this.emit(enums_1.HOOK_EVENT.AFTER_ELEMENT_ENCODE, {
|
|
@@ -474,7 +445,7 @@ class Mark extends grammar_base_1.GrammarBase {
|
|
|
474
445
|
!onlyPos && (null == groupEncodeAttrs ? void 0 : groupEncodeAttrs[element.groupKey]) && element.items.forEach((item => {
|
|
475
446
|
item.nextAttrs = Object.assign(item.nextAttrs, groupEncodeAttrs[element.groupKey]);
|
|
476
447
|
})), element.encodeItems(element.items, onlyPos ? positionEncoders : encoders, this._isReentered, parameters);
|
|
477
|
-
})), this._isReentered = !1, this.
|
|
448
|
+
})), this._isReentered = !1, this.evaluateTransform(this._getTransformsAfterEncodeItems(), elements, parameters),
|
|
478
449
|
elements.forEach((element => {
|
|
479
450
|
element.encodeGraphic();
|
|
480
451
|
})), this.emit(enums_1.HOOK_EVENT.AFTER_ELEMENT_ENCODE, {
|
|
@@ -526,7 +497,7 @@ class Mark extends grammar_base_1.GrammarBase {
|
|
|
526
497
|
}
|
|
527
498
|
this.emit(enums_1.HOOK_EVENT.AFTER_MARK_ENCODE);
|
|
528
499
|
const progressiveTransforms = null === (_c = this._getTransformsAfterEncode()) || void 0 === _c ? void 0 : _c.filter((entry => !0 === entry.canProgressive));
|
|
529
|
-
(null == progressiveTransforms ? void 0 : progressiveTransforms.length) && this.
|
|
500
|
+
(null == progressiveTransforms ? void 0 : progressiveTransforms.length) && this.evaluateTransform(progressiveTransforms, this.elements, parameters),
|
|
530
501
|
this.renderContext.progressive.currentIndex += 1;
|
|
531
502
|
}
|
|
532
503
|
isLargeMode() {
|