@datagrok-libraries/utils 0.2.9 → 0.3.9

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 (41) hide show
  1. package/.eslintrc.json +2 -1
  2. package/package.json +5 -4
  3. package/src/computation-view/common/inject-tokens.d.ts +10 -0
  4. package/src/computation-view/common/inject-tokens.d.ts.map +1 -0
  5. package/src/computation-view/common/inject-tokens.js +10 -0
  6. package/src/computation-view/common/service-interfaces.d.ts +40 -0
  7. package/src/computation-view/common/service-interfaces.d.ts.map +1 -0
  8. package/src/computation-view/common/service-interfaces.js +2 -0
  9. package/src/computation-view/computation-view.d.ts +30 -0
  10. package/src/computation-view/computation-view.d.ts.map +1 -0
  11. package/src/computation-view/computation-view.js +61 -0
  12. package/src/computation-view/default-components/export-component.d.ts +9 -0
  13. package/src/computation-view/default-components/export-component.d.ts.map +1 -0
  14. package/src/computation-view/default-components/export-component.js +26 -0
  15. package/src/computation-view/default-components/historical-run-load-component.d.ts +9 -0
  16. package/src/computation-view/default-components/historical-run-load-component.d.ts.map +1 -0
  17. package/src/computation-view/default-components/historical-run-load-component.js +37 -0
  18. package/src/computation-view/default-components/input-panel-component.d.ts +14 -0
  19. package/src/computation-view/default-components/input-panel-component.d.ts.map +1 -0
  20. package/src/computation-view/default-components/input-panel-component.js +40 -0
  21. package/src/computation-view/default-components/output-panel-component.d.ts +9 -0
  22. package/src/computation-view/default-components/output-panel-component.d.ts.map +1 -0
  23. package/src/computation-view/default-components/output-panel-component.js +23 -0
  24. package/src/computation-view/default-services/export-service.d.ts +16 -0
  25. package/src/computation-view/default-services/export-service.d.ts.map +1 -0
  26. package/src/computation-view/default-services/export-service.js +116 -0
  27. package/src/computation-view/default-services/historical-run-service.d.ts +8 -0
  28. package/src/computation-view/default-services/historical-run-service.d.ts.map +1 -0
  29. package/src/computation-view/default-services/historical-run-service.js +15 -0
  30. package/src/computation-view/default-services/state-service.d.ts +16 -0
  31. package/src/computation-view/default-services/state-service.d.ts.map +1 -0
  32. package/src/computation-view/default-services/state-service.js +40 -0
  33. package/src/function-view.d.ts +2 -2
  34. package/src/function-view.d.ts.map +1 -1
  35. package/src/function-view.js +1 -1
  36. package/src/similarity-metrics.d.ts +17 -0
  37. package/src/similarity-metrics.d.ts.map +1 -1
  38. package/src/similarity-metrics.js +59 -5
  39. package/src/computation-view.d.ts +0 -70
  40. package/src/computation-view.d.ts.map +0 -1
  41. package/src/computation-view.js +0 -135
package/.eslintrc.json CHANGED
@@ -34,6 +34,7 @@
34
34
  "error",
35
35
  "1tbs",
36
36
  { "allowSingleLine": true }
37
- ]
37
+ ],
38
+ "no-unused-vars": "off"
38
39
  }
39
40
  }
package/package.json CHANGED
@@ -4,25 +4,26 @@
4
4
  "access": "public"
5
5
  },
6
6
  "fullName": "Utils",
7
- "version": "0.2.9",
7
+ "version": "0.3.9",
8
8
  "description": "Common utilities",
9
9
  "dependencies": {
10
- "cash-dom": "latest",
11
10
  "@types/node": "^14.14.37",
11
+ "cash-dom": "latest",
12
12
  "datagrok-api": "^0.148.3",
13
13
  "dts-bundle": "^0.7.3",
14
+ "exceljs": "^4.3.0",
14
15
  "node-fetch": "^2.6.0",
15
16
  "rxjs": "^7.4.0",
16
17
  "wu": "latest"
17
18
  },
18
19
  "devDependencies": {
20
+ "@types/wu": "latest",
19
21
  "@typescript-eslint/eslint-plugin": "^5.11.0",
20
22
  "@typescript-eslint/parser": "^5.11.0",
21
23
  "eslint": "^8.8.0",
22
24
  "eslint-config-google": "^0.14.0",
23
25
  "ts-loader": "^9.2.6",
24
- "typescript": "^4.2.3",
25
- "@types/wu": "latest"
26
+ "typescript": "^4.2.3"
26
27
  },
27
28
  "scripts": {
28
29
  "link": "npm link",
@@ -0,0 +1,10 @@
1
+ export declare const tokens: {
2
+ readonly stateService: "stateService";
3
+ readonly historyService: "historyService";
4
+ readonly exportService: "exportService";
5
+ readonly inputPanel: "inputPanel";
6
+ readonly outputPanel: "outputPanel";
7
+ readonly exportPanel: "exportPanel";
8
+ readonly historyPanel: "historyPanel";
9
+ };
10
+ //# sourceMappingURL=inject-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject-tokens.d.ts","sourceRoot":"","sources":["inject-tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;CAST,CAAC"}
@@ -0,0 +1,10 @@
1
+ export const tokens = {
2
+ stateService: 'stateService',
3
+ historyService: 'historyService',
4
+ exportService: 'exportService',
5
+ inputPanel: 'inputPanel',
6
+ outputPanel: 'outputPanel',
7
+ exportPanel: 'exportPanel',
8
+ historyPanel: 'historyPanel',
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LXRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluamVjdC10b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLFlBQVksRUFBRSxjQUFjO0lBQzVCLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMsYUFBYSxFQUFFLGVBQWU7SUFFOUIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsWUFBWSxFQUFFLGNBQWM7Q0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB0b2tlbnMgPSB7XG4gIHN0YXRlU2VydmljZTogJ3N0YXRlU2VydmljZScsXG4gIGhpc3RvcnlTZXJ2aWNlOiAnaGlzdG9yeVNlcnZpY2UnLFxuICBleHBvcnRTZXJ2aWNlOiAnZXhwb3J0U2VydmljZScsXG5cbiAgaW5wdXRQYW5lbDogJ2lucHV0UGFuZWwnLFxuICBvdXRwdXRQYW5lbDogJ291dHB1dFBhbmVsJyxcbiAgZXhwb3J0UGFuZWw6ICdleHBvcnRQYW5lbCcsXG4gIGhpc3RvcnlQYW5lbDogJ2hpc3RvcnlQYW5lbCcsXG59IGFzIGNvbnN0O1xuIl19
@@ -0,0 +1,40 @@
1
+ import * as DG from 'datagrok-api/dg';
2
+ import { Subject } from 'rxjs';
3
+ export interface Component {
4
+ root: HTMLElement;
5
+ render(): void;
6
+ }
7
+ export interface ExportService {
8
+ get supportedExportFormats(): string[];
9
+ /** Override to provide custom file extensions for exported formats.
10
+ * These formats are available under the "Export" popup on the ribbon panel. */
11
+ get supportedExportExtensions(): Record<string, string>;
12
+ filename(format: string): string;
13
+ /** Override to provide custom export. */
14
+ export(format: string): Promise<Blob>;
15
+ }
16
+ export interface StateService {
17
+ /** Name of view */
18
+ name: string;
19
+ /** Function last call info */
20
+ lastCall: DG.FuncCall | null;
21
+ /** Main function of ComputationView. */
22
+ func: DG.Func | null;
23
+ /** The actual computation function. */
24
+ compute(call: DG.FuncCall): Promise<void>;
25
+ /** Maps inputs to parameters, computes, and maps output parameters to the UI. */
26
+ run(): Promise<void>;
27
+ /** Prepare func to run */
28
+ prepare(): void;
29
+ onComputationError: Subject<DG.FuncCall>;
30
+ onComputationCompleted: Subject<DG.FuncCall>;
31
+ }
32
+ export interface HistoricalRunService {
33
+ /** Saves the computation results to the historical results, returns its id. See also {@link loadRun}. */
34
+ saveRun(call: DG.FuncCall): Promise<string>;
35
+ /** Loads the specified historical results. See also {@link saveRun}. */
36
+ loadRun(runId: string): Promise<DG.FuncCall>;
37
+ /** Pulls functions' historical runs list */
38
+ pullRuns(): Promise<DG.FuncCall[]>;
39
+ }
40
+ //# sourceMappingURL=service-interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-interfaces.d.ts","sourceRoot":"","sources":["service-interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAE7B,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,WAAW,CAAA;IAEjB,MAAM,IAAI,IAAI,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,sBAAsB,IAAI,MAAM,EAAE,CAAA;IAEtC;mFAC+E;IAC/E,IAAI,yBAAyB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEvD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IAEhC,yCAAyC;IACzC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAA;IAEZ,8BAA8B;IAC9B,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;IAE7B,wCAAwC;IACxC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;IAErB,uCAAuC;IACvC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C,iFAAiF;IACjF,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAErB,0BAA0B;IAC1B,OAAO,IAAI,IAAI,CAAC;IAEhB,kBAAkB,EAAE,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACzC,sBAAsB,EAAE,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,oBAAoB;IACnC,yGAAyG;IACzG,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAE3C,wEAAwE;IACxE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;IAE5C,4CAA4C;IAC5C,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;CACnC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VydmljZS1pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnQge1xuICByb290OiBIVE1MRWxlbWVudFxuXG4gIHJlbmRlcigpOiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0U2VydmljZSB7XG4gIGdldCBzdXBwb3J0ZWRFeHBvcnRGb3JtYXRzKCk6IHN0cmluZ1tdXG5cbiAgLyoqIE92ZXJyaWRlIHRvIHByb3ZpZGUgY3VzdG9tIGZpbGUgZXh0ZW5zaW9ucyBmb3IgZXhwb3J0ZWQgZm9ybWF0cy5cbiAgICogVGhlc2UgZm9ybWF0cyBhcmUgYXZhaWxhYmxlIHVuZGVyIHRoZSBcIkV4cG9ydFwiIHBvcHVwIG9uIHRoZSByaWJib24gcGFuZWwuICovXG4gIGdldCBzdXBwb3J0ZWRFeHBvcnRFeHRlbnNpb25zKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cblxuICBmaWxlbmFtZShmb3JtYXQ6IHN0cmluZyk6IHN0cmluZ1xuXG4gIC8qKiBPdmVycmlkZSB0byBwcm92aWRlIGN1c3RvbSBleHBvcnQuICovXG4gIGV4cG9ydChmb3JtYXQ6IHN0cmluZyk6IFByb21pc2U8QmxvYj5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZVNlcnZpY2Uge1xuICAvKiogTmFtZSBvZiB2aWV3ICovXG4gIG5hbWU6IHN0cmluZ1xuXG4gIC8qKiBGdW5jdGlvbiBsYXN0IGNhbGwgaW5mbyAqL1xuICBsYXN0Q2FsbDogREcuRnVuY0NhbGwgfCBudWxsO1xuXG4gIC8qKiBNYWluIGZ1bmN0aW9uIG9mIENvbXB1dGF0aW9uVmlldy4gKi9cbiAgZnVuYzogREcuRnVuYyB8IG51bGw7XG5cbiAgLyoqIFRoZSBhY3R1YWwgY29tcHV0YXRpb24gZnVuY3Rpb24uICovXG4gIGNvbXB1dGUoY2FsbDogREcuRnVuY0NhbGwpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKiBNYXBzIGlucHV0cyB0byBwYXJhbWV0ZXJzLCBjb21wdXRlcywgYW5kIG1hcHMgb3V0cHV0IHBhcmFtZXRlcnMgdG8gdGhlIFVJLiAqL1xuICBydW4oKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKiogUHJlcGFyZSBmdW5jIHRvIHJ1biAqL1xuICBwcmVwYXJlKCk6IHZvaWQ7XG5cbiAgb25Db21wdXRhdGlvbkVycm9yOiBTdWJqZWN0PERHLkZ1bmNDYWxsPjtcbiAgb25Db21wdXRhdGlvbkNvbXBsZXRlZDogU3ViamVjdDxERy5GdW5jQ2FsbD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGlzdG9yaWNhbFJ1blNlcnZpY2Uge1xuICAvKiogU2F2ZXMgdGhlIGNvbXB1dGF0aW9uIHJlc3VsdHMgdG8gdGhlIGhpc3RvcmljYWwgcmVzdWx0cywgcmV0dXJucyBpdHMgaWQuIFNlZSBhbHNvIHtAbGluayBsb2FkUnVufS4gKi9cbiAgc2F2ZVJ1bihjYWxsOiBERy5GdW5jQ2FsbCk6IFByb21pc2U8c3RyaW5nPlxuXG4gIC8qKiBMb2FkcyB0aGUgc3BlY2lmaWVkIGhpc3RvcmljYWwgcmVzdWx0cy4gU2VlIGFsc28ge0BsaW5rIHNhdmVSdW59LiAqL1xuICBsb2FkUnVuKHJ1bklkOiBzdHJpbmcpOiBQcm9taXNlPERHLkZ1bmNDYWxsPlxuXG4gIC8qKiBQdWxscyBmdW5jdGlvbnMnIGhpc3RvcmljYWwgcnVucyBsaXN0ICovXG4gIHB1bGxSdW5zKCk6IFByb21pc2U8REcuRnVuY0NhbGxbXT5cbn1cbiJdfQ==
@@ -0,0 +1,30 @@
1
+ import * as DG from 'datagrok-api/dg';
2
+ import { FunctionView } from '../function-view';
3
+ import { Component, StateService } from './common/service-interfaces';
4
+ /**
5
+ * Base class for handling Compute models (see https://github.com/datagrok-ai/public/blob/master/help/compute/compute.md).
6
+ * In most cases, the computation is a simple {@link Func}
7
+ * Extend it in cases where a behavior or UI not supported by the {@link FunctionView} is needed.
8
+ *
9
+ * It provides the following functionality out-of-the-box, where each section could be customized:
10
+ * - a structured way to represent input and output parameters: {@link parameters}
11
+ * - generic way to generate UI for inputs, outputs, and interactivity (running the model, etc)
12
+ * - persisting historical results to the db (via {@link parameters})
13
+ * - export (to Excel and PDF): {@link export}
14
+ * - easy loading of historical runs
15
+ * - routing
16
+ * - entering the real, measured (as opposed to predicted) values manually
17
+ * - notifications for changing inputs, completion of computations, etc: {@link onInputChanged}
18
+ * */
19
+ export declare class ComputationView extends FunctionView {
20
+ state: StateService;
21
+ inputPanel: Component;
22
+ outputPanel: Component;
23
+ exportButton: Component;
24
+ static inject: readonly ["stateService", "inputPanel", "outputPanel", "exportPanel"];
25
+ /** Not intented to be used directly in common case. Use {@link ComputationViewBuilder} instead. */
26
+ constructor(state: StateService, inputPanel: Component, outputPanel: Component, exportButton: Component);
27
+ /** Override to provide custom initialization. {@link onViewInitialized} gets fired after that. */
28
+ render(func: DG.Func): Promise<void>;
29
+ }
30
+ //# sourceMappingURL=computation-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computation-view.d.ts","sourceRoot":"","sources":["computation-view.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,SAAS,EAAE,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAGpE;;;;;;;;;;;;;;KAcK;AACL,qBAAa,eAAgB,SAAQ,YAAY;IAUtC,KAAK,EAAE,YAAY;IACnB,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,SAAS;IAZhC,OAAc,MAAM,wEAKT;IAEX,mGAAmG;gBAE1F,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,SAAS,EACrB,WAAW,EAAE,SAAS,EACtB,YAAY,EAAE,SAAS;IAQhC,kGAAkG;IACrF,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAWlD"}
@@ -0,0 +1,61 @@
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
+ import { FunctionView } from '../function-view';
12
+ import { tokens } from './common/inject-tokens';
13
+ /**
14
+ * Base class for handling Compute models (see https://github.com/datagrok-ai/public/blob/master/help/compute/compute.md).
15
+ * In most cases, the computation is a simple {@link Func}
16
+ * Extend it in cases where a behavior or UI not supported by the {@link FunctionView} is needed.
17
+ *
18
+ * It provides the following functionality out-of-the-box, where each section could be customized:
19
+ * - a structured way to represent input and output parameters: {@link parameters}
20
+ * - generic way to generate UI for inputs, outputs, and interactivity (running the model, etc)
21
+ * - persisting historical results to the db (via {@link parameters})
22
+ * - export (to Excel and PDF): {@link export}
23
+ * - easy loading of historical runs
24
+ * - routing
25
+ * - entering the real, measured (as opposed to predicted) values manually
26
+ * - notifications for changing inputs, completion of computations, etc: {@link onInputChanged}
27
+ * */
28
+ export class ComputationView extends FunctionView {
29
+ /** Not intented to be used directly in common case. Use {@link ComputationViewBuilder} instead. */
30
+ constructor(state, inputPanel, outputPanel, exportButton) {
31
+ super(state.func);
32
+ this.state = state;
33
+ this.inputPanel = inputPanel;
34
+ this.outputPanel = outputPanel;
35
+ this.exportButton = exportButton;
36
+ if (this.state.func != null)
37
+ this.render(this.state.func);
38
+ }
39
+ /** Override to provide custom initialization. {@link onViewInitialized} gets fired after that. */
40
+ render(func) {
41
+ const _super = Object.create(null, {
42
+ init: { get: () => super.init }
43
+ });
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ this.state.func = func;
46
+ yield _super.init.call(this, this.state.func);
47
+ this.root.innerHTML = '';
48
+ this.root.append(ui.divH([this.inputPanel.root, this.outputPanel.root]));
49
+ this.setRibbonPanels([[
50
+ this.exportButton.root,
51
+ ]]);
52
+ });
53
+ }
54
+ }
55
+ ComputationView.inject = [
56
+ tokens.stateService,
57
+ tokens.inputPanel,
58
+ tokens.outputPanel,
59
+ tokens.exportPanel,
60
+ ];
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0YXRpb24tdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbXB1dGF0aW9uLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBR0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRTlDOzs7Ozs7Ozs7Ozs7OztLQWNLO0FBQ0wsTUFBTSxPQUFPLGVBQWdCLFNBQVEsWUFBWTtJQVEvQyxtR0FBbUc7SUFDbkcsWUFDUyxLQUFtQixFQUNuQixVQUFxQixFQUNyQixXQUFzQixFQUN0QixZQUF1QjtRQUU5QixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBTFgsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFXO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFXO1FBSTlCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGtHQUFrRztJQUNyRixNQUFNLENBQUMsSUFBYTs7Ozs7WUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBRXZCLE1BQU0sT0FBTSxJQUFJLFlBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXpFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJO2lCQUN2QixDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7S0FBQTs7QUEvQmEsc0JBQU0sR0FBRztJQUNyQixNQUFNLENBQUMsWUFBWTtJQUNuQixNQUFNLENBQUMsVUFBVTtJQUNqQixNQUFNLENBQUMsV0FBVztJQUNsQixNQUFNLENBQUMsV0FBVztDQUNWLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG4vKiBlc2xpbnQtZGlzYWJsZSB2YWxpZC1qc2RvYyAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7RnVuY3Rpb25WaWV3fSBmcm9tICcuLi9mdW5jdGlvbi12aWV3JztcbmltcG9ydCB7Q29tcG9uZW50LCBTdGF0ZVNlcnZpY2V9IGZyb20gJy4vY29tbW9uL3NlcnZpY2UtaW50ZXJmYWNlcyc7XG5pbXBvcnQge3Rva2Vuc30gZnJvbSAnLi9jb21tb24vaW5qZWN0LXRva2Vucyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgaGFuZGxpbmcgQ29tcHV0ZSBtb2RlbHMgKHNlZSBodHRwczovL2dpdGh1Yi5jb20vZGF0YWdyb2stYWkvcHVibGljL2Jsb2IvbWFzdGVyL2hlbHAvY29tcHV0ZS9jb21wdXRlLm1kKS5cbiAqIEluIG1vc3QgY2FzZXMsIHRoZSBjb21wdXRhdGlvbiBpcyBhIHNpbXBsZSB7QGxpbmsgRnVuY31cbiAqIEV4dGVuZCBpdCBpbiBjYXNlcyB3aGVyZSBhIGJlaGF2aW9yIG9yIFVJIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHtAbGluayBGdW5jdGlvblZpZXd9IGlzIG5lZWRlZC5cbiAqXG4gKiBJdCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uYWxpdHkgb3V0LW9mLXRoZS1ib3gsIHdoZXJlIGVhY2ggc2VjdGlvbiBjb3VsZCBiZSBjdXN0b21pemVkOlxuICogLSBhIHN0cnVjdHVyZWQgd2F5IHRvIHJlcHJlc2VudCBpbnB1dCBhbmQgb3V0cHV0IHBhcmFtZXRlcnM6IHtAbGluayBwYXJhbWV0ZXJzfVxuICogLSBnZW5lcmljIHdheSB0byBnZW5lcmF0ZSBVSSBmb3IgaW5wdXRzLCBvdXRwdXRzLCBhbmQgaW50ZXJhY3Rpdml0eSAocnVubmluZyB0aGUgbW9kZWwsIGV0YylcbiAqICAgLSBwZXJzaXN0aW5nIGhpc3RvcmljYWwgcmVzdWx0cyB0byB0aGUgZGIgKHZpYSB7QGxpbmsgcGFyYW1ldGVyc30pXG4gKiAtIGV4cG9ydCAodG8gRXhjZWwgYW5kIFBERik6IHtAbGluayBleHBvcnR9XG4gKiAtIGVhc3kgbG9hZGluZyBvZiBoaXN0b3JpY2FsIHJ1bnNcbiAqIC0gcm91dGluZ1xuICogLSBlbnRlcmluZyB0aGUgcmVhbCwgbWVhc3VyZWQgKGFzIG9wcG9zZWQgdG8gcHJlZGljdGVkKSB2YWx1ZXMgbWFudWFsbHlcbiAqIC0gbm90aWZpY2F0aW9ucyBmb3IgY2hhbmdpbmcgaW5wdXRzLCBjb21wbGV0aW9uIG9mIGNvbXB1dGF0aW9ucywgZXRjOiB7QGxpbmsgb25JbnB1dENoYW5nZWR9XG4gKiAqL1xuZXhwb3J0IGNsYXNzIENvbXB1dGF0aW9uVmlldyBleHRlbmRzIEZ1bmN0aW9uVmlldyB7XG4gIHB1YmxpYyBzdGF0aWMgaW5qZWN0ID0gW1xuICAgIHRva2Vucy5zdGF0ZVNlcnZpY2UsXG4gICAgdG9rZW5zLmlucHV0UGFuZWwsXG4gICAgdG9rZW5zLm91dHB1dFBhbmVsLFxuICAgIHRva2Vucy5leHBvcnRQYW5lbCxcbiAgXSBhcyBjb25zdDtcblxuICAvKiogTm90IGludGVudGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgaW4gY29tbW9uIGNhc2UuIFVzZSB7QGxpbmsgQ29tcHV0YXRpb25WaWV3QnVpbGRlcn0gaW5zdGVhZC4gKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHN0YXRlOiBTdGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIGlucHV0UGFuZWw6IENvbXBvbmVudCxcbiAgICBwdWJsaWMgb3V0cHV0UGFuZWw6IENvbXBvbmVudCxcbiAgICBwdWJsaWMgZXhwb3J0QnV0dG9uOiBDb21wb25lbnQsXG4gICkge1xuICAgIHN1cGVyKHN0YXRlLmZ1bmMpO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUuZnVuYyAhPSBudWxsKVxuICAgICAgdGhpcy5yZW5kZXIodGhpcy5zdGF0ZS5mdW5jKTtcbiAgfVxuXG4gIC8qKiBPdmVycmlkZSB0byBwcm92aWRlIGN1c3RvbSBpbml0aWFsaXphdGlvbi4ge0BsaW5rIG9uVmlld0luaXRpYWxpemVkfSBnZXRzIGZpcmVkIGFmdGVyIHRoYXQuICovXG4gIHB1YmxpYyBhc3luYyByZW5kZXIoZnVuYzogREcuRnVuYyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc3RhdGUuZnVuYyA9IGZ1bmM7XG5cbiAgICBhd2FpdCBzdXBlci5pbml0KHRoaXMuc3RhdGUuZnVuYyk7XG4gICAgdGhpcy5yb290LmlubmVySFRNTCA9ICcnO1xuICAgIHRoaXMucm9vdC5hcHBlbmQodWkuZGl2SChbdGhpcy5pbnB1dFBhbmVsLnJvb3QsIHRoaXMub3V0cHV0UGFuZWwucm9vdF0pKTtcblxuICAgIHRoaXMuc2V0UmliYm9uUGFuZWxzKFtbXG4gICAgICB0aGlzLmV4cG9ydEJ1dHRvbi5yb290LFxuICAgIF1dKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,9 @@
1
+ import { Component, ExportService } from '../common/service-interfaces';
2
+ export declare class DefaultExportComponent implements Component {
3
+ private exportService;
4
+ root: HTMLElement;
5
+ static inject: readonly ["exportService"];
6
+ constructor(exportService: ExportService);
7
+ render(): void;
8
+ }
9
+ //# sourceMappingURL=export-component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-component.d.ts","sourceRoot":"","sources":["export-component.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAGtE,qBAAa,sBAAuB,YAAW,SAAS;IAQpD,OAAO,CAAC,aAAa;IAPhB,IAAI,EAAE,WAAW,CAAY;IAEpC,OAAc,MAAM,6BAET;gBAGD,aAAa,EAAE,aAAa;IAKtC,MAAM,IAAI,IAAI;CAQf"}
@@ -0,0 +1,26 @@
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
+ import * as DG from 'datagrok-api/dg';
12
+ import { tokens } from '../common/inject-tokens';
13
+ export class DefaultExportComponent {
14
+ constructor(exportService) {
15
+ this.exportService = exportService;
16
+ this.root = ui.div();
17
+ this.render();
18
+ }
19
+ render() {
20
+ this.root = ui.comboPopup(ui.icons.save(null, 'Export'), this.exportService.supportedExportFormats, (format) => __awaiter(this, void 0, void 0, function* () { return DG.Utils.download(this.exportService.filename(format), yield this.exportService.export(format)); }));
21
+ }
22
+ }
23
+ DefaultExportComponent.inject = [
24
+ tokens.exportService,
25
+ ];
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImV4cG9ydC1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBR0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUUvQyxNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLFlBQ1UsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFQL0IsU0FBSSxHQUFnQixFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFTbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsVUFBVSxDQUN2QixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEVBQ3pDLENBQU8sTUFBYyxFQUFFLEVBQUUsZ0RBQ3ZCLE9BQUEsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBLEdBQUEsQ0FDbEcsQ0FBQztJQUNKLENBQUM7O0FBakJhLDZCQUFNLEdBQUc7SUFDckIsTUFBTSxDQUFDLGFBQWE7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQge0NvbXBvbmVudCwgRXhwb3J0U2VydmljZX0gZnJvbSAnLi4vY29tbW9uL3NlcnZpY2UtaW50ZXJmYWNlcyc7XG5pbXBvcnQge3Rva2Vuc30gZnJvbSAnLi4vY29tbW9uL2luamVjdC10b2tlbnMnO1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdEV4cG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyByb290OiBIVE1MRWxlbWVudCA9IHVpLmRpdigpO1xuXG4gIHB1YmxpYyBzdGF0aWMgaW5qZWN0ID0gW1xuICAgIHRva2Vucy5leHBvcnRTZXJ2aWNlLFxuICBdIGFzIGNvbnN0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogRXhwb3J0U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlbmRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnJvb3QgPSB1aS5jb21ib1BvcHVwKFxuICAgICAgdWkuaWNvbnMuc2F2ZShudWxsLCAnRXhwb3J0JyksXG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2Uuc3VwcG9ydGVkRXhwb3J0Rm9ybWF0cyxcbiAgICAgIGFzeW5jIChmb3JtYXQ6IHN0cmluZykgPT5cbiAgICAgICAgREcuVXRpbHMuZG93bmxvYWQodGhpcy5leHBvcnRTZXJ2aWNlLmZpbGVuYW1lKGZvcm1hdCksIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnQoZm9ybWF0KSksXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,9 @@
1
+ import { Component, HistoricalRunService } from '../common/service-interfaces';
2
+ export declare class DefaultHistoricalRunComponent implements Component {
3
+ private historicalRunService;
4
+ root: HTMLElement;
5
+ static inject: readonly ["historyService"];
6
+ constructor(historicalRunService: HistoricalRunService);
7
+ render(): void;
8
+ }
9
+ //# sourceMappingURL=historical-run-load-component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"historical-run-load-component.d.ts","sourceRoot":"","sources":["historical-run-load-component.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,SAAS,EAAE,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAG7E,qBAAa,6BAA8B,YAAW,SAAS;IAOjD,OAAO,CAAC,oBAAoB;IANjC,IAAI,EAAE,WAAW,CAAY;IAEpC,OAAc,MAAM,8BAET;gBAES,oBAAoB,EAAE,oBAAoB;IAI9D,MAAM,IAAI,IAAI;CAcf"}
@@ -0,0 +1,37 @@
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
+ import * as DG from 'datagrok-api/dg';
12
+ import { tokens } from '../common/inject-tokens';
13
+ export class DefaultHistoricalRunComponent {
14
+ constructor(historicalRunService) {
15
+ this.historicalRunService = historicalRunService;
16
+ this.root = ui.div();
17
+ this.render();
18
+ }
19
+ render() {
20
+ this.root = ui.iconFA('history', () => {
21
+ this.historicalRunService.pullRuns().then((historicalRuns) => __awaiter(this, void 0, void 0, function* () {
22
+ const menu = DG.Menu.popup();
23
+ let i = 0;
24
+ for (const run of historicalRuns) {
25
+ //@ts-ignore
26
+ menu.item(`${run.func.friendlyName} — ${i}`, () => __awaiter(this, void 0, void 0, function* () { return this.historicalRunService.loadRun(run.id); }));
27
+ i++;
28
+ }
29
+ menu.show();
30
+ }));
31
+ });
32
+ }
33
+ }
34
+ DefaultHistoricalRunComponent.inject = [
35
+ tokens.historyService,
36
+ ];
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1ydW4tbG9hZC1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJoaXN0b3JpY2FsLXJ1bi1sb2FkLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFHQSxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRS9DLE1BQU0sT0FBTyw2QkFBNkI7SUFPeEMsWUFBb0Isb0JBQTBDO1FBQTFDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFOdkQsU0FBSSxHQUFnQixFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFPbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDcEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFPLGNBQWMsRUFBRSxFQUFFO2dCQUNqRSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ1YsS0FBSyxNQUFNLEdBQUcsSUFBSSxjQUFjLEVBQUU7b0JBQ2hDLFlBQVk7b0JBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQVMsRUFBRSxnREFBQyxPQUFBLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBLEdBQUEsQ0FBQyxDQUFDO29CQUNwRyxDQUFDLEVBQUUsQ0FBQztpQkFDTDtnQkFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxDQUFDLENBQUEsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXJCYSxvQ0FBTSxHQUFHO0lBQ3JCLE1BQU0sQ0FBQyxjQUFjO0NBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHtDb21wb25lbnQsIEhpc3RvcmljYWxSdW5TZXJ2aWNlfSBmcm9tICcuLi9jb21tb24vc2VydmljZS1pbnRlcmZhY2VzJztcbmltcG9ydCB7dG9rZW5zfSBmcm9tICcuLi9jb21tb24vaW5qZWN0LXRva2Vucyc7XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0SGlzdG9yaWNhbFJ1bkNvbXBvbmVudCBpbXBsZW1lbnRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyByb290OiBIVE1MRWxlbWVudCA9IHVpLmRpdigpO1xuXG4gIHB1YmxpYyBzdGF0aWMgaW5qZWN0ID0gW1xuICAgIHRva2Vucy5oaXN0b3J5U2VydmljZSxcbiAgXSBhcyBjb25zdDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhpc3RvcmljYWxSdW5TZXJ2aWNlOiBIaXN0b3JpY2FsUnVuU2VydmljZSkge1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZW5kZXIoKTogdm9pZCB7XG4gICAgdGhpcy5yb290ID0gdWkuaWNvbkZBKCdoaXN0b3J5JywgKCkgPT4ge1xuICAgICAgdGhpcy5oaXN0b3JpY2FsUnVuU2VydmljZS5wdWxsUnVucygpLnRoZW4oYXN5bmMgKGhpc3RvcmljYWxSdW5zKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lbnUgPSBERy5NZW51LnBvcHVwKCk7XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBydW4gb2YgaGlzdG9yaWNhbFJ1bnMpIHtcbiAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICBtZW51Lml0ZW0oYCR7cnVuLmZ1bmMuZnJpZW5kbHlOYW1lfSDigJQgJHtpfWAsIGFzeW5jICgpID0+IHRoaXMuaGlzdG9yaWNhbFJ1blNlcnZpY2UubG9hZFJ1bihydW4uaWQpKTtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgbWVudS5zaG93KCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,14 @@
1
+ import * as DG from 'datagrok-api/dg';
2
+ import { Component, StateService } from '../common/service-interfaces';
3
+ export declare class DefaultInputPanelComponent implements Component {
4
+ private state;
5
+ private loadRunsButton;
6
+ root: HTMLElement;
7
+ /** All inputs that are bound to fields */
8
+ inputFields: Record<string, DG.InputBase>;
9
+ static inject: readonly ["stateService", "historyPanel"];
10
+ constructor(state: StateService, loadRunsButton: Component);
11
+ render(): void;
12
+ renderRunSection(call: DG.FuncCall): HTMLElement;
13
+ }
14
+ //# sourceMappingURL=input-panel-component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-panel-component.d.ts","sourceRoot":"","sources":["input-panel-component.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,SAAS,EAAE,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAGrE,qBAAa,0BAA2B,YAAW,SAAS;IAYxD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,cAAc;IAZjB,IAAI,EAAE,WAAW,CAAY;IAEpC,0CAA0C;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,CAAM;IAEtD,OAAc,MAAM,4CAGT;gBAGD,KAAK,EAAE,YAAY,EACnB,cAAc,EAAE,SAAS;IAKnC,MAAM;IAIN,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,WAAW;CAWjD"}
@@ -0,0 +1,40 @@
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
+ import { tokens } from '../common/inject-tokens';
12
+ export class DefaultInputPanelComponent {
13
+ constructor(state, loadRunsButton) {
14
+ this.state = state;
15
+ this.loadRunsButton = loadRunsButton;
16
+ this.root = ui.div();
17
+ /** All inputs that are bound to fields */
18
+ this.inputFields = {};
19
+ this.render();
20
+ }
21
+ render() {
22
+ this.root = ui.div([this.renderRunSection(this.state.lastCall)], 'ui-div');
23
+ }
24
+ renderRunSection(call) {
25
+ return ui.wait(() => __awaiter(this, void 0, void 0, function* () {
26
+ const runButton = ui.bigButton('Run', () => __awaiter(this, void 0, void 0, function* () {
27
+ yield this.state.run();
28
+ }));
29
+ const editor = ui.div([], 'ui-form');
30
+ const inputs = yield call.buildEditor(editor, { condensed: true });
31
+ editor.appendChild(ui.divH([ui.divV([this.loadRunsButton.root], { style: { 'justify-content': 'center' } }), runButton], { style: { 'justify-content': 'space-between' } }));
32
+ return ui.panel([editor]);
33
+ }));
34
+ }
35
+ }
36
+ DefaultInputPanelComponent.inject = [
37
+ tokens.stateService,
38
+ tokens.historyPanel,
39
+ ];
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGFuZWwtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW5wdXQtcGFuZWwtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHdEMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRS9DLE1BQU0sT0FBTywwQkFBMEI7SUFXckMsWUFDVSxLQUFtQixFQUNuQixjQUF5QjtRQUR6QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFXO1FBWjVCLFNBQUksR0FBZ0IsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXBDLDBDQUEwQztRQUNuQyxnQkFBVyxHQUFpQyxFQUFFLENBQUM7UUFXcEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBaUI7UUFDaEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQVMsRUFBRTtZQUN4QixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFTLEVBQUU7Z0JBQy9DLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN6QixDQUFDLENBQUEsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDckMsTUFBTSxNQUFNLEdBQW1CLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUNqRixNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFDLEtBQUssRUFBRSxFQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBQyxFQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFDLEtBQUssRUFBRSxFQUFDLGlCQUFpQixFQUFFLGVBQWUsRUFBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JLLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBMUJhLGlDQUFNLEdBQUc7SUFDckIsTUFBTSxDQUFDLFlBQVk7SUFDbkIsTUFBTSxDQUFDLFlBQVk7Q0FDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQge0NvbXBvbmVudCwgU3RhdGVTZXJ2aWNlfSBmcm9tICcuLi9jb21tb24vc2VydmljZS1pbnRlcmZhY2VzJztcbmltcG9ydCB7dG9rZW5zfSBmcm9tICcuLi9jb21tb24vaW5qZWN0LXRva2Vucyc7XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0SW5wdXRQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyByb290OiBIVE1MRWxlbWVudCA9IHVpLmRpdigpO1xuXG4gIC8qKiBBbGwgaW5wdXRzIHRoYXQgYXJlIGJvdW5kIHRvIGZpZWxkcyAqL1xuICBwdWJsaWMgaW5wdXRGaWVsZHM6IFJlY29yZDxzdHJpbmcsIERHLklucHV0QmFzZT4gPSB7fTtcblxuICBwdWJsaWMgc3RhdGljIGluamVjdCA9IFtcbiAgICB0b2tlbnMuc3RhdGVTZXJ2aWNlLFxuICAgIHRva2Vucy5oaXN0b3J5UGFuZWwsXG4gIF0gYXMgY29uc3Q7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdGF0ZTogU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9hZFJ1bnNCdXR0b246IENvbXBvbmVudCxcbiAgKSB7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICB0aGlzLnJvb3QgPSB1aS5kaXYoW3RoaXMucmVuZGVyUnVuU2VjdGlvbih0aGlzLnN0YXRlLmxhc3RDYWxsISldLCAndWktZGl2Jyk7XG4gIH1cblxuICByZW5kZXJSdW5TZWN0aW9uKGNhbGw6IERHLkZ1bmNDYWxsKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB1aS53YWl0KGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bkJ1dHRvbiA9IHVpLmJpZ0J1dHRvbignUnVuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLnN0YXRlLnJ1bigpO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBlZGl0b3IgPSB1aS5kaXYoW10sICd1aS1mb3JtJyk7XG4gICAgICBjb25zdCBpbnB1dHM6IERHLklucHV0QmFzZVtdID0gYXdhaXQgY2FsbC5idWlsZEVkaXRvcihlZGl0b3IsIHtjb25kZW5zZWQ6IHRydWV9KTtcbiAgICAgIGVkaXRvci5hcHBlbmRDaGlsZCh1aS5kaXZIKFt1aS5kaXZWKFt0aGlzLmxvYWRSdW5zQnV0dG9uLnJvb3RdLCB7c3R5bGU6IHsnanVzdGlmeS1jb250ZW50JzogJ2NlbnRlcid9fSksIHJ1bkJ1dHRvbl0sIHtzdHlsZTogeydqdXN0aWZ5LWNvbnRlbnQnOiAnc3BhY2UtYmV0d2Vlbid9fSkpO1xuICAgICAgcmV0dXJuIHVpLnBhbmVsKFtlZGl0b3JdKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,9 @@
1
+ import { Component, StateService } from '../common/service-interfaces';
2
+ export declare class DefaultOutputPanelComponent implements Component {
3
+ private state;
4
+ root: HTMLElement;
5
+ static inject: readonly ["stateService"];
6
+ constructor(state: StateService);
7
+ render(): void;
8
+ }
9
+ //# sourceMappingURL=output-panel-component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-panel-component.d.ts","sourceRoot":"","sources":["output-panel-component.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,SAAS,EAAE,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAGrE,qBAAa,2BAA4B,YAAW,SAAS;IAQzD,OAAO,CAAC,KAAK;IAPR,IAAI,EAAE,WAAW,CAAc;IAEtC,OAAc,MAAM,4BAET;gBAGD,KAAK,EAAE,YAAY;IAK7B,MAAM,IAAI,IAAI;CAWf"}
@@ -0,0 +1,23 @@
1
+ import * as ui from 'datagrok-api/ui';
2
+ import { tokens } from '../common/inject-tokens';
3
+ export class DefaultOutputPanelComponent {
4
+ constructor(state) {
5
+ this.state = state;
6
+ this.root = ui.div([]);
7
+ this.state.onComputationCompleted.subscribe(() => this.render());
8
+ }
9
+ render() {
10
+ var _a;
11
+ const outputs = (_a = this.state.lastCall) === null || _a === void 0 ? void 0 : _a.outputs;
12
+ console.log(Object.entries(outputs));
13
+ const panel = ui.accordion('Output data');
14
+ panel.addPane('Output data', () => {
15
+ return ui.divV(Object.entries(outputs).map(([key, val]) => ui.span([`${key}: `, `${val}`])));
16
+ });
17
+ this.root.replaceWith(panel.root);
18
+ }
19
+ }
20
+ DefaultOutputPanelComponent.inject = [
21
+ tokens.stateService,
22
+ ];
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0LXBhbmVsLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm91dHB1dC1wYW5lbC1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd0QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFL0MsTUFBTSxPQUFPLDJCQUEyQjtJQU90QyxZQUNVLEtBQW1CO1FBQW5CLFVBQUssR0FBTCxLQUFLLENBQWM7UUFQdEIsU0FBSSxHQUFnQixFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBU3BDLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxNQUFNOztRQUNKLE1BQU0sT0FBTyxHQUFHLE1BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLDBDQUFFLE9BQThCLENBQUM7UUFDcEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDckMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7WUFDaEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUNaLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzdFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDOztBQXBCYSxrQ0FBTSxHQUFHO0lBQ3JCLE1BQU0sQ0FBQyxZQUFZO0NBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHtDb21wb25lbnQsIFN0YXRlU2VydmljZX0gZnJvbSAnLi4vY29tbW9uL3NlcnZpY2UtaW50ZXJmYWNlcyc7XG5pbXBvcnQge3Rva2Vuc30gZnJvbSAnLi4vY29tbW9uL2luamVjdC10b2tlbnMnO1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdE91dHB1dFBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgQ29tcG9uZW50IHtcbiAgcHVibGljIHJvb3Q6IEhUTUxFbGVtZW50ID0gdWkuZGl2KFtdKTtcblxuICBwdWJsaWMgc3RhdGljIGluamVjdCA9IFtcbiAgICB0b2tlbnMuc3RhdGVTZXJ2aWNlLFxuICBdIGFzIGNvbnN0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RhdGU6IFN0YXRlU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5zdGF0ZS5vbkNvbXB1dGF0aW9uQ29tcGxldGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlbmRlcigpKTtcbiAgfVxuXG4gIHJlbmRlcigpOiB2b2lkIHtcbiAgICBjb25zdCBvdXRwdXRzID0gdGhpcy5zdGF0ZS5sYXN0Q2FsbD8ub3V0cHV0cyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNvbnNvbGUubG9nKE9iamVjdC5lbnRyaWVzKG91dHB1dHMpKTtcbiAgICBjb25zdCBwYW5lbCA9IHVpLmFjY29yZGlvbignT3V0cHV0IGRhdGEnKTtcbiAgICBwYW5lbC5hZGRQYW5lKCdPdXRwdXQgZGF0YScsICgpID0+IHtcbiAgICAgIHJldHVybiB1aS5kaXZWKFxuICAgICAgICBPYmplY3QuZW50cmllcyhvdXRwdXRzKS5tYXAoKFtrZXksIHZhbF0pID0+IHVpLnNwYW4oW2Ake2tleX06IGAsIGAke3ZhbH1gXSkpLFxuICAgICAgKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvb3QucmVwbGFjZVdpdGgocGFuZWwucm9vdCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { ExportService, StateService } from '../common/service-interfaces';
2
+ export declare class DefaultExportService implements ExportService {
3
+ private state;
4
+ static inject: readonly ["stateService"];
5
+ constructor(state: StateService);
6
+ filename(format: string): string;
7
+ /** Override to provide supported export formats.
8
+ * These formats are available under the "Export" popup on the ribbon panel. */
9
+ get supportedExportFormats(): string[];
10
+ /** Override to provide custom file extensions for exported formats.
11
+ * These formats are available under the "Export" popup on the ribbon panel. */
12
+ get supportedExportExtensions(): Record<string, string>;
13
+ /** Override to provide custom export. */
14
+ export(format: string): Promise<Blob>;
15
+ }
16
+ //# sourceMappingURL=export-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-service.d.ts","sourceRoot":"","sources":["export-service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAyCzE,qBAAa,oBAAqB,YAAW,aAAa;IAMtD,OAAO,CAAC,KAAK;IALf,OAAc,MAAM,4BAET;gBAGD,KAAK,EAAE,YAAY;IAG7B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIhC;mFAC+E;IAC/E,IAAI,sBAAsB,IAAI,MAAM,EAAE,CAIrC;IAED;mFAC+E;IAC/E,IAAI,yBAAyB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAItD;IAED,yCAAyC;IACnC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA0D5C"}
@@ -0,0 +1,116 @@
1
+ /* eslint-disable valid-jsdoc */
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ import * as DG from 'datagrok-api/dg';
12
+ import ExcelJS from 'exceljs';
13
+ import { tokens } from '../common/inject-tokens';
14
+ const getSheetName = (name, direction) => {
15
+ const idealName = `${direction} - ${name}`;
16
+ return (idealName.length > 31) ? name.substring(0, 32) : idealName;
17
+ };
18
+ var DIRECTION;
19
+ (function (DIRECTION) {
20
+ DIRECTION["INPUT"] = "Input";
21
+ DIRECTION["OUTPUT"] = "Output";
22
+ })(DIRECTION || (DIRECTION = {}));
23
+ const scalarsToSheet = (sheet, scalars) => {
24
+ sheet.addRow(['Parameter', 'Value', 'Units']).font = { bold: true };
25
+ scalars.forEach((scalar) => {
26
+ sheet.addRow([scalar.caption, scalar.value, scalar.units]);
27
+ });
28
+ sheet.getColumn(1).width = Math.max(...scalars.map((scalar) => scalar.caption.toString().length), 'Parameter'.length) * 1.2;
29
+ sheet.getColumn(2).width = Math.max(...scalars.map((scalar) => scalar.value.toString().length), 'Value'.length) * 1.2;
30
+ sheet.getColumn(3).width = Math.max(...scalars.map((scalar) => scalar.units.toString().length), 'Units'.length) * 1.2;
31
+ };
32
+ const dfToSheet = (sheet, df) => {
33
+ sheet.addRow(df.columns.names()).font = { bold: true };
34
+ for (let i = 0; i < df.rowCount; i++)
35
+ sheet.addRow([...df.row(i).cells].map((cell) => cell.value));
36
+ for (let i = 0; i < df.columns.length; i++) {
37
+ sheet.getColumn(i + 1).width =
38
+ Math.max(...df.columns.byIndex(i).categories.map((category) => category.toString().length), df.columns.byIndex(i).name.length) * 1.2;
39
+ }
40
+ };
41
+ export class DefaultExportService {
42
+ constructor(state) {
43
+ this.state = state;
44
+ }
45
+ filename(format) {
46
+ return `${this.state.name} - ${new Date().toLocaleString()}.${this.supportedExportExtensions[format]}`;
47
+ }
48
+ /** Override to provide supported export formats.
49
+ * These formats are available under the "Export" popup on the ribbon panel. */
50
+ get supportedExportFormats() {
51
+ return [
52
+ 'Excel',
53
+ ];
54
+ }
55
+ /** Override to provide custom file extensions for exported formats.
56
+ * These formats are available under the "Export" popup on the ribbon panel. */
57
+ get supportedExportExtensions() {
58
+ return {
59
+ 'Excel': 'xlsx',
60
+ };
61
+ }
62
+ /** Override to provide custom export. */
63
+ export(format) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ if (!this.state.func)
66
+ throw new Error(`No function is associated with view`);
67
+ const lastCall = this.state.lastCall;
68
+ if (!lastCall)
69
+ throw new Error(`Function was not called`);
70
+ if (format !== 'Excel')
71
+ throw new Error(`Format "${format}" is not supported.`);
72
+ const BLOB_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
73
+ const exportWorkbook = new ExcelJS.Workbook();
74
+ const isScalarType = (type) => (DG.TYPES_SCALAR.has(type));
75
+ const isDataFrame = (type) => (type === DG.TYPE.DATA_FRAME);
76
+ const dfInputs = this.state.func.inputs.filter((input) => isDataFrame(input.propertyType));
77
+ const scalarInputs = this.state.func.inputs.filter((input) => isScalarType(input.propertyType));
78
+ const dfOutputs = this.state.func.outputs.filter((output) => isDataFrame(output.propertyType));
79
+ const scalarOutputs = this.state.func.outputs.filter((output) => isScalarType(output.propertyType));
80
+ dfInputs.forEach((dfInput) => {
81
+ const visibleTitle = dfInput.options.caption || dfInput.name;
82
+ const currentDfSheet = exportWorkbook.addWorksheet(getSheetName(visibleTitle, DIRECTION.INPUT));
83
+ const currentDf = lastCall.inputs[dfInput.name];
84
+ dfToSheet(currentDfSheet, currentDf);
85
+ });
86
+ if (scalarInputs.length) {
87
+ const inputScalarsSheet = exportWorkbook.addWorksheet('Input scalars');
88
+ scalarsToSheet(inputScalarsSheet, scalarInputs.map((scalarInput) => ({
89
+ caption: scalarInput.options['caption'] || scalarInput.name,
90
+ value: lastCall.inputs[scalarInput.name],
91
+ units: scalarInput.options['units'] || '',
92
+ })));
93
+ }
94
+ dfOutputs.forEach((dfOutput) => {
95
+ const visibleTitle = dfOutput.options.caption || dfOutput.name;
96
+ const currentDfSheet = exportWorkbook.addWorksheet(getSheetName(visibleTitle, DIRECTION.OUTPUT));
97
+ const currentDf = lastCall.outputs[dfOutput.name];
98
+ dfToSheet(currentDfSheet, currentDf);
99
+ });
100
+ if (scalarOutputs.length) {
101
+ const outputScalarsSheet = exportWorkbook.addWorksheet('Output scalars');
102
+ scalarsToSheet(outputScalarsSheet, scalarOutputs.map((scalarOutput) => ({
103
+ caption: scalarOutput.options['caption'] || scalarOutput.name,
104
+ value: lastCall.outputs[scalarOutput.name],
105
+ units: scalarOutput.options['units'] || '',
106
+ })));
107
+ }
108
+ const buffer = yield exportWorkbook.xlsx.writeBuffer();
109
+ return new Blob([buffer], { type: BLOB_TYPE });
110
+ });
111
+ }
112
+ }
113
+ DefaultExportService.inject = [
114
+ tokens.stateService,
115
+ ];
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleHBvcnQtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBZ0M7Ozs7Ozs7Ozs7QUFJaEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFFOUIsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRS9DLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBWSxFQUFFLFNBQW9CLEVBQUUsRUFBRTtJQUMxRCxNQUFNLFNBQVMsR0FBRyxHQUFHLFNBQVMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUMzQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNyRSxDQUFDLENBQUM7QUFFRixJQUFLLFNBR0o7QUFIRCxXQUFLLFNBQVM7SUFDWiw0QkFBZSxDQUFBO0lBQ2YsOEJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhJLFNBQVMsS0FBVCxTQUFTLFFBR2I7QUFFRCxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQXdCLEVBQUUsT0FBMEQsRUFBRSxFQUFFO0lBQzlHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ2xFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUN6QixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lB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QyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztLQUFBOztBQXRGYSwyQkFBTSxHQUFHO0lBQ3JCLE1BQU0sQ0FBQyxZQUFZO0NBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG5cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgRXhjZWxKUyBmcm9tICdleGNlbGpzJztcbmltcG9ydCB7RXhwb3J0U2VydmljZSwgU3RhdGVTZXJ2aWNlfSBmcm9tICcuLi9jb21tb24vc2VydmljZS1pbnRlcmZhY2VzJztcbmltcG9ydCB7dG9rZW5zfSBmcm9tICcuLi9jb21tb24vaW5qZWN0LXRva2Vucyc7XG5cbmNvbnN0IGdldFNoZWV0TmFtZSA9IChuYW1lOiBzdHJpbmcsIGRpcmVjdGlvbjogRElSRUNUSU9OKSA9PiB7XG4gIGNvbnN0IGlkZWFsTmFtZSA9IGAke2RpcmVjdGlvbn0gLSAke25hbWV9YDtcbiAgcmV0dXJuIChpZGVhbE5hbWUubGVuZ3RoID4gMzEpID8gbmFtZS5zdWJzdHJpbmcoMCwgMzIpIDogaWRlYWxOYW1lO1xufTtcblxuZW51bSBESVJFQ1RJT04ge1xuICBJTlBVVCA9ICdJbnB1dCcsXG4gIE9VVFBVVCA9ICdPdXRwdXQnXG59XG5cbmNvbnN0IHNjYWxhcnNUb1NoZWV0ID0gKHNoZWV0OiBFeGNlbEpTLldvcmtzaGVldCwgc2NhbGFyczoge2NhcHRpb246IHN0cmluZywgdmFsdWU6IHN0cmluZywgdW5pdHM6IHN0cmluZ31bXSkgPT4ge1xuICBzaGVldC5hZGRSb3coWydQYXJhbWV0ZXInLCAnVmFsdWUnLCAnVW5pdHMnXSkuZm9udCA9IHtib2xkOiB0cnVlfTtcbiAgc2NhbGFycy5mb3JFYWNoKChzY2FsYXIpID0+IHtcbiAgICBzaGVldC5hZGRSb3coW3NjYWxhci5jYXB0aW9uLCBzY2FsYXIudmFsdWUsIHNjYWxhci51bml0c10pO1xuICB9KTtcblxuICBzaGVldC5nZXRDb2x1bW4oMSkud2lkdGggPSBNYXRoLm1heChcbiAgICAuLi5zY2FsYXJzLm1hcCgoc2NhbGFyKSA9PiBzY2FsYXIuY2FwdGlvbi50b1N0cmluZygpLmxlbmd0aCksICdQYXJhbWV0ZXInLmxlbmd0aCxcbiAgKSAqIDEuMjtcbiAgc2hlZXQuZ2V0Q29sdW1uKDIpLndpZHRoID0gTWF0aC5tYXgoLi4uc2NhbGFycy5tYXAoKHNjYWxhcikgPT4gc2NhbGFyLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoKSwgJ1ZhbHVlJy5sZW5ndGgpICogMS4yO1xuICBzaGVldC5nZXRDb2x1bW4oMykud2lkdGggPSBNYXRoLm1heCguLi5zY2FsYXJzLm1hcCgoc2NhbGFyKSA9PiBzY2FsYXIudW5pdHMudG9TdHJpbmcoKS5sZW5ndGgpLCAnVW5pdHMnLmxlbmd0aCkgKiAxLjI7XG59O1xuXG5jb25zdCBkZlRvU2hlZXQgPSAoc2hlZXQ6IEV4Y2VsSlMuV29ya3NoZWV0LCBkZjogREcuRGF0YUZyYW1lKSA9PiB7XG4gIHNoZWV0LmFkZFJvdygoZGYuY29sdW1ucyBhcyBERy5Db2x1bW5MaXN0KS5uYW1lcygpKS5mb250ID0ge2JvbGQ6IHRydWV9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRmLnJvd0NvdW50OyBpKyspXG4gICAgc2hlZXQuYWRkUm93KFsuLi5kZi5yb3coaSkuY2VsbHNdLm1hcCgoY2VsbDogREcuQ2VsbCkgPT4gY2VsbC52YWx1ZSkpO1xuXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZi5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgc2hlZXQuZ2V0Q29sdW1uKGkrMSkud2lkdGggPVxuICAgICAgTWF0aC5tYXgoXG4gICAgICAgIC4uLihkZi5jb2x1bW5zIGFzIERHLkNvbHVtbkxpc3QpLmJ5SW5kZXgoaSkuY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5KSA9PiBjYXRlZ29yeS50b1N0cmluZygpLmxlbmd0aCksXG4gICAgICAgIChkZi5jb2x1bW5zIGFzIERHLkNvbHVtbkxpc3QpLmJ5SW5kZXgoaSkubmFtZS5sZW5ndGgsXG4gICAgICApICogMS4yO1xuICB9XG59O1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdEV4cG9ydFNlcnZpY2UgaW1wbGVtZW50cyBFeHBvcnRTZXJ2aWNlIHtcbiAgcHVibGljIHN0YXRpYyBpbmplY3QgPSBbXG4gICAgdG9rZW5zLnN0YXRlU2VydmljZSxcbiAgXSBhcyBjb25zdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0YXRlOiBTdGF0ZVNlcnZpY2UsXG4gICkge31cblxuICBmaWxlbmFtZShmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3RhdGUubmFtZX0gLSAke25ldyBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoKX0uJHt0aGlzLnN1cHBvcnRlZEV4cG9ydEV4dGVuc2lvbnNbZm9ybWF0XX1gO1xuICB9XG5cbiAgLyoqIE92ZXJyaWRlIHRvIHByb3ZpZGUgc3VwcG9ydGVkIGV4cG9ydCBmb3JtYXRzLlxuICAgKiBUaGVzZSBmb3JtYXRzIGFyZSBhdmFpbGFibGUgdW5kZXIgdGhlIFwiRXhwb3J0XCIgcG9wdXAgb24gdGhlIHJpYmJvbiBwYW5lbC4gKi9cbiAgZ2V0IHN1cHBvcnRlZEV4cG9ydEZvcm1hdHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnRXhjZWwnLFxuICAgIF07XG4gIH1cblxuICAvKiogT3ZlcnJpZGUgdG8gcHJvdmlkZSBjdXN0b20gZmlsZSBleHRlbnNpb25zIGZvciBleHBvcnRlZCBmb3JtYXRzLlxuICAgKiBUaGVzZSBmb3JtYXRzIGFyZSBhdmFpbGFibGUgdW5kZXIgdGhlIFwiRXhwb3J0XCIgcG9wdXAgb24gdGhlIHJpYmJvbiBwYW5lbC4gKi9cbiAgZ2V0IHN1cHBvcnRlZEV4cG9ydEV4dGVuc2lvbnMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdFeGNlbCc6ICd4bHN4JyxcbiAgICB9O1xuICB9XG5cbiAgLyoqIE92ZXJyaWRlIHRvIHByb3ZpZGUgY3VzdG9tIGV4cG9ydC4gKi9cbiAgYXN5bmMgZXhwb3J0KGZvcm1hdDogc3RyaW5nKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLmZ1bmMpIHRocm93IG5ldyBFcnJvcihgTm8gZnVuY3Rpb24gaXMgYXNzb2NpYXRlZCB3aXRoIHZpZXdgKTtcblxuICAgIGNvbnN0IGxhc3RDYWxsID0gdGhpcy5zdGF0ZS5sYXN0Q2FsbDtcbiAgICBpZiAoIWxhc3RDYWxsKSB0aHJvdyBuZXcgRXJyb3IoYEZ1bmN0aW9uIHdhcyBub3QgY2FsbGVkYCk7XG5cbiAgICBpZiAoZm9ybWF0ICE9PSAnRXhjZWwnKSB0aHJvdyBuZXcgRXJyb3IoYEZvcm1hdCBcIiR7Zm9ybWF0fVwiIGlzIG5vdCBzdXBwb3J0ZWQuYCk7XG5cbiAgICBjb25zdCBCTE9CX1RZUEUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD1VVEYtOCc7XG4gICAgY29uc3QgZXhwb3J0V29ya2Jvb2sgPSBuZXcgRXhjZWxKUy5Xb3JrYm9vaygpO1xuXG4gICAgY29uc3QgaXNTY2FsYXJUeXBlID0gKHR5cGU6IERHLlRZUEUpID0+IChERy5UWVBFU19TQ0FMQVIuaGFzKHR5cGUpKTtcblxuICAgIGNvbnN0IGlzRGF0YUZyYW1lID0gKHR5cGU6IERHLlRZUEUpID0+ICh0eXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuXG4gICAgY29uc3QgZGZJbnB1dHMgPSB0aGlzLnN0YXRlLmZ1bmMuaW5wdXRzLmZpbHRlcigoaW5wdXQpID0+IGlzRGF0YUZyYW1lKGlucHV0LnByb3BlcnR5VHlwZSkpO1xuICAgIGNvbnN0IHNjYWxhcklucHV0cyA9IHRoaXMuc3RhdGUuZnVuYy5pbnB1dHMuZmlsdGVyKChpbnB1dCkgPT4gaXNTY2FsYXJUeXBlKGlucHV0LnByb3BlcnR5VHlwZSkpO1xuICAgIGNvbnN0IGRmT3V0cHV0cyA9IHRoaXMuc3RhdGUuZnVuYy5vdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBpc0RhdGFGcmFtZShvdXRwdXQucHJvcGVydHlUeXBlKSk7XG4gICAgY29uc3Qgc2NhbGFyT3V0cHV0cyA9IHRoaXMuc3RhdGUuZnVuYy5vdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBpc1NjYWxhclR5cGUob3V0cHV0LnByb3BlcnR5VHlwZSkpO1xuXG4gICAgZGZJbnB1dHMuZm9yRWFjaCgoZGZJbnB1dCkgPT4ge1xuICAgICAgY29uc3QgdmlzaWJsZVRpdGxlID0gZGZJbnB1dC5vcHRpb25zLmNhcHRpb24gfHwgZGZJbnB1dC5uYW1lO1xuICAgICAgY29uc3QgY3VycmVudERmU2hlZXQgPSBleHBvcnRXb3JrYm9vay5hZGRXb3Jrc2hlZXQoZ2V0U2hlZXROYW1lKHZpc2libGVUaXRsZSwgRElSRUNUSU9OLklOUFVUKSk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnREZiA9IChsYXN0Q2FsbC5pbnB1dHNbZGZJbnB1dC5uYW1lXSBhcyBERy5EYXRhRnJhbWUpO1xuICAgICAgZGZUb1NoZWV0KGN1cnJlbnREZlNoZWV0LCBjdXJyZW50RGYpO1xuICAgIH0pO1xuXG4gICAgaWYgKHNjYWxhcklucHV0cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGlucHV0U2NhbGFyc1NoZWV0ID0gZXhwb3J0V29ya2Jvb2suYWRkV29ya3NoZWV0KCdJbnB1dCBzY2FsYXJzJyk7XG4gICAgICBzY2FsYXJzVG9TaGVldChpbnB1dFNjYWxhcnNTaGVldCwgc2NhbGFySW5wdXRzLm1hcCgoc2NhbGFySW5wdXQpID0+ICh7XG4gICAgICAgIGNhcHRpb246IHNjYWxhcklucHV0Lm9wdGlvbnNbJ2NhcHRpb24nXSB8fCBzY2FsYXJJbnB1dC5uYW1lLFxuICAgICAgICB2YWx1ZTogbGFzdENhbGwuaW5wdXRzW3NjYWxhcklucHV0Lm5hbWVdLFxuICAgICAgICB1bml0czogc2NhbGFySW5wdXQub3B0aW9uc1sndW5pdHMnXSB8fCAnJyxcbiAgICAgIH0pKSk7XG4gICAgfVxuXG4gICAgZGZPdXRwdXRzLmZvckVhY2goKGRmT3V0cHV0KSA9PiB7XG4gICAgICBjb25zdCB2aXNpYmxlVGl0bGUgPSBkZk91dHB1dC5vcHRpb25zLmNhcHRpb24gfHwgZGZPdXRwdXQubmFtZTtcbiAgICAgIGNvbnN0IGN1cnJlbnREZlNoZWV0ID0gZXhwb3J0V29ya2Jvb2suYWRkV29ya3NoZWV0KGdldFNoZWV0TmFtZSh2aXNpYmxlVGl0bGUsIERJUkVDVElPTi5PVVRQVVQpKTtcblxuICAgICAgY29uc3QgY3VycmVudERmID0gKGxhc3RDYWxsLm91dHB1dHNbZGZPdXRwdXQubmFtZV0gYXMgREcuRGF0YUZyYW1lKTtcbiAgICAgIGRmVG9TaGVldChjdXJyZW50RGZTaGVldCwgY3VycmVudERmKTtcbiAgICB9KTtcblxuICAgIGlmIChzY2FsYXJPdXRwdXRzLmxlbmd0aCkge1xuICAgICAgY29uc3Qgb3V0cHV0U2NhbGFyc1NoZWV0ID0gZXhwb3J0V29ya2Jvb2suYWRkV29ya3NoZWV0KCdPdXRwdXQgc2NhbGFycycpO1xuICAgICAgc2NhbGFyc1RvU2hlZXQob3V0cHV0U2NhbGFyc1NoZWV0LCBzY2FsYXJPdXRwdXRzLm1hcCgoc2NhbGFyT3V0cHV0KSA9PiAoe1xuICAgICAgICBjYXB0aW9uOiBzY2FsYXJPdXRwdXQub3B0aW9uc1snY2FwdGlvbiddIHx8IHNjYWxhck91dHB1dC5uYW1lLFxuICAgICAgICB2YWx1ZTogbGFzdENhbGwub3V0cHV0c1tzY2FsYXJPdXRwdXQubmFtZV0sXG4gICAgICAgIHVuaXRzOiBzY2FsYXJPdXRwdXQub3B0aW9uc1sndW5pdHMnXSB8fCAnJyxcbiAgICAgIH0pKSk7XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgZXhwb3J0V29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpO1xuXG4gICAgcmV0dXJuIG5ldyBCbG9iKFtidWZmZXJdLCB7dHlwZTogQkxPQl9UWVBFfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ import * as DG from 'datagrok-api/dg';
2
+ import { HistoricalRunService } from '../common/service-interfaces';
3
+ export declare class DefaultHistoricalRunService implements HistoricalRunService {
4
+ saveRun(call: DG.FuncCall): Promise<string>;
5
+ loadRun(runId: string): Promise<DG.FuncCall>;
6
+ pullRuns(): Promise<DG.FuncCall[]>;
7
+ }
8
+ //# sourceMappingURL=historical-run-service.d.ts.map