@datagrok-libraries/statistics 1.10.0 → 1.12.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.
@@ -0,0 +1,113 @@
1
+ import * as ui from 'datagrok-api/ui';
2
+ import { Subject } from 'rxjs';
3
+ export class MpoCategoricalEditor {
4
+ constructor(prop, design = false, showControls = false) {
5
+ this.onChanged = new Subject();
6
+ this.supportsModeDialog = true;
7
+ this.desirabilityInputs = [];
8
+ this.form = null;
9
+ this.columnCategories = null;
10
+ this._prop = prop;
11
+ this.design = design;
12
+ this.showControls = showControls;
13
+ this.root = ui.divV([], 'statistics-mpo-cat-editor');
14
+ this.buildForm();
15
+ }
16
+ buildForm() {
17
+ var _a;
18
+ const categories = (_a = this._prop.categories) !== null && _a !== void 0 ? _a : [];
19
+ if (this.form) {
20
+ ui.empty(this.root);
21
+ this.form = null;
22
+ this.desirabilityInputs = [];
23
+ }
24
+ if (this.design)
25
+ this.buildDesignForm(categories);
26
+ else
27
+ this.buildViewForm(categories);
28
+ }
29
+ createDesirabilityInput(label, cat) {
30
+ var _a;
31
+ const input = ui.input.float(label, { value: (_a = cat.desirability) !== null && _a !== void 0 ? _a : 0.5, min: 0, max: 1, format: '#0.000',
32
+ onValueChanged: (value) => {
33
+ cat.desirability = value;
34
+ this.onChanged.next(this._prop);
35
+ },
36
+ });
37
+ this.desirabilityInputs.push(input);
38
+ return input;
39
+ }
40
+ buildViewForm(categories) {
41
+ for (const cat of categories)
42
+ this.createDesirabilityInput(cat.name, cat);
43
+ this.form = ui.form(this.desirabilityInputs);
44
+ this.root.append(this.form);
45
+ }
46
+ buildDesignForm(categories) {
47
+ const header = ui.divH([
48
+ ui.divText('Name', 'statistics-mpo-cat-col-header statistics-mpo-cat-name'),
49
+ ui.divText('Score', 'statistics-mpo-cat-col-header statistics-mpo-cat-desirability'),
50
+ ...(this.showControls ? [ui.div([], { style: { width: '40px' } })] : []),
51
+ ], 'statistics-mpo-cat-row statistics-mpo-cat-header-row');
52
+ const rows = categories.map((cat, idx) => this.buildCategoryRow(cat, idx));
53
+ this.form = ui.divV([header, ...rows]);
54
+ this.root.append(this.form);
55
+ }
56
+ buildCategoryRow(cat, idx) {
57
+ const nameInput = this.columnCategories ?
58
+ ui.input.choice('', { items: this.columnCategories, nullable: true, value: cat.name || null,
59
+ onValueChanged: (v) => {
60
+ cat.name = v !== null && v !== void 0 ? v : '';
61
+ this.onChanged.next(this._prop);
62
+ },
63
+ }) :
64
+ ui.input.string('', { value: cat.name, onValueChanged: (v) => {
65
+ cat.name = v;
66
+ this.onChanged.next(this._prop);
67
+ } });
68
+ nameInput.root.classList.add('statistics-mpo-cat-name');
69
+ const desInput = this.createDesirabilityInput('', cat);
70
+ desInput.root.classList.add('statistics-mpo-cat-desirability');
71
+ const elements = [nameInput.root, desInput.root];
72
+ if (this.showControls) {
73
+ const add = ui.icons.add(() => {
74
+ const newCat = { name: this.columnCategories ? '' : `Category ${this._prop.categories.length + 1}`, desirability: 1 };
75
+ this._prop.categories.splice(idx + 1, 0, newCat);
76
+ this.buildForm();
77
+ this.onChanged.next(this._prop);
78
+ });
79
+ const del = ui.icons.delete(() => {
80
+ this._prop.categories.splice(idx, 1);
81
+ this.buildForm();
82
+ this.onChanged.next(this._prop);
83
+ });
84
+ elements.push(ui.divH([add, del], 'statistics-mpo-control-buttons'));
85
+ }
86
+ return ui.divH(elements, 'statistics-mpo-cat-row');
87
+ }
88
+ redrawAll(notify = true) {
89
+ this.buildForm();
90
+ if (notify)
91
+ this.onChanged.next(this._prop);
92
+ }
93
+ setChoices(choices) {
94
+ this.columnCategories = choices;
95
+ this.buildForm();
96
+ }
97
+ setColumn(col) {
98
+ var _a, _b;
99
+ if (!col)
100
+ return;
101
+ this.columnCategories = col.isCategorical ? [...col.categories] : null;
102
+ const existing = new Map((_b = (_a = this._prop.categories) === null || _a === void 0 ? void 0 : _a.map((c) => [c.name, c.desirability])) !== null && _b !== void 0 ? _b : []);
103
+ this._prop.categories = col.categories.map((c) => {
104
+ var _a;
105
+ return ({
106
+ name: c,
107
+ desirability: (_a = existing.get(c)) !== null && _a !== void 0 ? _a : 1,
108
+ });
109
+ });
110
+ this.buildForm();
111
+ }
112
+ }
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBvLWNhdGVnb3JpY2FsLWVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1wby1jYXRlZ29yaWNhbC1lZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd0QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRzdCLE1BQU0sT0FBTyxvQkFBb0I7SUFZL0IsWUFBWSxJQUE2QixFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsWUFBWSxHQUFHLEtBQUs7UUFWL0UsY0FBUyxHQUFHLElBQUksT0FBTyxFQUEyQixDQUFDO1FBQ25ELHVCQUFrQixHQUFZLElBQUksQ0FBQztRQUszQix1QkFBa0IsR0FBbUIsRUFBRSxDQUFDO1FBQ3hDLFNBQUksR0FBdUIsSUFBSSxDQUFDO1FBQ2hDLHFCQUFnQixHQUFvQixJQUFJLENBQUM7UUFHL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU8sU0FBUzs7UUFDZixNQUFNLFVBQVUsR0FBRyxNQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxtQ0FBSSxFQUFFLENBQUM7UUFFL0MsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztTQUM5QjtRQUVE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YSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBQSxNQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSwwQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsbUNBQUksRUFBRSxDQUFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRTs7WUFBQyxPQUFBLENBQUM7Z0JBQ3pELElBQUksRUFBRSxDQUFDO2dCQUNQLFlBQVksRUFBRSxNQUFBLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLG1DQUFJLENBQUM7YUFDbkMsQ0FBQyxDQUFBO1NBQUEsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDYXRlZ29yaWNhbERlc2lyYWJpbGl0eX0gZnJvbSAnLi4vbXBvJztcblxuZXhwb3J0IGNsYXNzIE1wb0NhdGVnb3JpY2FsRWRpdG9yIHtcbiAgcm9vdDogSFRNTERpdkVsZW1lbnQ7XG4gIG9uQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PENhdGVnb3JpY2FsRGVzaXJhYmlsaXR5PigpO1xuICBzdXBwb3J0c01vZGVEaWFsb2c6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHByaXZhdGUgX3Byb3A6IENhdGVnb3JpY2FsRGVzaXJhYmlsaXR5O1xuICBwcml2YXRlIGRlc2lnbjogYm9vbGVhbjtcbiAgcHJpdmF0ZSBzaG93Q29udHJvbHM6IGJvb2xlYW47XG4gIHByaXZhdGUgZGVzaXJhYmlsaXR5SW5wdXRzOiBERy5JbnB1dEJhc2VbXSA9IFtdO1xuICBwcml2YXRlIGZvcm06IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY29sdW1uQ2F0ZWdvcmllczogc3RyaW5nW10gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcm9wOiBDYXRlZ29yaWNhbERlc2lyYWJpbGl0eSwgZGVzaWduID0gZmFsc2UsIHNob3dDb250cm9scyA9IGZhbHNlKSB7XG4gICAgdGhpcy5fcHJvcCA9IHByb3A7XG4gICAgdGhpcy5kZXNpZ24gPSBkZXNpZ247XG4gICAgdGhpcy5zaG93Q29udHJvbHMgPSBzaG93Q29udHJvbHM7XG4gICAgdGhpcy5yb290ID0gdWkuZGl2VihbXSwgJ3N0YXRpc3RpY3MtbXBvLWNhdC1lZGl0b3InKTtcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgY2F0ZWdvcmllcyA9IHRoaXMuX3Byb3AuY2F0ZWdvcmllcyA/PyBbXTtcblxuICAgIGlmICh0aGlzLmZvcm0pIHtcbiAgICAgIHVpLmVtcHR5KHRoaXMucm9vdCk7XG4gICAgICB0aGlzLmZvcm0gPSBudWxsO1xuICAgICAgdGhpcy5kZXNpcmFiaWxpdHlJbnB1dHMgPSBbXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZXNpZ24pXG4gICAgICB0aGlzLmJ1aWxkRGVzaWduRm9ybShjYXRlZ29yaWVzKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmJ1aWxkVmlld0Zvcm0oY2F0ZWdvcmllcyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURlc2lyYWJpbGl0eUlucHV0KFxuICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgY2F0OiB7bmFtZTogc3RyaW5nOyBkZXNpcmFiaWxpdHk6IG51bWJlcn0sXG4gICk6IERHLklucHV0QmFzZSB7XG4gICAgY29uc3QgaW5wdXQgPSB1aS5pbnB1dC5mbG9hdChsYWJlbCwge3ZhbHVlOiBjYXQuZGVzaXJhYmlsaXR5ID8/IDAuNSwgbWluOiAwLCBtYXg6IDEsIGZvcm1hdDogJyMwLjAwMCcsXG4gICAgICBvblZhbHVlQ2hhbmdlZDogKHZhbHVlOiBudW1iZXIpID0+IHtcbiAgICAgICAgY2F0LmRlc2lyYWJpbGl0eSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlZC5uZXh0KHRoaXMuX3Byb3ApO1xuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmRlc2lyYWJpbGl0eUlucHV0cy5wdXNoKGlucHV0KTtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVmlld0Zvcm0oY2F0ZWdvcmllczoge25hbWU6IHN0cmluZzsgZGVzaXJhYmlsaXR5OiBudW1iZXJ9W10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzKVxuICAgICAgdGhpcy5jcmVhdGVEZXNpcmFiaWxpdHlJbnB1dChjYXQubmFtZSwgY2F0KTtcblxuICAgIHRoaXMuZm9ybSA9IHVpLmZvcm0odGhpcy5kZXNpcmFiaWxpdHlJbnB1dHMpO1xuICAgIHRoaXMucm9vdC5hcHBlbmQodGhpcy5mb3JtKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGREZXNpZ25Gb3JtKGNhdGVnb3JpZXM6IHtuYW1lOiBzdHJpbmc7IGRlc2lyYWJpbGl0eTogbnVtYmVyfVtdKTogdm9pZCB7XG4gICAgY29uc3QgaGVhZGVyID0gdWkuZGl2SChbXG4gICAgICB1aS5kaXZUZXh0KCdOYW1lJywgJ3N0YXRpc3RpY3MtbXBvLWNhdC1jb2wtaGVhZGVyIHN0YXRpc3RpY3MtbXBvLWNhdC1uYW1lJyksXG4gICAgICB1aS5kaXZUZXh0KCdTY29yZScsICdzdGF0aXN0aWNzLW1wby1jYXQtY29sLWhlYWRlciBzdGF0aXN0aWNzLW1wby1jYXQtZGVzaXJhYmlsaXR5JyksXG4gICAgICAuLi4odGhpcy5zaG93Q29udHJvbHMgPyBbdWkuZGl2KFtdLCB7c3R5bGU6IHt3aWR0aDogJzQwcHgnfX0pXSA6IFtdKSxcbiAgICBdLCAnc3RhdGlzdGljcy1tcG8tY2F0LXJvdyBzdGF0aXN0aWNzLW1wby1jYXQtaGVhZGVyLXJvdycpO1xuXG4gICAgY29uc3Qgcm93cyA9IGNhdGVnb3JpZXMubWFwKChjYXQsIGlkeCkgPT4gdGhpcy5idWlsZENhdGVnb3J5Um93KGNhdCwgaWR4KSk7XG5cbiAgICB0aGlzLmZvcm0gPSB1aS5kaXZWKFtoZWFkZXIsIC4uLnJvd3NdKTtcbiAgICB0aGlzLnJvb3QuYXBwZW5kKHRoaXMuZm9ybSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ2F0ZWdvcnlSb3coXG4gICAgY2F0OiB7bmFtZTogc3RyaW5nOyBkZXNpcmFiaWxpdHk6IG51bWJlcn0sXG4gICAgaWR4OiBudW1iZXIsXG4gICk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBuYW1lSW5wdXQgPSB0aGlzLmNvbHVtbkNhdGVnb3JpZXMgP1xuICAgICAgdWkuaW5wdXQuY2hvaWNlKCcnLCB7aXRlbXM6IHRoaXMuY29sdW1uQ2F0ZWdvcmllcywgbnVsbGFibGU6IHRydWUsIHZhbHVlOiBjYXQubmFtZSB8fCBudWxsLFxuICAgICAgICBvblZhbHVlQ2hhbmdlZDogKHYpID0+IHtcbiAgICAgICAgICBjYXQubmFtZSA9IHYgPz8gJyc7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZWQubmV4dCh0aGlzLl9wcm9wKTtcbiAgICAgICAgfSxcbiAgICAgIH0pIDpcbiAgICAgIHVpLmlucHV0LnN0cmluZygnJywge3ZhbHVlOiBjYXQubmFtZSwgb25WYWx1ZUNoYW5nZWQ6ICh2KSA9PiB7XG4gICAgICAgIGNhdC5uYW1lID0gdjtcbiAgICAgICAgdGhpcy5vbkNoYW5nZWQubmV4dCh0aGlzLl9wcm9wKTtcbiAgICAgIH19KTtcbiAgICBuYW1lSW5wdXQucm9vdC5jbGFzc0xpc3QuYWRkKCdzdGF0aXN0aWNzLW1wby1jYXQtbmFtZScpO1xuXG4gICAgY29uc3QgZGVzSW5wdXQgPSB0aGlzLmNyZWF0ZURlc2lyYWJpbGl0eUlucHV0KCcnLCBjYXQpO1xuICAgIGRlc0lucHV0LnJvb3QuY2xhc3NMaXN0LmFkZCgnc3RhdGlzdGljcy1tcG8tY2F0LWRlc2lyYWJpbGl0eScpO1xuXG4gICAgY29uc3QgZWxlbWVudHM6IEhUTUxFbGVtZW50W10gPSBbbmFtZUlucHV0LnJvb3QsIGRlc0lucHV0LnJvb3RdO1xuXG4gICAgaWYgKHRoaXMuc2hvd0NvbnRyb2xzKSB7XG4gICAgICBjb25zdCBhZGQgPSB1aS5pY29ucy5hZGQoKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdDYXQgPSB7bmFtZTogdGhpcy5jb2x1bW5DYXRlZ29yaWVzID8gJycgOiBgQ2F0ZWdvcnkgJHt0aGlzLl9wcm9wLmNhdGVnb3JpZXMubGVuZ3RoICsgMX1gLCBkZXNpcmFiaWxpdHk6IDF9O1xuICAgICAgICB0aGlzLl9wcm9wLmNhdGVnb3JpZXMuc3BsaWNlKGlkeCArIDEsIDAsIG5ld0NhdCk7XG4gICAgICAgIHRoaXMuYnVpbGRGb3JtKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2VkLm5leHQodGhpcy5fcHJvcCk7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZGVsID0gdWkuaWNvbnMuZGVsZXRlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fcHJvcC5jYXRlZ29yaWVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICB0aGlzLmJ1aWxkRm9ybSgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlZC5uZXh0KHRoaXMuX3Byb3ApO1xuICAgICAgfSk7XG5cbiAgICAgIGVsZW1lbnRzLnB1c2godWkuZGl2SChbYWRkLCBkZWxdLCAnc3RhdGlzdGljcy1tcG8tY29udHJvbC1idXR0b25zJykpO1xuICAgIH1cblxuICAgIHJldHVybiB1aS5kaXZIKGVsZW1lbnRzLCAnc3RhdGlzdGljcy1tcG8tY2F0LXJvdycpO1xuICB9XG5cbiAgcmVkcmF3QWxsKG5vdGlmeTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xuICAgIGlmIChub3RpZnkpXG4gICAgICB0aGlzLm9uQ2hhbmdlZC5uZXh0KHRoaXMuX3Byb3ApO1xuICB9XG5cbiAgc2V0Q2hvaWNlcyhjaG9pY2VzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1uQ2F0ZWdvcmllcyA9IGNob2ljZXM7XG4gICAgdGhpcy5idWlsZEZvcm0oKTtcbiAgfVxuXG4gIHNldENvbHVtbihjb2w6IERHLkNvbHVtbiB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIWNvbClcbiAgICAgIHJldHVybjtcblxuICAgIHRoaXMuY29sdW1uQ2F0ZWdvcmllcyA9IGNvbC5pc0NhdGVnb3JpY2FsID8gWy4uLmNvbC5jYXRlZ29yaWVzXSA6IG51bGw7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBuZXcgTWFwKHRoaXMuX3Byb3AuY2F0ZWdvcmllcz8ubWFwKChjKSA9PiBbYy5uYW1lLCBjLmRlc2lyYWJpbGl0eV0pID8/IFtdKTtcbiAgICB0aGlzLl9wcm9wLmNhdGVnb3JpZXMgPSBjb2wuY2F0ZWdvcmllcy5tYXAoKGM6IHN0cmluZykgPT4gKHtcbiAgICAgIG5hbWU6IGMsXG4gICAgICBkZXNpcmFiaWxpdHk6IGV4aXN0aW5nLmdldChjKSA/PyAxLFxuICAgIH0pKTtcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,46 @@
1
+ import * as DG from 'datagrok-api/dg';
2
+ import { DesirabilityLine, NumericalDesirability } from '../mpo';
3
+ import { Subject } from 'rxjs';
4
+ export declare class MpoDesirabilityLineEditor {
5
+ root: HTMLDivElement;
6
+ onChanged: Subject<DesirabilityLine>;
7
+ supportsModeDialog: boolean;
8
+ private _prop;
9
+ private barsLayer?;
10
+ private pendingBarValues?;
11
+ private stage?;
12
+ private layer?;
13
+ private konvaLine?;
14
+ private pointsGroup?;
15
+ private barValues?;
16
+ private redrawFn;
17
+ private specialHandle?;
18
+ onParamsChanged?: (prop: NumericalDesirability) => void;
19
+ private ignoreNextClick;
20
+ private dragScaleX;
21
+ private dragScaleY;
22
+ private _width;
23
+ private _height;
24
+ constructor(prop: NumericalDesirability, width: number, height: number);
25
+ private ensureDefaultLine;
26
+ private updateDragScales;
27
+ private isInPlotArea;
28
+ private initKonva;
29
+ get line(): DesirabilityLine;
30
+ private computeLine;
31
+ private drawAxes;
32
+ getMinX(): number;
33
+ getMaxX(): number;
34
+ getDefaultMean(): number;
35
+ getDefaultSigma(): number;
36
+ getDefaultX0(): number;
37
+ getDefaultK(): number;
38
+ redrawAll(notify?: boolean): void;
39
+ drawBars(values?: number[]): void;
40
+ private enableCurveDrag;
41
+ private addSpecialHandle;
42
+ private showPointEditor;
43
+ setRange(min: number, max: number): void;
44
+ setColumn(col: DG.Column | null): void;
45
+ }
46
+ //# sourceMappingURL=mpo-line-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpo-line-editor.d.ts","sourceRoot":"","sources":["mpo-line-editor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtC,OAAO,EAAC,gBAAgB,EAAE,qBAAqB,EAAC,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AA2D7B,qBAAa,yBAAyB;IACpC,IAAI,iBAAY;IAChB,SAAS,4BAAmC;IAC5C,kBAAkB,EAAE,OAAO,CAAQ;IAEnC,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,SAAS,CAAC,CAAc;IAChC,OAAO,CAAC,gBAAgB,CAAC,CAAW;IAEpC,OAAO,CAAC,KAAK,CAAC,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAC,CAAc;IAE5B,OAAO,CAAC,SAAS,CAAC,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,SAAS,CAAC,CAAW;IAE7B,OAAO,CAAC,QAAQ,CAA8B;IAE9C,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAGxD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAYtE,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,YAAY;YASN,SAAS;IAkPvB,IAAI,IAAI,IAAI,gBAAgB,CAE3B;IAED,OAAO,CAAC,WAAW;IAoCnB,OAAO,CAAC,QAAQ;IAkBhB,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,eAAe,IAAI,MAAM;IAIzB,YAAY,IAAI,MAAM;IAItB,WAAW,IAAI,MAAM;IAIrB,SAAS,CAAC,MAAM,GAAE,OAAc,GAAG,IAAI;IAqBvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE;IAgE1B,OAAO,CAAC,eAAe;IAoEvB,OAAO,CAAC,gBAAgB;IA2DxB,OAAO,CAAC,eAAe;IAoCvB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAkCxC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI;CAOvC"}