@datagrok-libraries/utils 3.3.2 → 4.0.1

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.
Files changed (39) hide show
  1. package/package.json +1 -1
  2. package/src/test.d.ts +1 -1
  3. package/src/test.d.ts.map +1 -1
  4. package/src/test.js +6 -6
  5. package/css/file-input.css +0 -32
  6. package/css/history-input.css +0 -27
  7. package/css/history-panel.css +0 -57
  8. package/css/pipeline-view.css +0 -13
  9. package/css/rich-function-view.css +0 -4
  10. package/src/computation-view.d.ts +0 -78
  11. package/src/computation-view.d.ts.map +0 -1
  12. package/src/computation-view.js +0 -157
  13. package/src/function-view.d.ts +0 -226
  14. package/src/function-view.d.ts.map +0 -1
  15. package/src/function-view.js +0 -384
  16. package/src/history-utils.d.ts +0 -65
  17. package/src/history-utils.d.ts.map +0 -1
  18. package/src/history-utils.js +0 -212
  19. package/src/pipeline-view.d.ts +0 -40
  20. package/src/pipeline-view.d.ts.map +0 -1
  21. package/src/pipeline-view.js +0 -178
  22. package/src/rich-function-view.d.ts +0 -55
  23. package/src/rich-function-view.d.ts.map +0 -1
  24. package/src/rich-function-view.js +0 -571
  25. package/src/shared-components/file-input.d.ts +0 -23
  26. package/src/shared-components/file-input.d.ts.map +0 -1
  27. package/src/shared-components/file-input.js +0 -133
  28. package/src/shared-components/history-input.d.ts +0 -26
  29. package/src/shared-components/history-input.d.ts.map +0 -1
  30. package/src/shared-components/history-input.js +0 -192
  31. package/src/shared-components/history-panel.d.ts +0 -65
  32. package/src/shared-components/history-panel.d.ts.map +0 -1
  33. package/src/shared-components/history-panel.js +0 -502
  34. package/src/shared-components/ui-utils.d.ts +0 -10
  35. package/src/shared-components/ui-utils.d.ts.map +0 -1
  36. package/src/shared-components/ui-utils.js +0 -19
  37. package/src/validation.d.ts +0 -56
  38. package/src/validation.d.ts.map +0 -1
  39. package/src/validation.js +0 -152
@@ -1,212 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- /* eslint-disable max-len */
11
- /* eslint-disable valid-jsdoc */
12
- import * as grok from 'datagrok-api/grok';
13
- import * as DG from 'datagrok-api/dg';
14
- import wu from 'wu';
15
- const getSearchStringByPattern = (datePattern) => {
16
- switch (datePattern) {
17
- case 'Today':
18
- return `started > -1d`;
19
- case 'Yesterday':
20
- return `started > -2d and started < -1d`;
21
- case 'Any time':
22
- return ``;
23
- case 'Last year':
24
- return `started > -2y and started < -1y`;
25
- case 'This year':
26
- return `started > -1y`;
27
- case 'Last month':
28
- return `started > -2m and started < -1m`;
29
- case 'This month':
30
- return `started > -1m`;
31
- case 'Last week':
32
- return `started > -2w and started < -1w`;
33
- case 'This week':
34
- return `started > -1w`;
35
- }
36
- };
37
- export var historyUtils;
38
- (function (historyUtils) {
39
- const scriptsCache = {};
40
- // TODO: add users and groups cache
41
- function loadChildRuns(funcCallId) {
42
- return __awaiter(this, void 0, void 0, function* () {
43
- const parentRun = yield grok.dapi.functions.calls.allPackageVersions().find(funcCallId);
44
- parentRun.options['isHistorical'] = true;
45
- const childRuns = yield grok.dapi.functions.calls.allPackageVersions()
46
- .filter(`options.parentCallId="${funcCallId}"`).list();
47
- yield Promise.all(childRuns.map((childRun) => __awaiter(this, void 0, void 0, function* () {
48
- var _a;
49
- const id = childRun.func.id;
50
- // DEALING WITH BUG: https://reddata.atlassian.net/browse/GROK-12464
51
- const script = (_a = scriptsCache[id]) !== null && _a !== void 0 ? _a : yield grok.dapi.functions.allPackageVersions().find(id);
52
- if (!scriptsCache[id])
53
- scriptsCache[id] = script;
54
- childRun.func = script;
55
- })));
56
- return { parentRun, childRuns };
57
- });
58
- }
59
- historyUtils.loadChildRuns = loadChildRuns;
60
- /**
61
- * Loads a FuncCall with a specified ID. By default, also loads its' inputs/outputs and author.
62
- * FuncCall is loaded with internal TableInfo structs instead of DG.Dataframe-s.
63
- * Thus, we should load them separately, and it is time-consuming. If you don't need actual values of DF-s,
64
- * you can skip DF loading using {@link skipDfLoad} param.
65
- * @param funcCallId FuncCall ID to load
66
- * @param skipDfLoad If true, skips replacing TableInfo with th actual dataframe
67
- * @returns Requested FuncCall
68
- */
69
- function loadRun(funcCallId, skipDfLoad = false) {
70
- var _a;
71
- return __awaiter(this, void 0, void 0, function* () {
72
- const pulledRun = yield grok.dapi.functions.calls.allPackageVersions()
73
- .include('inputs, outputs, session.user').find(funcCallId);
74
- const id = pulledRun.func.id;
75
- // DEALING WITH BUG: https://reddata.atlassian.net/browse/GROK-12464
76
- const script = (_a = scriptsCache[id]) !== null && _a !== void 0 ? _a : yield grok.dapi.functions.allPackageVersions().find(id);
77
- if (!scriptsCache[id])
78
- scriptsCache[id] = script;
79
- pulledRun.func = script;
80
- pulledRun.options['isHistorical'] = true;
81
- if (!skipDfLoad) {
82
- const dfOutputs = wu(pulledRun.outputParams.values())
83
- .filter((output) => output.property.propertyType === DG.TYPE.DATA_FRAME);
84
- for (const output of dfOutputs)
85
- pulledRun.outputs[output.name] = yield grok.dapi.tables.getTable(pulledRun.outputs[output.name]);
86
- const dfInputs = wu(pulledRun.inputParams.values())
87
- .filter((input) => input.property.propertyType === DG.TYPE.DATA_FRAME);
88
- for (const input of dfInputs)
89
- pulledRun.inputs[input.name] = yield grok.dapi.tables.getTable(pulledRun.inputs[input.name]);
90
- }
91
- return pulledRun;
92
- });
93
- }
94
- historyUtils.loadRun = loadRun;
95
- /**
96
- * Saved given FuncCall.
97
- * FuncCall is only stores references to actual dataframes. Thus, we should upload them separately
98
- * @param funcCallcallToSaveId FuncCall to save
99
- * @returns Saved FuncCall
100
- */
101
- function saveRun(callToSave) {
102
- return __awaiter(this, void 0, void 0, function* () {
103
- const dfOutputs = wu(callToSave.outputParams.values())
104
- .filter((output) => output.property.propertyType === DG.TYPE.DATA_FRAME);
105
- for (const output of dfOutputs)
106
- yield grok.dapi.tables.uploadDataFrame(callToSave.outputs[output.name]);
107
- const dfInputs = wu(callToSave.inputParams.values())
108
- .filter((input) => input.property.propertyType === DG.TYPE.DATA_FRAME);
109
- for (const input of dfInputs)
110
- yield grok.dapi.tables.uploadDataFrame(callToSave.inputs[input.name]);
111
- return yield grok.dapi.functions.calls.allPackageVersions().save(callToSave);
112
- });
113
- }
114
- historyUtils.saveRun = saveRun;
115
- function deleteRun(callToDelete) {
116
- return __awaiter(this, void 0, void 0, function* () {
117
- yield grok.dapi.functions.calls.allPackageVersions().delete(callToDelete);
118
- });
119
- }
120
- historyUtils.deleteRun = deleteRun;
121
- /**
122
- * Loads all the function call of this function.
123
- * Designed to pull hstorical runs in fast manner and the call {@link loadRun} with specified run ID.
124
- * WARNING: FuncCall inputs/outputs fields are not included
125
- * @param funcId ID of Func which calls we are looking for. Get it using {@link func.id} field
126
- * @return Promise on array of FuncCalls corresponding to the passed Func ID
127
- * @stability Deprecated. Script ID changes with every package release, so searching by ID is useless in practice.
128
- */
129
- function pullRuns(funcId, filterOptions = {}, listOptions = {}) {
130
- return __awaiter(this, void 0, void 0, function* () {
131
- let filteringString = `func.id="${funcId}"`;
132
- filteringString += filterOptions.author ? ` and session.user.id="${filterOptions.author.id}"` : '';
133
- filteringString += filterOptions.date ? getSearchStringByPattern(filterOptions.date) : '';
134
- const filter = grok.dapi.functions.calls
135
- .allPackageVersions()
136
- .filter(filteringString)
137
- .include('session.user, options');
138
- const list = filter.list(listOptions);
139
- return list;
140
- });
141
- }
142
- historyUtils.pullRuns = pullRuns;
143
- /**
144
- * Loads all the function call of this function.
145
- * Designed to pull hstorical runs in fast manner and the call {@link loadRun} with specified run ID.
146
- * WARNING: FuncCall inputs/outputs fields are not included by default. Use {@link includedFields} to specify fields to load.
147
- * @param funcName Name of Func which calls we are looking for. Get it using {@link func.name} field
148
- * @param filterOptions Struct containing filtering options. These options will be passed as valid filtering string to a request.
149
- * @param listOptions Struct containing listing options.
150
- * @param includedFields List of fields to include into response. See {@link DG.FuncCall} struct to see possible values. E.g., 'inputs' or 'outputs'
151
- * @return Promise on array of FuncCalls corresponding to the passed Func ID
152
- * @stability Stable
153
- */
154
- function pullRunsByName(funcName, filterOptions = [], listOptions = {}, includedFields = []) {
155
- var _a;
156
- return __awaiter(this, void 0, void 0, function* () {
157
- let filteringString = ``;
158
- for (const filterOption of filterOptions) {
159
- const filterOptionCriteria = [];
160
- if (filterOption.author)
161
- filterOptionCriteria.push(`session.user.id="${filterOption.author.id}"`);
162
- if (filterOption.date)
163
- filterOptionCriteria.push(getSearchStringByPattern(filterOption.date));
164
- if (filterOption.isShared)
165
- filterOptionCriteria.push(`options.isShared="true"`);
166
- if (filterOption.text) {
167
- filterOptionCriteria.push(`((options.title like "${filterOption.text}") or (options.annotation like "${filterOption.text}"))`);
168
- }
169
- const filterOptionString = filterOptionCriteria.join(' and ');
170
- if (filterOptionString !== '') {
171
- if (filteringString === '')
172
- filteringString += `(${filterOptionString})`;
173
- else
174
- filteringString += ` or (${filterOptionString})`;
175
- }
176
- }
177
- if (filteringString !== '')
178
- filteringString = ` and (${filteringString})`;
179
- const result = yield grok.dapi.functions.calls
180
- .allPackageVersions()
181
- .filter(`func.name="${funcName}"${filteringString}`)
182
- .include(`${includedFields.join(',')}`)
183
- .list(listOptions);
184
- for (const pulledRun of result) {
185
- const id = pulledRun.func.id;
186
- const script = (_a = scriptsCache[id]) !== null && _a !== void 0 ? _a : yield grok.dapi.functions.allPackageVersions().find(id);
187
- if (!scriptsCache[id])
188
- scriptsCache[id] = script;
189
- pulledRun.func = script;
190
- }
191
- if (includedFields.includes('inputs') || includedFields.includes('func.params')) {
192
- for (const pulledRun of result) {
193
- const dfInputs = wu(pulledRun.inputParams.values())
194
- .filter((input) => input.property.propertyType === DG.TYPE.DATA_FRAME);
195
- for (const input of dfInputs)
196
- pulledRun.inputs[input.name] = yield grok.dapi.tables.getTable(pulledRun.inputs[input.name]);
197
- }
198
- }
199
- if (includedFields.includes('outputs') || includedFields.includes('func.params')) {
200
- for (const pulledRun of result) {
201
- const dfOutputs = wu(pulledRun.outputParams.values())
202
- .filter((output) => output.property.propertyType === DG.TYPE.DATA_FRAME);
203
- for (const output of dfOutputs)
204
- pulledRun.outputs[output.name] = yield grok.dapi.tables.getTable(pulledRun.outputs[output.name]);
205
- }
206
- }
207
- return result;
208
- });
209
- }
210
- historyUtils.pullRunsByName = pullRunsByName;
211
- })(historyUtils || (historyUtils = {}));
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhpc3RvcnktdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsNEJBQTRCO0FBQzVCLGdDQUFnQztBQUNoQyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBRTFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBV3BCLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxXQUF3QixFQUFFLEVBQUU7SUFDNUQsUUFBUSxXQUFXLEVBQUU7UUFDckIsS0FBSyxPQUFPO1lBQ1YsT0FBTyxlQUFlLENBQUM7UUFDekIsS0FBSyxXQUFXO1lBQ2QsT0FBTyxpQ0FBaUMsQ0FBQztRQUMzQyxLQUFLLFVBQVU7WUFDYixPQUFPLEVBQUUsQ0FBQztRQUNaLEtBQUssV0FBVztZQUNkLE9BQU8saUNBQWlDLENBQUM7UUFDM0MsS0FBSyxXQUFXO1lBQ2QsT0FBTyxlQUFlLENBQUM7UUFDekIsS0FBSyxZQUFZO1lBQ2YsT0FBTyxpQ0FBaUMsQ0FBQztRQUMzQyxLQUFLLFlBQVk7WUFDZixPQUFPLGVBQWUsQ0FBQztRQUN6QixLQUFLLFdBQVc7WUFDZCxPQUFPLGlDQUFpQyxDQUFDO1FBQzNDLEtBQUssV0FBVztZQUNkLE9BQU8sZUFBZSxDQUFDO0tBQ3hCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxLQUFXLFlBQVksQ0F3TDVCO0FBeExELFdBQWlCLFlBQVk7SUFDM0IsTUFBTSxZQUFZLEdBQUcsRUFBK0IsQ0FBQztJQUNyRCxtQ0FBbUM7SUFFbkMsU0FBc0IsYUFBYSxDQUNqQyxVQUFrQjs7WUFFbEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEYs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TUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUNoRzthQUNGO1lBRUQsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ2hGLEtBQUssTUFBTSxTQUFTLElBQUksTUFBTSxFQUFFO29CQUM5QixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQXdCLENBQUM7eUJBQ3hFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDM0UsS0FBSyxNQUFNLE1BQU0sSUFBSSxTQUFTO3dCQUM1QixTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUNwRzthQUNGO1lBRUQsT0FBTyxNQUFNLENBQUM7O0tBQ2Y7SUE5RHFCLDJCQUFjLGlCQThEbkMsQ0FBQTtBQUNILENBQUMsRUF4TGdCLFlBQVksS0FBWixZQUFZLFFBd0w1QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHd1IGZyb20gJ3d1JztcblxudHlwZSBEYXRlT3B0aW9ucyA9ICdBbnkgdGltZScgfCAnVG9kYXknIHwgJ1llc3RlcmRheScgfCAnVGhpcyB3ZWVrJyB8ICdMYXN0IHdlZWsnIHwgJ1RoaXMgbW9udGgnIHwgJ0xhc3QgbW9udGgnIHwgJ1RoaXMgeWVhcicgfCAnTGFzdCB5ZWFyJztcblxudHlwZSBGaWx0ZXJPcHRpb25zID0ge1xuICB0ZXh0Pzogc3RyaW5nLFxuICBkYXRlPzogRGF0ZU9wdGlvbnMsXG4gIGF1dGhvcj86IERHLlVzZXIsXG4gIGlzU2hhcmVkPzogYm9vbGVhbixcbn07XG5cbmNvbnN0IGdldFNlYXJjaFN0cmluZ0J5UGF0dGVybiA9IChkYXRlUGF0dGVybjogRGF0ZU9wdGlvbnMpID0+IHtcbiAgc3dpdGNoIChkYXRlUGF0dGVybikge1xuICBjYXNlICdUb2RheSc6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTFkYDtcbiAgY2FzZSAnWWVzdGVyZGF5JzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMmQgYW5kIHN0YXJ0ZWQgPCAtMWRgO1xuICBjYXNlICdBbnkgdGltZSc6XG4gICAgcmV0dXJuIGBgO1xuICBjYXNlICdMYXN0IHllYXInOlxuICAgIHJldHVybiBgc3RhcnRlZCA+IC0yeSBhbmQgc3RhcnRlZCA8IC0xeWA7XG4gIGNhc2UgJ1RoaXMgeWVhcic6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTF5YDtcbiAgY2FzZSAnTGFzdCBtb250aCc6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTJtIGFuZCBzdGFydGVkIDwgLTFtYDtcbiAgY2FzZSAnVGhpcyBtb250aCc6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTFtYDtcbiAgY2FzZSAnTGFzdCB3ZWVrJzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMncgYW5kIHN0YXJ0ZWQgPCAtMXdgO1xuICBjYXNlICdUaGlzIHdlZWsnOlxuICAgIHJldHVybiBgc3RhcnRlZCA+IC0xd2A7XG4gIH1cbn07XG5cbmV4cG9ydCBuYW1lc3BhY2UgaGlzdG9yeVV0aWxzIHtcbiAgY29uc3Qgc2NyaXB0c0NhY2hlID0ge30gYXMgUmVjb3JkPHN0cmluZywgREcuU2NyaXB0PjtcbiAgLy8gVE9ETzogYWRkIHVzZXJzIGFuZCBncm91cHMgY2FjaGVcblxuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENoaWxkUnVucyhcbiAgICBmdW5jQ2FsbElkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx7cGFyZW50UnVuOiBERy5GdW5jQ2FsbCwgY2hpbGRSdW5zOiBERy5GdW5jQ2FsbFtdfT4ge1xuICAgIGNvbnN0IHBhcmVudFJ1biA9IGF3YWl0IGdyb2suZGFwaS5mdW5jdGlvbnMuY2FsbHMuYWxsUGFja2FnZVZlcnNpb25zKCkuZmluZChmdW5jQ2FsbElkKTtcbiAgICBwYXJlbnRSdW4ub3B0aW9uc1snaXNIaXN0b3JpY2FsJ10gPSB0cnVlO1xuXG4gICAgY29uc3QgY2hpbGRSdW5zID0gYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5jYWxscy5hbGxQYWNrYWdlVmVyc2lvbnMoKVxuICAgICAgLmZpbHRlcihgb3B0aW9ucy5wYXJlbnRDYWxsSWQ9XCIke2Z1bmNDYWxsSWR9XCJgKS5saXN0KCk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChjaGlsZFJ1bnMubWFwKGFzeW5jIChjaGlsZFJ1bikgPT4ge1xuICAgICAgY29uc3QgaWQgPSBjaGlsZFJ1bi5mdW5jLmlkO1xuICAgICAgLy8gREVBTElORyBXSVRIIEJVRzogaHR0cHM6Ly9yZWRkYXRhLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0dST0stMTI0NjRcbiAgICAgIGNvbnN0IHNjcmlwdCA9IHNjcmlwdHNDYWNoZVtpZF0gPz8gYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5hbGxQYWNrYWdlVmVyc2lvbnMoKS5maW5kKGlkKTtcblxuICAgICAgaWYgKCFzY3JpcHRzQ2FjaGVbaWRdKSBzY3JpcHRzQ2FjaGVbaWRdID0gc2NyaXB0O1xuICAgICAgY2hpbGRSdW4uZnVuYyA9IHNjcmlwdDtcbiAgICB9KSk7XG5cbiAgICByZXR1cm4ge3BhcmVudFJ1biwgY2hpbGRSdW5zfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIEZ1bmNDYWxsIHdpdGggYSBzcGVjaWZpZWQgSUQuIEJ5IGRlZmF1bHQsIGFsc28gbG9hZHMgaXRzJyBpbnB1dHMvb3V0cHV0cyBhbmQgYXV0aG9yLlxuICAgKiBGdW5jQ2FsbCBpcyBsb2FkZWQgd2l0aCBpbnRlcm5hbCBUYWJsZUluZm8gc3RydWN0cyBpbnN0ZWFkIG9mIERHLkRhdGFmcmFtZS1zLlxuICAgKiBUaHVzLCB3ZSBzaG91bGQgbG9hZCB0aGVtIHNlcGFyYXRlbHksIGFuZCBpdCBpcyB0aW1lLWNvbnN1bWluZy4gSWYgeW91IGRvbid0IG5lZWQgYWN0dWFsIHZhbHVlcyBvZiBERi1zLFxuICAgKiB5b3UgY2FuIHNraXAgREYgbG9hZGluZyB1c2luZyB7QGxpbmsgc2tpcERmTG9hZH0gcGFyYW0uXG4gICAqIEBwYXJhbSBmdW5jQ2FsbElkIEZ1bmNDYWxsIElEIHRvIGxvYWRcbiAgICogQHBhcmFtIHNraXBEZkxvYWQgSWYgdHJ1ZSwgc2tpcHMgcmVwbGFjaW5nIFRhYmxlSW5mbyB3aXRoIHRoIGFjdHVhbCBkYXRhZnJhbWVcbiAgICogQHJldHVybnMgUmVxdWVzdGVkIEZ1bmNDYWxsXG4gICAqL1xuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFJ1bihmdW5jQ2FsbElkOiBzdHJpbmcsIHNraXBEZkxvYWQgPSBmYWxzZSkge1xuICAgIGNvbnN0IHB1bGxlZFJ1biA9IGF3YWl0IGdyb2suZGFwaS5mdW5jdGlvbnMuY2FsbHMuYWxsUGFja2FnZVZlcnNpb25zKClcbiAgICAgIC5pbmNsdWRlKCdpbnB1dHMsIG91dHB1dHMsIHNlc3Npb24udXNlcicpLmZpbmQoZnVuY0NhbGxJZCk7XG5cbiAgICBjb25zdCBpZCA9IHB1bGxlZFJ1bi5mdW5jLmlkO1xuICAgIC8vIERFQUxJTkcgV0lUSCBCVUc6IGh0dHBzOi8vcmVkZGF0YS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9HUk9LLTEyNDY0XG4gICAgY29uc3Qgc2NyaXB0ID0gc2NyaXB0c0NhY2hlW2lkXSA/PyBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmFsbFBhY2thZ2VWZXJzaW9ucygpLmZpbmQoaWQpO1xuXG4gICAgaWYgKCFzY3JpcHRzQ2FjaGVbaWRdKSBzY3JpcHRzQ2FjaGVbaWRdID0gc2NyaXB0O1xuICAgIHB1bGxlZFJ1bi5mdW5jID0gc2NyaXB0O1xuICAgIHB1bGxlZFJ1bi5vcHRpb25zWydpc0hpc3RvcmljYWwnXSA9IHRydWU7XG5cbiAgICBpZiAoIXNraXBEZkxvYWQpIHtcbiAgICAgIGNvbnN0IGRmT3V0cHV0cyA9IHd1KHB1bGxlZFJ1bi5vdXRwdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgICAuZmlsdGVyKChvdXRwdXQpID0+IG91dHB1dC5wcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSk7XG4gICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBkZk91dHB1dHMpXG4gICAgICAgIHB1bGxlZFJ1bi5vdXRwdXRzW291dHB1dC5uYW1lXSA9IGF3YWl0IGdyb2suZGFwaS50YWJsZXMuZ2V0VGFibGUocHVsbGVkUnVuLm91dHB1dHNbb3V0cHV0Lm5hbWVdKTtcblxuICAgICAgY29uc3QgZGZJbnB1dHMgPSB3dShwdWxsZWRSdW4uaW5wdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgICAuZmlsdGVyKChpbnB1dCkgPT4gaW5wdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgZm9yIChjb25zdCBpbnB1dCBvZiBkZklucHV0cylcbiAgICAgICAgcHVsbGVkUnVuLmlucHV0c1tpbnB1dC5uYW1lXSA9IGF3YWl0IGdyb2suZGFwaS50YWJsZXMuZ2V0VGFibGUocHVsbGVkUnVuLmlucHV0c1tpbnB1dC5uYW1lXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1bGxlZFJ1bjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlZCBnaXZlbiBGdW5jQ2FsbC5cbiAgICogRnVuY0NhbGwgaXMgb25seSBzdG9yZXMgcmVmZXJlbmNlcyB0byBhY3R1YWwgZGF0YWZyYW1lcy4gVGh1cywgd2Ugc2hvdWxkIHVwbG9hZCB0aGVtIHNlcGFyYXRlbHlcbiAgICogQHBhcmFtIGZ1bmNDYWxsY2FsbFRvU2F2ZUlkIEZ1bmNDYWxsIHRvIHNhdmVcbiAgICogQHJldHVybnMgU2F2ZWQgRnVuY0NhbGxcbiAgICovXG4gIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlUnVuKGNhbGxUb1NhdmU6IERHLkZ1bmNDYWxsKSB7XG4gICAgY29uc3QgZGZPdXRwdXRzID0gd3UoY2FsbFRvU2F2ZS5vdXRwdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIGRmT3V0cHV0cylcbiAgICAgIGF3YWl0IGdyb2suZGFwaS50YWJsZXMudXBsb2FkRGF0YUZyYW1lKGNhbGxUb1NhdmUub3V0cHV0c1tvdXRwdXQubmFtZV0pO1xuXG4gICAgY29uc3QgZGZJbnB1dHMgPSB3dShjYWxsVG9TYXZlLmlucHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgIC5maWx0ZXIoKGlucHV0KSA9PiBpbnB1dC5wcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSk7XG4gICAgZm9yIChjb25zdCBpbnB1dCBvZiBkZklucHV0cylcbiAgICAgIGF3YWl0IGdyb2suZGFwaS50YWJsZXMudXBsb2FkRGF0YUZyYW1lKGNhbGxUb1NhdmUuaW5wdXRzW2lucHV0Lm5hbWVdKTtcblxuXG4gICAgcmV0dXJuIGF3YWl0IGdyb2suZGFwaS5mdW5jdGlvbnMuY2FsbHMuYWxsUGFja2FnZVZlcnNpb25zKCkuc2F2ZShjYWxsVG9TYXZlKTtcbiAgfVxuXG4gIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVSdW4oY2FsbFRvRGVsZXRlOiBERy5GdW5jQ2FsbCkge1xuICAgIGF3YWl0IGdyb2suZGFwaS5mdW5jdGlvbnMuY2FsbHMuYWxsUGFja2FnZVZlcnNpb25zKCkuZGVsZXRlKGNhbGxUb0RlbGV0ZSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYWxsIHRoZSBmdW5jdGlvbiBjYWxsIG9mIHRoaXMgZnVuY3Rpb24uXG4gICAqIERlc2lnbmVkIHRvIHB1bGwgaHN0b3JpY2FsIHJ1bnMgaW4gZmFzdCBtYW5uZXIgYW5kIHRoZSBjYWxsIHtAbGluayBsb2FkUnVufSB3aXRoIHNwZWNpZmllZCBydW4gSUQuXG4gICAqIFdBUk5JTkc6IEZ1bmNDYWxsIGlucHV0cy9vdXRwdXRzIGZpZWxkcyBhcmUgbm90IGluY2x1ZGVkXG4gICAqIEBwYXJhbSBmdW5jSWQgSUQgb2YgRnVuYyB3aGljaCBjYWxscyB3ZSBhcmUgbG9va2luZyBmb3IuIEdldCBpdCB1c2luZyB7QGxpbmsgZnVuYy5pZH0gZmllbGRcbiAgICogQHJldHVybiBQcm9taXNlIG9uIGFycmF5IG9mIEZ1bmNDYWxscyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXNzZWQgRnVuYyBJRFxuICAgKiBAc3RhYmlsaXR5IERlcHJlY2F0ZWQuIFNjcmlwdCBJRCBjaGFuZ2VzIHdpdGggZXZlcnkgcGFja2FnZSByZWxlYXNlLCBzbyBzZWFyY2hpbmcgYnkgSUQgaXMgdXNlbGVzcyBpbiBwcmFjdGljZS5cbiAqL1xuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVsbFJ1bnMoXG4gICAgZnVuY0lkOiBzdHJpbmcsXG4gICAgZmlsdGVyT3B0aW9uczogRmlsdGVyT3B0aW9ucyA9IHt9LFxuICAgIGxpc3RPcHRpb25zOiB7cGFnZVNpemU/OiBudW1iZXIsIHBhZ2VOdW1iZXI/OiBudW1iZXIsIGZpbHRlcj86IHN0cmluZywgb3JkZXI/OiBzdHJpbmd9ID0ge31cbiAgKTogUHJvbWlzZTxERy5GdW5jQ2FsbFtdPiB7XG4gICAgbGV0IGZpbHRlcmluZ1N0cmluZyA9IGBmdW5jLmlkPVwiJHtmdW5jSWR9XCJgO1xuICAgIGZpbHRlcmluZ1N0cmluZyArPSBmaWx0ZXJPcHRpb25zLmF1dGhvciA/IGAgYW5kIHNlc3Npb24udXNlci5pZD1cIiR7ZmlsdGVyT3B0aW9ucy5hdXRob3IuaWR9XCJgOicnO1xuICAgIGZpbHRlcmluZ1N0cmluZyArPSBmaWx0ZXJPcHRpb25zLmRhdGUgPyBnZXRTZWFyY2hTdHJpbmdCeVBhdHRlcm4oZmlsdGVyT3B0aW9ucy5kYXRlKTogJyc7XG4gICAgY29uc3QgZmlsdGVyID0gZ3Jvay5kYXBpLmZ1bmN0aW9ucy5jYWxsc1xuICAgICAgLmFsbFBhY2thZ2VWZXJzaW9ucygpXG4gICAgICAuZmlsdGVyKGZpbHRlcmluZ1N0cmluZylcbiAgICAgIC5pbmNsdWRlKCdzZXNzaW9uLnVzZXIsIG9wdGlvbnMnKTtcbiAgICBjb25zdCBsaXN0ID0gZmlsdGVyLmxpc3QobGlzdE9wdGlvbnMpO1xuICAgIHJldHVybiBsaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGFsbCB0aGUgZnVuY3Rpb24gY2FsbCBvZiB0aGlzIGZ1bmN0aW9uLlxuICAgKiBEZXNpZ25lZCB0byBwdWxsIGhzdG9yaWNhbCBydW5zIGluIGZhc3QgbWFubmVyIGFuZCB0aGUgY2FsbCB7QGxpbmsgbG9hZFJ1bn0gd2l0aCBzcGVjaWZpZWQgcnVuIElELlxuICAgKiBXQVJOSU5HOiBGdW5jQ2FsbCBpbnB1dHMvb3V0cHV0cyBmaWVsZHMgYXJlIG5vdCBpbmNsdWRlZCBieSBkZWZhdWx0LiBVc2Uge0BsaW5rIGluY2x1ZGVkRmllbGRzfSB0byBzcGVjaWZ5IGZpZWxkcyB0byBsb2FkLlxuICAgKiBAcGFyYW0gZnVuY05hbWUgTmFtZSBvZiBGdW5jIHdoaWNoIGNhbGxzIHdlIGFyZSBsb29raW5nIGZvci4gR2V0IGl0IHVzaW5nIHtAbGluayBmdW5jLm5hbWV9IGZpZWxkXG4gICAqIEBwYXJhbSBmaWx0ZXJPcHRpb25zIFN0cnVjdCBjb250YWluaW5nIGZpbHRlcmluZyBvcHRpb25zLiBUaGVzZSBvcHRpb25zIHdpbGwgYmUgcGFzc2VkIGFzIHZhbGlkIGZpbHRlcmluZyBzdHJpbmcgdG8gYSByZXF1ZXN0LlxuICAgKiBAcGFyYW0gbGlzdE9wdGlvbnMgU3RydWN0IGNvbnRhaW5pbmcgbGlzdGluZyBvcHRpb25zLlxuICAgKiBAcGFyYW0gaW5jbHVkZWRGaWVsZHMgTGlzdCBvZiBmaWVsZHMgdG8gaW5jbHVkZSBpbnRvIHJlc3BvbnNlLiBTZWUge0BsaW5rIERHLkZ1bmNDYWxsfSBzdHJ1Y3QgdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy4gRS5nLiwgJ2lucHV0cycgb3IgJ291dHB1dHMnXG4gICAqIEByZXR1cm4gUHJvbWlzZSBvbiBhcnJheSBvZiBGdW5jQ2FsbHMgY29ycmVzcG9uZGluZyB0byB0aGUgcGFzc2VkIEZ1bmMgSURcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVsbFJ1bnNCeU5hbWUoXG4gICAgZnVuY05hbWU6IHN0cmluZyxcbiAgICBmaWx0ZXJPcHRpb25zOiBGaWx0ZXJPcHRpb25zW10gPSBbXSxcbiAgICBsaXN0T3B0aW9uczoge3BhZ2VTaXplPzogbnVtYmVyLCBwYWdlTnVtYmVyPzogbnVtYmVyLCBmaWx0ZXI/OiBzdHJpbmcsIG9yZGVyPzogc3RyaW5nfSA9IHt9LFxuICAgIGluY2x1ZGVkRmllbGRzOiBzdHJpbmdbXSA9IFtdXG4gICk6IFByb21pc2U8REcuRnVuY0NhbGxbXT4ge1xuICAgIGxldCBmaWx0ZXJpbmdTdHJpbmcgPSBgYDtcbiAgICBmb3IgKGNvbnN0IGZpbHRlck9wdGlvbiBvZiBmaWx0ZXJPcHRpb25zKSB7XG4gICAgICBjb25zdCBmaWx0ZXJPcHRpb25Dcml0ZXJpYSA9IFtdIGFzIHN0cmluZ1tdO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbi5hdXRob3IpIGZpbHRlck9wdGlvbkNyaXRlcmlhLnB1c2goYHNlc3Npb24udXNlci5pZD1cIiR7ZmlsdGVyT3B0aW9uLmF1dGhvci5pZH1cImApO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbi5kYXRlKSBmaWx0ZXJPcHRpb25Dcml0ZXJpYS5wdXNoKGdldFNlYXJjaFN0cmluZ0J5UGF0dGVybihmaWx0ZXJPcHRpb24uZGF0ZSkpO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbi5pc1NoYXJlZCkgZmlsdGVyT3B0aW9uQ3JpdGVyaWEucHVzaChgb3B0aW9ucy5pc1NoYXJlZD1cInRydWVcImApO1xuICAgICAgaWYgKGZpbHRlck9wdGlvbi50ZXh0KSB7XG4gICAgICAgIGZpbHRlck9wdGlvbkNyaXRlcmlhLnB1c2goXG4gICAgICAgICAgYCgob3B0aW9ucy50aXRsZSBsaWtlIFwiJHtmaWx0ZXJPcHRpb24udGV4dH1cIikgb3IgKG9wdGlvbnMuYW5ub3RhdGlvbiBsaWtlIFwiJHtmaWx0ZXJPcHRpb24udGV4dH1cIikpYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlsdGVyT3B0aW9uU3RyaW5nID0gZmlsdGVyT3B0aW9uQ3JpdGVyaWEuam9pbignIGFuZCAnKTtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb25TdHJpbmcgIT09ICcnKSB7XG4gICAgICAgIGlmIChmaWx0ZXJpbmdTdHJpbmcgPT09ICcnKVxuICAgICAgICAgIGZpbHRlcmluZ1N0cmluZyArPSBgKCR7ZmlsdGVyT3B0aW9uU3RyaW5nfSlgO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgZmlsdGVyaW5nU3RyaW5nICs9IGAgb3IgKCR7ZmlsdGVyT3B0aW9uU3RyaW5nfSlgO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZmlsdGVyaW5nU3RyaW5nICE9PSAnJylcbiAgICAgIGZpbHRlcmluZ1N0cmluZyA9IGAgYW5kICgke2ZpbHRlcmluZ1N0cmluZ30pYDtcblxuICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmNhbGxzXG4gICAgICAgIC5hbGxQYWNrYWdlVmVyc2lvbnMoKVxuICAgICAgICAuZmlsdGVyKGBmdW5jLm5hbWU9XCIke2Z1bmNOYW1lfVwiJHtmaWx0ZXJpbmdTdHJpbmd9YClcbiAgICAgICAgLmluY2x1ZGUoYCR7aW5jbHVkZWRGaWVsZHMuam9pbignLCcpfWApXG4gICAgICAgIC5saXN0KGxpc3RPcHRpb25zKTtcblxuICAgIGZvciAoY29uc3QgcHVsbGVkUnVuIG9mIHJlc3VsdCkge1xuICAgICAgY29uc3QgaWQgPSBwdWxsZWRSdW4uZnVuYy5pZDtcbiAgICAgIGNvbnN0IHNjcmlwdCA9IHNjcmlwdHNDYWNoZVtpZF0gPz8gYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5hbGxQYWNrYWdlVmVyc2lvbnMoKS5maW5kKGlkKTtcblxuICAgICAgaWYgKCFzY3JpcHRzQ2FjaGVbaWRdKSBzY3JpcHRzQ2FjaGVbaWRdID0gc2NyaXB0O1xuICAgICAgcHVsbGVkUnVuLmZ1bmMgPSBzY3JpcHQ7XG4gICAgfVxuXG4gICAgaWYgKGluY2x1ZGVkRmllbGRzLmluY2x1ZGVzKCdpbnB1dHMnKSB8fCBpbmNsdWRlZEZpZWxkcy5pbmNsdWRlcygnZnVuYy5wYXJhbXMnKSkge1xuICAgICAgZm9yIChjb25zdCBwdWxsZWRSdW4gb2YgcmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IGRmSW5wdXRzID0gd3UocHVsbGVkUnVuLmlucHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgICAgICAuZmlsdGVyKChpbnB1dCkgPT4gaW5wdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgICBmb3IgKGNvbnN0IGlucHV0IG9mIGRmSW5wdXRzKVxuICAgICAgICAgIHB1bGxlZFJ1bi5pbnB1dHNbaW5wdXQubmFtZV0gPSBhd2FpdCBncm9rLmRhcGkudGFibGVzLmdldFRhYmxlKHB1bGxlZFJ1bi5pbnB1dHNbaW5wdXQubmFtZV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbmNsdWRlZEZpZWxkcy5pbmNsdWRlcygnb3V0cHV0cycpIHx8IGluY2x1ZGVkRmllbGRzLmluY2x1ZGVzKCdmdW5jLnBhcmFtcycpKSB7XG4gICAgICBmb3IgKGNvbnN0IHB1bGxlZFJ1biBvZiByZXN1bHQpIHtcbiAgICAgICAgY29uc3QgZGZPdXRwdXRzID0gd3UocHVsbGVkUnVuLm91dHB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pXG4gICAgICAgICAgLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBkZk91dHB1dHMpXG4gICAgICAgICAgcHVsbGVkUnVuLm91dHB1dHNbb3V0cHV0Lm5hbWVdID0gYXdhaXQgZ3Jvay5kYXBpLnRhYmxlcy5nZXRUYWJsZShwdWxsZWRSdW4ub3V0cHV0c1tvdXRwdXQubmFtZV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,40 +0,0 @@
1
- import * as DG from 'datagrok-api/dg';
2
- import { Subject } from 'rxjs';
3
- import { FunctionView } from './function-view';
4
- import { ComputationView } from './computation-view';
5
- import '../css/pipeline-view.css';
6
- export declare class PipelineView extends ComputationView {
7
- private stepsConfig;
8
- steps: {
9
- [scriptNqName: string]: {
10
- editor: string;
11
- view: FunctionView;
12
- };
13
- };
14
- onStepCompleted: Subject<DG.FuncCall>;
15
- private stepTabs;
16
- protected pipelineViewExportExtensions: () => Record<string, string>;
17
- protected pipelineViewExportFormats: () => string[];
18
- protected pipelineViewExport: (format: string) => Promise<Blob>;
19
- exportConfig: {
20
- supportedExtensions: Record<string, string>;
21
- supportedFormats: string[];
22
- export: (format: string) => Promise<Blob>;
23
- filename: (format: string) => string;
24
- };
25
- constructor(funcName: string, stepsConfig: {
26
- funcName: string;
27
- }[]);
28
- init(): Promise<void>;
29
- buildIO(): HTMLDivElement;
30
- run(): Promise<void>;
31
- /**
32
- * Overrided to use {@link loadChildRuns} during run load.
33
- * This implementation takes "parentCallId" and looks for the funcCalls with options.parentCallId = parentCallId.
34
- * Each child run is related to the particular pipeline step.
35
- * @param funcCallId ID of the parent FuncCall
36
- * @returns Parent FuncCall
37
- */
38
- loadRun(funcCallId: string): Promise<DG.FuncCall>;
39
- }
40
- //# sourceMappingURL=pipeline-view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipeline-view.d.ts","sourceRoot":"","sources":["pipeline-view.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAEnD,OAAO,0BAA0B,CAAC;AAElC,qBAAa,YAAa,SAAQ,eAAe;IA+C7C,OAAO,CAAC,WAAW;IA9Cd,KAAK;;oBAA4C,MAAM;kBAAQ,YAAY;;MAAI;IAC/E,eAAe,uBAA8B;IAEpD,OAAO,CAAC,QAAQ,CAA8B;IAG9C,SAAS,CAAC,4BAA4B,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIlE;IAEF,SAAS,CAAC,yBAAyB,iBAEjC;IAEF,SAAS,CAAC,kBAAkB,WAAkB,MAAM,mBAmBlD;IAEF,YAAY;;;yBArBkC,MAAM;;MA0BlD;gBAGA,QAAQ,EAAE,MAAM,EACR,WAAW,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,EAAE;IAQrB,IAAI;IA0EV,OAAO;IA2BD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB1C;;;;;;OAMG;IACU,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;CAkB/D"}
@@ -1,178 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- /* eslint-disable valid-jsdoc */
11
- import * as grok from 'datagrok-api/grok';
12
- import * as ui from 'datagrok-api/ui';
13
- import * as DG from 'datagrok-api/dg';
14
- import JSZip from 'jszip';
15
- import { Subject } from 'rxjs';
16
- import { historyUtils } from './history-utils';
17
- import { ComputationView } from './computation-view';
18
- import { filter } from 'rxjs/operators';
19
- import '../css/pipeline-view.css';
20
- export class PipelineView extends ComputationView {
21
- constructor(funcName, stepsConfig) {
22
- super(funcName, { historyEnabled: true, isTabbed: false });
23
- this.stepsConfig = stepsConfig;
24
- this.steps = {};
25
- this.onStepCompleted = new Subject();
26
- this.stepTabs = null;
27
- // PipelineView unites several export files into single ZIP file
28
- this.pipelineViewExportExtensions = () => {
29
- return {
30
- 'Archive': 'zip'
31
- };
32
- };
33
- this.pipelineViewExportFormats = () => {
34
- return ['Archive'];
35
- };
36
- this.pipelineViewExport = (format) => __awaiter(this, void 0, void 0, function* () {
37
- var _a;
38
- if (format !== 'Archive')
39
- throw new Error('This export format is not supported');
40
- if (!this.stepTabs)
41
- throw new Error('Set step tabs please for export');
42
- const zip = new JSZip();
43
- for (const { nqName, stepView } of Object.entries(this.steps)
44
- .map(([nqName, step]) => ({ nqName, stepView: step.view }))) {
45
- this.stepTabs.currentPane = (_a = this.stepTabs) === null || _a === void 0 ? void 0 : _a.getPane(nqName);
46
- yield new Promise((r) => setTimeout(r, 100));
47
- const stepBlob = yield stepView.exportConfig.export('Excel');
48
- zip.file(stepView.exportConfig.filename('Excel'), stepBlob, { binary: true, createFolders: false });
49
- }
50
- ;
51
- return yield zip.generateAsync({ type: 'blob' });
52
- });
53
- this.exportConfig = {
54
- supportedExtensions: this.pipelineViewExportExtensions(),
55
- supportedFormats: this.pipelineViewExportFormats(),
56
- export: this.pipelineViewExport,
57
- filename: this.defaultExportFilename,
58
- };
59
- }
60
- init() {
61
- return __awaiter(this, void 0, void 0, function* () {
62
- yield this.loadFuncCallById();
63
- this.stepsConfig.forEach((stepConfig) => {
64
- //@ts-ignore
65
- this.steps[stepConfig.funcName] = {};
66
- });
67
- this.subs.push(grok.functions.onAfterRunAction.pipe(filter((run) => Object.keys(this.steps).includes(run.func.nqName))).subscribe((run) => {
68
- this.onStepCompleted.next(run);
69
- if (run.func.nqName === this.stepsConfig[this.stepsConfig.length - 1].funcName)
70
- this.run();
71
- }));
72
- const stepScripts = Object.keys(this.steps).map((stepNqName) => {
73
- const stepScript = grok.functions.eval(stepNqName);
74
- return stepScript;
75
- });
76
- const allStepsLoading = Promise.all(stepScripts);
77
- this.root.classList.remove('ui-panel');
78
- const loadedScripts = yield allStepsLoading;
79
- const editorFuncs = {};
80
- const EDITOR_TAG = 'editor:';
81
- const NEWLINE = '\n';
82
- const DEFAULT_EDITOR = 'Compute:PipelineStepEditor';
83
- const extractEditor = (script) => {
84
- const scriptCode = script.script;
85
- const editorTagIndex = scriptCode.indexOf(EDITOR_TAG);
86
- if (editorTagIndex < 0)
87
- return DEFAULT_EDITOR;
88
- const newlineIndex = scriptCode.indexOf(NEWLINE, editorTagIndex);
89
- const editorFuncName = scriptCode.substring(editorTagIndex + EDITOR_TAG.length, newlineIndex).trim();
90
- return editorFuncName;
91
- };
92
- const editorsLoading = loadedScripts.map((loadedScript) => __awaiter(this, void 0, void 0, function* () {
93
- // TO DO: replace for type guard
94
- const editorName = (loadedScript.script) ? extractEditor(loadedScript) : DEFAULT_EDITOR;
95
- if (!editorFuncs[editorName])
96
- editorFuncs[editorName] = yield grok.functions.eval(editorName.split(' ').join(''));
97
- this.steps[loadedScript.nqName].editor = editorName;
98
- return Promise.resolve();
99
- }));
100
- yield Promise.all(editorsLoading);
101
- const viewsLoading = loadedScripts.map((loadedScript) => __awaiter(this, void 0, void 0, function* () {
102
- const scriptCall = loadedScript.prepare();
103
- this.steps[loadedScript.nqName].view =
104
- (yield editorFuncs[this.steps[loadedScript.nqName].editor].apply({ 'call': scriptCall }));
105
- if (!this.steps[loadedScript.nqName].view.onFuncCallReady.value) {
106
- const prom = this.steps[loadedScript.nqName].view.onFuncCallReady.toPromise();
107
- return prom;
108
- }
109
- else {
110
- return Promise.resolve();
111
- }
112
- }));
113
- yield Promise.all(viewsLoading);
114
- this.onFuncCallReady.complete();
115
- });
116
- }
117
- buildIO() {
118
- const tabs = Object.entries(this.steps)
119
- .reduce((prev, [funcName, step]) => (Object.assign(Object.assign({}, prev), { [funcName]: step.view.root })), {});
120
- const pipelineTabs = ui.tabControl(tabs);
121
- const tabsLine = pipelineTabs.panes[0].header.parentElement;
122
- tabsLine.classList.add('d4-ribbon', 'pipeline-view');
123
- tabsLine.classList.remove('d4-tab-header-stripe');
124
- tabsLine.firstChild.remove();
125
- for (let i = 0; i < pipelineTabs.panes.length; i++) {
126
- pipelineTabs.panes[i].header.classList.add('d4-ribbon-name');
127
- pipelineTabs.panes[i].header.classList.remove('d4-tab-header');
128
- }
129
- pipelineTabs.panes[0].header.style.marginLeft = '12px';
130
- pipelineTabs.root.style.height = '100%';
131
- pipelineTabs.root.style.width = '100%';
132
- this.stepTabs = pipelineTabs;
133
- return pipelineTabs.root;
134
- }
135
- run() {
136
- return __awaiter(this, void 0, void 0, function* () {
137
- if (!this.funcCall)
138
- throw new Error('The correspoding function is not specified');
139
- yield this.onBeforeRun(this.funcCall);
140
- const pi = DG.TaskBarProgressIndicator.create('Calculating...');
141
- this.funcCall.newId();
142
- yield this.funcCall.call(); // mutates the funcCall field
143
- pi.close();
144
- Object.values(this.steps)
145
- .forEach((step) => __awaiter(this, void 0, void 0, function* () {
146
- const scriptCall = step.view.funcCall;
147
- scriptCall.options['parentCallId'] = this.funcCall.id;
148
- this.steps[scriptCall.func.nqName].view.lastCall =
149
- yield this.steps[scriptCall.func.nqName].view.saveRun(scriptCall);
150
- }));
151
- yield this.onAfterRun(this.funcCall);
152
- this.lastCall = yield this.saveRun(this.funcCall);
153
- });
154
- }
155
- /**
156
- * Overrided to use {@link loadChildRuns} during run load.
157
- * This implementation takes "parentCallId" and looks for the funcCalls with options.parentCallId = parentCallId.
158
- * Each child run is related to the particular pipeline step.
159
- * @param funcCallId ID of the parent FuncCall
160
- * @returns Parent FuncCall
161
- */
162
- loadRun(funcCallId) {
163
- return __awaiter(this, void 0, void 0, function* () {
164
- const { parentRun: pulledParentRun, childRuns: pulledChildRuns } = yield historyUtils.loadChildRuns(funcCallId);
165
- this.subs.push(this.onFuncCallReady.subscribe({
166
- complete: () => __awaiter(this, void 0, void 0, function* () {
167
- yield this.onBeforeLoadRun();
168
- pulledChildRuns.forEach((pulledChildRun) => __awaiter(this, void 0, void 0, function* () {
169
- this.steps[pulledChildRun.func.nqName].view.loadRun(pulledChildRun.id);
170
- }));
171
- yield this.onAfterLoadRun(pulledParentRun);
172
- })
173
- }));
174
- return pulledParentRun;
175
- });
176
- }
177
- }
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBpcGVsaW5lLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsZ0NBQWdDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sMEJBQTBCLENBQUM7QUFFbEMsTUFBTSxPQUFPLFlBQWEsU0FBUSxlQUFlO0lBNkMvQyxZQUNFLFFBQWdCLEVBQ1IsV0FBaUM7UUFFekMsS0FBSyxDQUNILFFBQVEsRUFDUixFQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQyxDQUN4QyxDQUFDO1FBTE0sZ0JBQVcsR0FBWCxXQUFXLENBQXNCO1FBOUNwQyxVQUFLLEdBQUcsRUFBc0UsQ0FBQztRQUMvRSxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFFNUMsYUFBUSxHQUF5QixJQUFJLENBQUM7UUFFOUMsZ0VBQWdFO1FBQ3RELGlDQUE0QixHQUFpQyxHQUFHLEVBQUU7WUFDMUUsT0FBTztnQkFDTCxTQUFTLEVBQUUsS0FBSzthQUNqQixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRVEsOEJBQXlCLEdBQUcsR0FBRyxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQixDQUFDLENB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QUM7b0JBRUgsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDLENBQUE7YUFDRixDQUFDLENBQ0gsQ0FBQztZQUNGLE9BQU8sZUFBZSxDQUFDO1FBQ3pCLENBQUM7S0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgSlNaaXAgZnJvbSAnanN6aXAnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7aGlzdG9yeVV0aWxzfSBmcm9tICcuL2hpc3RvcnktdXRpbHMnO1xuaW1wb3J0IHtGdW5jdGlvblZpZXd9IGZyb20gJy4vZnVuY3Rpb24tdmlldyc7XG5pbXBvcnQge0NvbXB1dGF0aW9uVmlld30gZnJvbSAnLi9jb21wdXRhdGlvbi12aWV3JztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgJy4uL2Nzcy9waXBlbGluZS12aWV3LmNzcyc7XG5cbmV4cG9ydCBjbGFzcyBQaXBlbGluZVZpZXcgZXh0ZW5kcyBDb21wdXRhdGlvblZpZXcge1xuICBwdWJsaWMgc3RlcHMgPSB7fSBhcyB7W3NjcmlwdE5xTmFtZTogc3RyaW5nXTogeyBlZGl0b3I6IHN0cmluZywgdmlldzogRnVuY3Rpb25WaWV3IH19O1xuICBwdWJsaWMgb25TdGVwQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8REcuRnVuY0NhbGw+KCk7XG5cbiAgcHJpdmF0ZSBzdGVwVGFiczogREcuVGFiQ29udHJvbCB8IG51bGwgPSBudWxsO1xuXG4gIC8vIFBpcGVsaW5lVmlldyB1bml0ZXMgc2V2ZXJhbCBleHBvcnQgZmlsZXMgaW50byBzaW5nbGUgWklQIGZpbGVcbiAgcHJvdGVjdGVkIHBpcGVsaW5lVmlld0V4cG9ydEV4dGVuc2lvbnM6ICgpID0+IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdBcmNoaXZlJzogJ3ppcCdcbiAgICB9O1xuICB9O1xuXG4gIHByb3RlY3RlZCBwaXBlbGluZVZpZXdFeHBvcnRGb3JtYXRzID0gKCkgPT4ge1xuICAgIHJldHVybiBbJ0FyY2hpdmUnXTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgcGlwZWxpbmVWaWV3RXhwb3J0ID0gYXN5bmMgKGZvcm1hdDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGZvcm1hdCAhPT0gJ0FyY2hpdmUnKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGV4cG9ydCBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZCcpO1xuXG4gICAgaWYgKCF0aGlzLnN0ZXBUYWJzKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXQgc3RlcCB0YWJzIHBsZWFzZSBmb3IgZXhwb3J0Jyk7XG5cbiAgICBjb25zdCB6aXAgPSBuZXcgSlNaaXAoKTtcblxuICAgIGZvciAoY29uc3Qge25xTmFtZSwgc3RlcFZpZXd9IG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3RlcHMpXG4gICAgICAubWFwKChbbnFOYW1lLCBzdGVwXSkgPT4gKHtucU5hbWUsIHN0ZXBWaWV3OiBzdGVwLnZpZXd9KSkpIHtcbiAgICAgIHRoaXMuc3RlcFRhYnMuY3VycmVudFBhbmUgPSB0aGlzLnN0ZXBUYWJzPy5nZXRQYW5lKG5xTmFtZSk7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCAxMDApKTtcbiAgICAgIGNvbnN0IHN0ZXBCbG9iID0gYXdhaXQgc3RlcFZpZXcuZXhwb3J0Q29uZmlnIS5leHBvcnQoJ0V4Y2VsJyk7XG5cbiAgICAgIHppcC5maWxlKHN0ZXBWaWV3LmV4cG9ydENvbmZpZyEuZmlsZW5hbWUoJ0V4Y2VsJyksIHN0ZXBCbG9iLCB7YmluYXJ5OiB0cnVlLCBjcmVhdGVGb2xkZXJzOiBmYWxzZX0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgemlwLmdlbmVyYXRlQXN5bmMoe3R5cGU6ICdibG9iJ30pO1xuICB9O1xuXG4gIGV4cG9ydENvbmZpZyA9IHtcbiAgICBzdXBwb3J0ZWRFeHRlbnNpb25zOiB0aGlzLnBpcGVsaW5lVmlld0V4cG9ydEV4dGVuc2lvbnMoKSxcbiAgICBzdXBwb3J0ZWRGb3JtYXRzOiB0aGlzLnBpcGVsaW5lVmlld0V4cG9ydEZvcm1hdHMoKSxcbiAgICBleHBvcnQ6IHRoaXMucGlwZWxpbmVWaWV3RXhwb3J0LFxuICAgIGZpbGVuYW1lOiB0aGlzLmRlZmF1bHRFeHBvcnRGaWxlbmFtZSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBmdW5jTmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgc3RlcHNDb25maWc6IHtmdW5jTmFtZTogc3RyaW5nfVtdXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgZnVuY05hbWUsXG4gICAgICB7aGlzdG9yeUVuYWJsZWQ6IHRydWUsIGlzVGFiYmVkOiBmYWxzZX1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIGluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkRnVuY0NhbGxCeUlkKCk7XG5cbiAgICB0aGlzLnN0ZXBzQ29uZmlnLmZvckVhY2goKHN0ZXBDb25maWcpID0+IHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgdGhpcy5zdGVwc1tzdGVwQ29uZmlnLmZ1bmNOYW1lXSA9IHt9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzLnB1c2goXG4gICAgICBncm9rLmZ1bmN0aW9ucy5vbkFmdGVyUnVuQWN0aW9uLnBpcGUoXG4gICAgICAgIGZpbHRlcigocnVuKSA9PiBPYmplY3Qua2V5cyh0aGlzLnN0ZXBzKS5pbmNsdWRlcyhydW4uZnVuYy5ucU5hbWUpKVxuICAgICAgKS5zdWJzY3JpYmUoKHJ1bikgPT4ge1xuICAgICAgICB0aGlzLm9uU3RlcENvbXBsZXRlZC5uZXh0KHJ1bik7XG5cbiAgICAgICAgaWYgKHJ1bi5mdW5jLm5xTmFtZSA9PT0gdGhpcy5zdGVwc0NvbmZpZ1t0aGlzLnN0ZXBzQ29uZmlnLmxlbmd0aC0xXS5mdW5jTmFtZSkgdGhpcy5ydW4oKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHN0ZXBTY3JpcHRzID0gT2JqZWN0LmtleXModGhpcy5zdGVwcykubWFwKChzdGVwTnFOYW1lKSA9PiB7XG4gICAgICBjb25zdCBzdGVwU2NyaXB0ID0gKGdyb2suZnVuY3Rpb25zLmV2YWwoc3RlcE5xTmFtZSkgYXMgUHJvbWlzZTxERy5GdW5jPik7XG4gICAgICByZXR1cm4gc3RlcFNjcmlwdDtcbiAgICB9KTtcbiAgICBjb25zdCBhbGxTdGVwc0xvYWRpbmcgPSBQcm9taXNlLmFsbChzdGVwU2NyaXB0cykgYXMgUHJvbWlzZTxERy5TY3JpcHRbXT47XG4gICAgdGhpcy5yb290LmNsYXNzTGlzdC5yZW1vdmUoJ3VpLXBhbmVsJyk7XG5cbiAgICBjb25zdCBsb2FkZWRTY3JpcHRzID0gYXdhaXQgYWxsU3RlcHNMb2FkaW5nO1xuXG4gICAgY29uc3QgZWRpdG9yRnVuY3MgPSB7fSBhcyB7W2VkaXRvcjogc3RyaW5nXTogREcuRnVuY307XG5cbiAgICBjb25zdCBFRElUT1JfVEFHID0gJ2VkaXRvcjonIGFzIGNvbnN0O1xuICAgIGNvbnN0IE5FV0xJTkUgPSAnXFxuJyBhcyBjb25zdDtcbiAgICBjb25zdCBERUZBVUxUX0VESVRPUiA9ICdDb21wdXRlOlBpcGVsaW5lU3RlcEVkaXRvcic7XG5cbiAgICBjb25zdCBleHRyYWN0RWRpdG9yID0gKHNjcmlwdDogREcuU2NyaXB0KSA9PiB7XG4gICAgICBjb25zdCBzY3JpcHRDb2RlID0gc2NyaXB0LnNjcmlwdDtcbiAgICAgIGNvbnN0IGVkaXRvclRhZ0luZGV4ID0gc2NyaXB0Q29kZS5pbmRleE9mKEVESVRPUl9UQUcpO1xuICAgICAgaWYgKGVkaXRvclRhZ0luZGV4IDwgMClcbiAgICAgICAgcmV0dXJuIERFRkFVTFRfRURJVE9SO1xuXG4gICAgICBjb25zdCBuZXdsaW5lSW5kZXggPSBzY3JpcHRDb2RlLmluZGV4T2YoTkVXTElORSwgZWRpdG9yVGFnSW5kZXgpO1xuICAgICAgY29uc3QgZWRpdG9yRnVuY05hbWUgPSBzY3JpcHRDb2RlLnN1YnN0cmluZyhlZGl0b3JUYWdJbmRleCArIEVESVRPUl9UQUcubGVuZ3RoLCBuZXdsaW5lSW5kZXgpLnRyaW0oKTtcblxuICAgICAgcmV0dXJuIGVkaXRvckZ1bmNOYW1lO1xuICAgIH07XG5cbiAgICBjb25zdCBlZGl0b3JzTG9hZGluZyA9IGxvYWRlZFNjcmlwdHMubWFwKGFzeW5jIChsb2FkZWRTY3JpcHQpID0+IHtcbiAgICAgIC8vIFRPIERPOiByZXBsYWNlIGZvciB0eXBlIGd1YXJkXG4gICAgICBjb25zdCBlZGl0b3JOYW1lID0gKGxvYWRlZFNjcmlwdC5zY3JpcHQpID8gZXh0cmFjdEVkaXRvcihsb2FkZWRTY3JpcHQpOiBERUZBVUxUX0VESVRPUjtcbiAgICAgIGlmICghZWRpdG9yRnVuY3NbZWRpdG9yTmFtZV0pXG4gICAgICAgIGVkaXRvckZ1bmNzW2VkaXRvck5hbWVdID0gYXdhaXQoZ3Jvay5mdW5jdGlvbnMuZXZhbChlZGl0b3JOYW1lLnNwbGl0KCcgJykuam9pbignJykpIGFzIFByb21pc2U8REcuRnVuYz4pO1xuICAgICAgdGhpcy5zdGVwc1tsb2FkZWRTY3JpcHQubnFOYW1lXS5lZGl0b3IgPSBlZGl0b3JOYW1lO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChlZGl0b3JzTG9hZGluZyk7XG5cbiAgICBjb25zdCB2aWV3c0xvYWRpbmcgPSBsb2FkZWRTY3JpcHRzLm1hcChhc3luYyAobG9hZGVkU2NyaXB0KSA9PiB7XG4gICAgICBjb25zdCBzY3JpcHRDYWxsOiBERy5GdW5jQ2FsbCA9IGxvYWRlZFNjcmlwdC5wcmVwYXJlKCk7XG5cbiAgICAgIHRoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0udmlldyA9XG4gICAgICAgIGF3YWl0IGVkaXRvckZ1bmNzW3RoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0uZWRpdG9yXS5hcHBseSh7J2NhbGwnOiBzY3JpcHRDYWxsfSkgYXMgRnVuY3Rpb25WaWV3O1xuXG4gICAgICBpZiAoIXRoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0udmlldy5vbkZ1bmNDYWxsUmVhZHkudmFsdWUpIHtcbiAgICAgICAgY29uc3QgcHJvbSA9IHRoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0udmlldy5vbkZ1bmNDYWxsUmVhZHkudG9Qcm9taXNlKCk7XG4gICAgICAgIHJldHVybiBwcm9tO1xuICAgICAgfSBlbHNlIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyB9XG4gICAgfSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbCh2aWV3c0xvYWRpbmcpO1xuXG4gICAgdGhpcy5vbkZ1bmNDYWxsUmVhZHkuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBidWlsZElPKCkge1xuICAgIGNvbnN0IHRhYnMgPSBPYmplY3QuZW50cmllcyh0aGlzLnN0ZXBzKVxuICAgICAgLnJlZHVjZSgocHJldiwgW2Z1bmNOYW1lLCBzdGVwXSkgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgW2Z1bmNOYW1lXTogc3RlcC52aWV3LnJvb3RcbiAgICAgIH0pLCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBIVE1MRWxlbWVudD4pO1xuXG4gICAgY29uc3QgcGlwZWxpbmVUYWJzID0gdWkudGFiQ29udHJvbCh0YWJzKTtcblxuICAgIGNvbnN0IHRhYnNMaW5lID0gcGlwZWxpbmVUYWJzLnBhbmVzWzBdLmhlYWRlci5wYXJlbnRFbGVtZW50ITtcbiAgICB0YWJzTGluZS5jbGFzc0xpc3QuYWRkKCdkNC1yaWJib24nLCAncGlwZWxpbmUtdmlldycpO1xuICAgIHRhYnNMaW5lLmNsYXNzTGlzdC5yZW1vdmUoJ2Q0LXRhYi1oZWFkZXItc3RyaXBlJyk7XG4gICAgdGFic0xpbmUuZmlyc3RDaGlsZCEucmVtb3ZlKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaXBlbGluZVRhYnMucGFuZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHBpcGVsaW5lVGFicy5wYW5lc1tpXS5oZWFkZXIuY2xhc3NMaXN0LmFkZCgnZDQtcmliYm9uLW5hbWUnKTtcbiAgICAgIHBpcGVsaW5lVGFicy5wYW5lc1tpXS5oZWFkZXIuY2xhc3NMaXN0LnJlbW92ZSgnZDQtdGFiLWhlYWRlcicpO1xuICAgIH1cbiAgICBwaXBlbGluZVRhYnMucGFuZXNbMF0uaGVhZGVyLnN0eWxlLm1hcmdpbkxlZnQgPSAnMTJweCc7XG5cbiAgICBwaXBlbGluZVRhYnMucm9vdC5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgcGlwZWxpbmVUYWJzLnJvb3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG5cbiAgICB0aGlzLnN0ZXBUYWJzID0gcGlwZWxpbmVUYWJzO1xuXG4gICAgcmV0dXJuIHBpcGVsaW5lVGFicy5yb290O1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuZnVuY0NhbGwpIHRocm93IG5ldyBFcnJvcignVGhlIGNvcnJlc3BvZGluZyBmdW5jdGlvbiBpcyBub3Qgc3BlY2lmaWVkJyk7XG5cbiAgICBhd2FpdCB0aGlzLm9uQmVmb3JlUnVuKHRoaXMuZnVuY0NhbGwpO1xuICAgIGNvbnN0IHBpID0gREcuVGFza0JhclByb2dyZXNzSW5kaWNhdG9yLmNyZWF0ZSgnQ2FsY3VsYXRpbmcuLi4nKTtcbiAgICB0aGlzLmZ1bmNDYWxsLm5ld0lkKCk7XG4gICAgYXdhaXQgdGhpcy5mdW5jQ2FsbC5jYWxsKCk7IC8vIG11dGF0ZXMgdGhlIGZ1bmNDYWxsIGZpZWxkXG4gICAgcGkuY2xvc2UoKTtcblxuICAgIE9iamVjdC52YWx1ZXModGhpcy5zdGVwcylcbiAgICAgIC5mb3JFYWNoKGFzeW5jIChzdGVwKSA9PiB7XG4gICAgICAgIGNvbnN0IHNjcmlwdENhbGwgPSBzdGVwLnZpZXcuZnVuY0NhbGw7XG5cbiAgICAgICAgc2NyaXB0Q2FsbC5vcHRpb25zWydwYXJlbnRDYWxsSWQnXSA9IHRoaXMuZnVuY0NhbGwhLmlkO1xuXG4gICAgICAgIHRoaXMuc3RlcHNbc2NyaXB0Q2FsbC5mdW5jLm5xTmFtZV0udmlldy5sYXN0Q2FsbCA9XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdGVwc1tzY3JpcHRDYWxsLmZ1bmMubnFOYW1lXS52aWV3LnNhdmVSdW4oc2NyaXB0Q2FsbCk7XG4gICAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMub25BZnRlclJ1bih0aGlzLmZ1bmNDYWxsKTtcblxuICAgIHRoaXMubGFzdENhbGwgPSBhd2FpdCB0aGlzLnNhdmVSdW4odGhpcy5mdW5jQ2FsbCk7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGVkIHRvIHVzZSB7QGxpbmsgbG9hZENoaWxkUnVuc30gZHVyaW5nIHJ1biBsb2FkLlxuICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIHRha2VzIFwicGFyZW50Q2FsbElkXCIgYW5kIGxvb2tzIGZvciB0aGUgZnVuY0NhbGxzIHdpdGggb3B0aW9ucy5wYXJlbnRDYWxsSWQgPSBwYXJlbnRDYWxsSWQuXG4gICAqIEVhY2ggY2hpbGQgcnVuIGlzIHJlbGF0ZWQgdG8gdGhlIHBhcnRpY3VsYXIgcGlwZWxpbmUgc3RlcC5cbiAgICogQHBhcmFtIGZ1bmNDYWxsSWQgSUQgb2YgdGhlIHBhcmVudCBGdW5jQ2FsbFxuICAgKiBAcmV0dXJucyBQYXJlbnQgRnVuY0NhbGxcbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2FkUnVuKGZ1bmNDYWxsSWQ6IHN0cmluZyk6IFByb21pc2U8REcuRnVuY0NhbGw+IHtcbiAgICBjb25zdCB7cGFyZW50UnVuOiBwdWxsZWRQYXJlbnRSdW4sIGNoaWxkUnVuczogcHVsbGVkQ2hpbGRSdW5zfSA9IGF3YWl0IGhpc3RvcnlVdGlscy5sb2FkQ2hpbGRSdW5zKGZ1bmNDYWxsSWQpO1xuXG4gICAgdGhpcy5zdWJzLnB1c2goXG4gICAgICB0aGlzLm9uRnVuY0NhbGxSZWFkeS5zdWJzY3JpYmUoe1xuICAgICAgICBjb21wbGV0ZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHRoaXMub25CZWZvcmVMb2FkUnVuKCk7XG5cbiAgICAgICAgICBwdWxsZWRDaGlsZFJ1bnMuZm9yRWFjaChhc3luYyAocHVsbGVkQ2hpbGRSdW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHNbcHVsbGVkQ2hpbGRSdW4uZnVuYy5ucU5hbWVdLnZpZXcubG9hZFJ1bihwdWxsZWRDaGlsZFJ1bi5pZCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBhd2FpdCB0aGlzLm9uQWZ0ZXJMb2FkUnVuKHB1bGxlZFBhcmVudFJ1bik7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcHVsbGVkUGFyZW50UnVuO1xuICB9XG59XG4iXX0=
@@ -1,55 +0,0 @@
1
- import * as DG from 'datagrok-api/dg';
2
- import { FunctionView } from './function-view';
3
- import '../css/rich-function-view.css';
4
- export declare class RichFunctionView extends FunctionView {
5
- options: {
6
- historyEnabled: boolean;
7
- isTabbed: boolean;
8
- };
9
- private checkDisability;
10
- private isRunning;
11
- static fromFuncCall(funcCall: DG.FuncCall, options?: {
12
- historyEnabled: boolean;
13
- isTabbed: boolean;
14
- }): RichFunctionView;
15
- constructor(funcName: string, options?: {
16
- historyEnabled: boolean;
17
- isTabbed: boolean;
18
- });
19
- /**
20
- * Showing UI after completion of function call.
21
- * @param runFunc
22
- */
23
- onAfterRun(runFunc: DG.FuncCall): Promise<void>;
24
- /**
25
- * RichFunctionView has adavanced automatic UI builder. It takes {@link this.funcCall} as a base and constructs flexible view.
26
- * This view is updated automatically when {@link this.funcCallReplaced} is emitted or any of input/output param changes.
27
- * @returns HTMLElement attached to the root of the view
28
- */
29
- buildIO(): HTMLElement;
30
- buildInputBlock(): HTMLElement;
31
- buildRibbonPanels(): HTMLElement[][];
32
- private tabsElem;
33
- buildOutputBlock(): HTMLElement;
34
- onAfterLoadRun(loadedRun: DG.FuncCall): Promise<void>;
35
- private dfToViewerMapping;
36
- protected get isInputPanelRequired(): boolean;
37
- protected get tabsLabels(): string[];
38
- protected get categoryToParamMap(): Record<string, DG.Property[]>;
39
- private doRun;
40
- private renderRunSection;
41
- /**
42
- * RichFunctionView know everything about its UI, so it exports not only data, but also viewer screenshots.
43
- * This function iterates over all of the tabs and sequentally exports all dataframes, their viewers and scalars.
44
- * @param format format needed to export. See {@link this.defaultSupportedExportFormats} for available formats.
45
- * @returns Promise<Blob> with data ready for download
46
- */
47
- protected defaultExport: (format: string) => Promise<Blob>;
48
- exportConfig: {
49
- supportedExtensions: Record<string, string>;
50
- supportedFormats: string[];
51
- export: (format: string) => Promise<Blob>;
52
- filename: (format: string) => string;
53
- };
54
- }
55
- //# sourceMappingURL=rich-function-view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rich-function-view.d.ts","sourceRoot":"","sources":["rich-function-view.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAO7C,OAAO,+BAA+B,CAAC;AAmCvC,qBAAa,gBAAiB,SAAQ,YAAY;IAiBvC,OAAO,EAAE;QAAE,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAC;IAf/D,OAAO,CAAC,eAAe,CAAiB;IAGxC,OAAO,CAAC,SAAS,CAAS;IAE1B,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACrB,OAAO,GAAE;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KACb;gBAMvC,QAAQ,EAAE,MAAM,EACT,OAAO,GAAE;QAAE,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KACrB;IAazC;;;OAGG;IACa,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D;;;;OAIG;IACI,OAAO,IAAI,WAAW;IA6BtB,eAAe,IAAI,WAAW;IAMrC,iBAAiB,IAAI,WAAW,EAAE,EAAE;IAgBpC,OAAO,CAAC,QAAQ,CAAmB;IAE5B,gBAAgB,IAAI,WAAW;IA6JzB,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ;IAgBlD,OAAO,CAAC,iBAAiB,CAAoC;IAE7D,SAAS,KAAK,oBAAoB,YAEjC;IAED,SAAS,KAAK,UAAU,aAEvB;IAED,SAAS,KAAK,kBAAkB,kCAmB/B;YAEa,KAAK;IAanB,OAAO,CAAC,gBAAgB;IAsHxB;;;;;OAKG;IACH,SAAS,CAAC,aAAa,WAAkB,MAAM,mBAoI7C;IAEF,YAAY;;;yBAtI6B,MAAM;;MA2I7C;CACH"}