@datagrok-libraries/utils 0.4.0 → 0.5.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/.eslintignore +1 -0
- package/.eslintrc.json +55 -36
- package/package.json +6 -3
- package/src/array-utils.d.ts.map +1 -1
- package/src/array-utils.js +3 -2
- package/src/bit-array.d.ts.map +1 -1
- package/src/bit-array.js +14 -18
- package/src/computation-view.d.ts +0 -6
- package/src/computation-view.d.ts.map +1 -1
- package/src/computation-view.js +1 -38
- package/src/function-view.d.ts +38 -52
- package/src/function-view.d.ts.map +1 -1
- package/src/function-view.js +299 -262
- package/src/similarity-metrics.js +1 -1
- package/src/string-utils.d.ts +1 -0
- package/src/string-utils.d.ts.map +1 -1
- package/src/string-utils.js +5 -2
- package/src/table-validation.js +8 -7
- package/src/test.d.ts +1 -1
- package/src/test.d.ts.map +1 -1
- package/src/test.js +14 -18
- package/src/vector-operations.d.ts +14 -10
- package/src/vector-operations.d.ts.map +1 -1
- package/src/vector-operations.js +27 -11
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as DG from 'datagrok-api/dg';
|
|
2
1
|
import { FunctionView } from './function-view';
|
|
3
2
|
/**
|
|
4
3
|
* Base class for handling Compute models (see https://github.com/datagrok-ai/public/blob/master/help/compute/compute.md).
|
|
@@ -16,10 +15,5 @@ import { FunctionView } from './function-view';
|
|
|
16
15
|
* - notifications for changing inputs, completion of computations, etc: {@link onInputChanged}
|
|
17
16
|
* */
|
|
18
17
|
export declare class ComputationView extends FunctionView {
|
|
19
|
-
constructor(func: DG.Func);
|
|
20
|
-
/** Override to create output block. */
|
|
21
|
-
buildOutputPanel(): HTMLElement;
|
|
22
|
-
/** helper methods */
|
|
23
|
-
buildInputForm(call: DG.FuncCall): HTMLElement;
|
|
24
18
|
}
|
|
25
19
|
//# sourceMappingURL=computation-view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computation-view.d.ts","sourceRoot":"","sources":["computation-view.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"computation-view.d.ts","sourceRoot":"","sources":["computation-view.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;KAcK;AACL,qBAAa,eAAgB,SAAQ,YAAY;CAEhD"}
|
package/src/computation-view.js
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
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
|
-
import * as ui from 'datagrok-api/ui';
|
|
11
1
|
import { FunctionView } from './function-view';
|
|
12
2
|
/**
|
|
13
3
|
* Base class for handling Compute models (see https://github.com/datagrok-ai/public/blob/master/help/compute/compute.md).
|
|
@@ -25,32 +15,5 @@ import { FunctionView } from './function-view';
|
|
|
25
15
|
* - notifications for changing inputs, completion of computations, etc: {@link onInputChanged}
|
|
26
16
|
* */
|
|
27
17
|
export class ComputationView extends FunctionView {
|
|
28
|
-
constructor(func) {
|
|
29
|
-
super(func);
|
|
30
|
-
}
|
|
31
|
-
/** Override to create output block. */
|
|
32
|
-
buildOutputPanel() {
|
|
33
|
-
var _a;
|
|
34
|
-
console.log('ouptut updated');
|
|
35
|
-
const outputs = (_a = this.lastCall) === null || _a === void 0 ? void 0 : _a.outputs;
|
|
36
|
-
const panel = ui.accordion('Output data');
|
|
37
|
-
panel.addPane('Output data', () => {
|
|
38
|
-
return ui.divV(Object.entries(outputs).map(([key, val]) => ui.span([`${key}: `, `${val}`])));
|
|
39
|
-
});
|
|
40
|
-
return panel.root;
|
|
41
|
-
}
|
|
42
|
-
/** helper methods */
|
|
43
|
-
buildInputForm(call) {
|
|
44
|
-
return ui.wait(() => __awaiter(this, void 0, void 0, function* () {
|
|
45
|
-
const runButton = ui.bigButton('Run', () => __awaiter(this, void 0, void 0, function* () {
|
|
46
|
-
yield this.run();
|
|
47
|
-
}));
|
|
48
|
-
const editor = ui.div([], 'ui-form');
|
|
49
|
-
const inputs = yield call.buildEditor(editor, { condensed: true });
|
|
50
|
-
editor.appendChild(ui.divH([ui.divV([this.historyPanel], { style: { 'justify-content': 'center' } }), runButton], { style: { 'justify-content': 'space-between' } }));
|
|
51
|
-
return ui.panel([editor]);
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
;
|
|
55
18
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0YXRpb24tdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbXB1dGF0aW9uLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDOzs7Ozs7Ozs7Ozs7OztLQWNLO0FBQ0wsTUFBTSxPQUFPLGVBQWdCLFNBQVEsWUFBWTtDQUVoRCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHtGdW5jdGlvblZpZXd9IGZyb20gJy4vZnVuY3Rpb24tdmlldyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgaGFuZGxpbmcgQ29tcHV0ZSBtb2RlbHMgKHNlZSBodHRwczovL2dpdGh1Yi5jb20vZGF0YWdyb2stYWkvcHVibGljL2Jsb2IvbWFzdGVyL2hlbHAvY29tcHV0ZS9jb21wdXRlLm1kKS5cbiAqIEluIG1vc3QgY2FzZXMsIHRoZSBjb21wdXRhdGlvbiBpcyBhIHNpbXBsZSB7QGxpbmsgRnVuY31cbiAqIEV4dGVuZCBpdCBpbiBjYXNlcyB3aGVyZSBhIGJlaGF2aW9yIG9yIFVJIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHtAbGluayBGdW5jdGlvblZpZXd9IGlzIG5lZWRlZC5cbiAqXG4gKiBJdCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uYWxpdHkgb3V0LW9mLXRoZS1ib3gsIHdoZXJlIGVhY2ggc2VjdGlvbiBjb3VsZCBiZSBjdXN0b21pemVkOlxuICogLSBhIHN0cnVjdHVyZWQgd2F5IHRvIHJlcHJlc2VudCBpbnB1dCBhbmQgb3V0cHV0IHBhcmFtZXRlcnM6IHtAbGluayBwYXJhbWV0ZXJzfVxuICogLSBnZW5lcmljIHdheSB0byBnZW5lcmF0ZSBVSSBmb3IgaW5wdXRzLCBvdXRwdXRzLCBhbmQgaW50ZXJhY3Rpdml0eSAocnVubmluZyB0aGUgbW9kZWwsIGV0YylcbiAqICAgLSBwZXJzaXN0aW5nIGhpc3RvcmljYWwgcmVzdWx0cyB0byB0aGUgZGIgKHZpYSB7QGxpbmsgcGFyYW1ldGVyc30pXG4gKiAtIGV4cG9ydCAodG8gRXhjZWwgYW5kIFBERik6IHtAbGluayBleHBvcnR9XG4gKiAtIGVhc3kgbG9hZGluZyBvZiBoaXN0b3JpY2FsIHJ1bnNcbiAqIC0gcm91dGluZ1xuICogLSBlbnRlcmluZyB0aGUgcmVhbCwgbWVhc3VyZWQgKGFzIG9wcG9zZWQgdG8gcHJlZGljdGVkKSB2YWx1ZXMgbWFudWFsbHlcbiAqIC0gbm90aWZpY2F0aW9ucyBmb3IgY2hhbmdpbmcgaW5wdXRzLCBjb21wbGV0aW9uIG9mIGNvbXB1dGF0aW9ucywgZXRjOiB7QGxpbmsgb25JbnB1dENoYW5nZWR9XG4gKiAqL1xuZXhwb3J0IGNsYXNzIENvbXB1dGF0aW9uVmlldyBleHRlbmRzIEZ1bmN0aW9uVmlldyB7XG5cbn1cbiJdfQ==
|
package/src/function-view.d.ts
CHANGED
|
@@ -1,41 +1,38 @@
|
|
|
1
1
|
import * as rxjs from 'rxjs';
|
|
2
2
|
import * as DG from 'datagrok-api/dg';
|
|
3
3
|
export declare class FunctionView extends DG.ViewBase {
|
|
4
|
+
constructor(funcCall: DG.FuncCall | null);
|
|
5
|
+
get func(): DG.Func;
|
|
4
6
|
onViewInitialized: rxjs.Subject<void>;
|
|
5
7
|
onInputChanged: rxjs.Subject<void>;
|
|
6
8
|
onComputationStarted: rxjs.Subject<DG.FuncCall>;
|
|
7
9
|
onComputationCompleted: rxjs.Subject<DG.FuncCall>;
|
|
8
10
|
onComputationSucceeded: rxjs.Subject<DG.FuncCall>;
|
|
9
11
|
onComputationError: rxjs.Subject<DG.FuncCall>;
|
|
10
|
-
constructor(func: DG.Func);
|
|
11
|
-
/** Override if custom initialization is required */
|
|
12
|
-
init(): void;
|
|
13
12
|
private _type;
|
|
14
13
|
get type(): string;
|
|
15
|
-
|
|
14
|
+
get isInputPanelRequired(): boolean;
|
|
15
|
+
get tabsLabels(): string[];
|
|
16
|
+
readonly context: DG.Context;
|
|
17
|
+
preparedCall: DG.FuncCall | null;
|
|
16
18
|
lastCall: DG.FuncCall | null;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
/** Override to
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
exportPanel: HTMLElement;
|
|
35
|
-
/** Override if custom export panel is required */
|
|
36
|
-
buildExportPanel(): HTMLElement;
|
|
37
|
-
/** Call to update export panel */
|
|
38
|
-
renderExportPanel(): void;
|
|
19
|
+
protected outputCategories: string[];
|
|
20
|
+
protected paramToCategoryMap: Record<string, string[]>;
|
|
21
|
+
init(funcCall: DG.FuncCall): Promise<void>;
|
|
22
|
+
/** Override to create a fully custom UI */
|
|
23
|
+
build(): HTMLElement;
|
|
24
|
+
/** Override to create a custom input block. */
|
|
25
|
+
buildInputBlock(): HTMLElement;
|
|
26
|
+
/** Override to create a custom output block. */
|
|
27
|
+
buildOutputBlock(): HTMLElement;
|
|
28
|
+
/** Override to create a custom historical runs control. */
|
|
29
|
+
buildHistoryBlock(): HTMLElement;
|
|
30
|
+
/** Override to create a custom input control. */
|
|
31
|
+
buildRibbonPanels(): HTMLElement[][];
|
|
32
|
+
/** Override to create a custom ribbon menu on the top. */
|
|
33
|
+
buildRibbonMenu(): void;
|
|
34
|
+
/** Override to create bug reporting feature */
|
|
35
|
+
reportBug: (() => Promise<void>) | null;
|
|
39
36
|
/** Filename for exported files. Override for custom names */
|
|
40
37
|
exportFilename(format: string): string;
|
|
41
38
|
/** Override to provide supported export formats.
|
|
@@ -44,52 +41,41 @@ export declare class FunctionView extends DG.ViewBase {
|
|
|
44
41
|
/** Override to provide custom file extensions for exported formats.
|
|
45
42
|
* These formats are available under the "Export" popup on the ribbon panel. */
|
|
46
43
|
get supportedExportExtensions(): Record<string, string>;
|
|
47
|
-
/** Override to provide custom export. */
|
|
44
|
+
/** Override to provide custom export. Obligatory to override if custom {@link build()} or {@link buildOutputBlock()} is overriden. */
|
|
48
45
|
export(format: string): Promise<Blob>;
|
|
49
|
-
/** Panel to deal with historical runs */
|
|
50
|
-
historyPanel: HTMLElement;
|
|
51
|
-
/** Override to provide custom historical runs UI */
|
|
52
|
-
buildHistoryPanel(): HTMLElement;
|
|
53
|
-
/** Call to update history panel */
|
|
54
|
-
renderHistoryPanel(): void;
|
|
55
46
|
/** Saves the computation results to the historical results, returns its id. See also {@link loadRun}. */
|
|
56
47
|
saveRun(call: DG.FuncCall): Promise<string>;
|
|
57
48
|
/** Loads the specified historical results. See also {@link saveRun}. */
|
|
58
49
|
loadRun(runId: string): Promise<DG.FuncCall>;
|
|
59
50
|
/** Loads all the function call of this function. */
|
|
60
51
|
pullRuns(): Promise<DG.FuncCall[]>;
|
|
61
|
-
|
|
62
|
-
prepare(): Promise<void>;
|
|
63
|
-
/** Override to customize ribbon panels */
|
|
64
|
-
buildRibbonPanels(): Promise<HTMLElement[][]>;
|
|
65
|
-
/** Call to update ribbon panels */
|
|
66
|
-
renderRibbonPanels(): Promise<void>;
|
|
67
|
-
/** Builds the complete view. Override it if completely custom implementation is needed,
|
|
68
|
-
* otherwise consider overriding {@link buildInputPanel} and/or {@link buildOutputPanel} */
|
|
69
|
-
build(): HTMLElement;
|
|
70
|
-
render(): Promise<void>;
|
|
71
|
-
/** Override to create a custom input control. */
|
|
72
|
-
buildRibbonPanel(): HTMLElement;
|
|
52
|
+
clearResults(switchToOutput?: boolean): void;
|
|
73
53
|
run(): Promise<void>;
|
|
74
54
|
compute(call: DG.FuncCall): Promise<void>;
|
|
55
|
+
outputParametersToView(call: DG.FuncCall): void;
|
|
56
|
+
renderRunSection(call: DG.FuncCall): HTMLElement;
|
|
75
57
|
showInputs: boolean;
|
|
76
58
|
singleDfParam: boolean;
|
|
59
|
+
paramGridSwitches: Map<string, HTMLElement>;
|
|
77
60
|
paramViewers: Map<string, DG.Viewer[]>;
|
|
78
|
-
|
|
61
|
+
paramSpans: Map<string, HTMLElement>;
|
|
79
62
|
resultTabs: Map<String, HTMLElement>;
|
|
63
|
+
resultsTabControl: DG.TabControl | undefined;
|
|
80
64
|
resultsDiv: HTMLElement;
|
|
65
|
+
controlsRoot: HTMLDivElement;
|
|
66
|
+
resultsRoot: HTMLDivElement;
|
|
67
|
+
historyRoot: HTMLDivElement;
|
|
81
68
|
inputsDiv: HTMLDivElement;
|
|
82
|
-
inputFieldsToParameters(call: DG.FuncCall): void;
|
|
83
|
-
/** helper methods */
|
|
84
69
|
appendResultDataFrame(param: DG.FuncCallParam, options?: {
|
|
85
70
|
caption?: string;
|
|
86
71
|
category?: string;
|
|
87
72
|
height?: number;
|
|
88
73
|
}): void;
|
|
74
|
+
appendResultScalar(param: DG.FuncCallParam, options: {
|
|
75
|
+
caption?: string;
|
|
76
|
+
category: string;
|
|
77
|
+
height?: number;
|
|
78
|
+
}): void;
|
|
89
79
|
_appendResultElement(d: HTMLElement, category?: string): void;
|
|
90
|
-
/** helper methods */
|
|
91
|
-
buildInputForm(call: DG.FuncCall): HTMLElement;
|
|
92
|
-
clearResults(clearTabs?: boolean, showOutput?: boolean): void;
|
|
93
|
-
outputParametersToView(call: DG.FuncCall): void;
|
|
94
80
|
}
|
|
95
81
|
//# sourceMappingURL=function-view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-view.d.ts","sourceRoot":"","sources":["function-view.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"function-view.d.ts","sourceRoot":"","sources":["function-view.ts"],"names":[],"mappings":"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"}
|