@memberjunction/ng-task-graph-editor 6.1.0-edge.2 → 6.1.0-edge.4
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/LICENSE +180 -4
- package/README.md +197 -0
- package/dist/lib/debug-variables.d.ts +27 -0
- package/dist/lib/debug-variables.d.ts.map +1 -0
- package/dist/lib/debug-variables.js +96 -0
- package/dist/lib/debug-variables.js.map +1 -0
- package/dist/lib/pane-split.d.ts +11 -0
- package/dist/lib/pane-split.d.ts.map +1 -0
- package/dist/lib/pane-split.js +36 -0
- package/dist/lib/pane-split.js.map +1 -0
- package/dist/lib/task-graph-canvas-adapter.d.ts +41 -3
- package/dist/lib/task-graph-canvas-adapter.d.ts.map +1 -1
- package/dist/lib/task-graph-canvas-adapter.js +175 -36
- package/dist/lib/task-graph-canvas-adapter.js.map +1 -1
- package/dist/lib/task-graph-debug-toolbar.component.d.ts +27 -0
- package/dist/lib/task-graph-debug-toolbar.component.d.ts.map +1 -0
- package/dist/lib/task-graph-debug-toolbar.component.js +153 -0
- package/dist/lib/task-graph-debug-toolbar.component.js.map +1 -0
- package/dist/lib/task-graph-debugger.component.d.ts +96 -0
- package/dist/lib/task-graph-debugger.component.d.ts.map +1 -0
- package/dist/lib/task-graph-debugger.component.js +371 -0
- package/dist/lib/task-graph-debugger.component.js.map +1 -0
- package/dist/lib/task-graph-editor.component.d.ts +40 -3
- package/dist/lib/task-graph-editor.component.d.ts.map +1 -1
- package/dist/lib/task-graph-editor.component.js +83 -10
- package/dist/lib/task-graph-editor.component.js.map +1 -1
- package/dist/lib/task-graph-editor.module.d.ts +9 -5
- package/dist/lib/task-graph-editor.module.d.ts.map +1 -1
- package/dist/lib/task-graph-editor.module.js +52 -5
- package/dist/lib/task-graph-editor.module.js.map +1 -1
- package/dist/lib/task-graph-run-prefs.d.ts +34 -0
- package/dist/lib/task-graph-run-prefs.d.ts.map +1 -0
- package/dist/lib/task-graph-run-prefs.js +67 -0
- package/dist/lib/task-graph-run-prefs.js.map +1 -0
- package/dist/lib/task-graph-run-view.component.d.ts +180 -3
- package/dist/lib/task-graph-run-view.component.d.ts.map +1 -1
- package/dist/lib/task-graph-run-view.component.js +560 -23
- package/dist/lib/task-graph-run-view.component.js.map +1 -1
- package/dist/lib/task-graph-runtime-source.d.ts +7 -1
- package/dist/lib/task-graph-runtime-source.d.ts.map +1 -1
- package/dist/lib/task-graph-runtime-source.js +14 -2
- package/dist/lib/task-graph-runtime-source.js.map +1 -1
- package/dist/lib/task-graph-variables.component.d.ts +23 -0
- package/dist/lib/task-graph-variables.component.d.ts.map +1 -0
- package/dist/lib/task-graph-variables.component.js +192 -0
- package/dist/lib/task-graph-variables.component.js.map +1 -0
- package/dist/lib/workflow-debug-host.d.ts +23 -0
- package/dist/lib/workflow-debug-host.d.ts.map +1 -0
- package/dist/lib/workflow-debug-host.js +101 -0
- package/dist/lib/workflow-debug-host.js.map +1 -0
- package/dist/public-api.d.ts +7 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +7 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +11 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-graph-editor.module.js","sourceRoot":"","sources":["../../src/lib/task-graph-editor.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"task-graph-editor.module.js","sourceRoot":"","sources":["../../src/lib/task-graph-editor.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;;AA6B7E,MAAM,OAAO,qBAAqB;+GAArB,qBAAqB;4DAArB,qBAAqB;gEAnB9B,YAAY;YACZ,WAAW;YACX,gBAAgB;YAChB,qBAAqB;YACrB,gBAAgB;YAEhB,kBAAkB;;iFAaT,qBAAqB;cA3BjC,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,wBAAwB;oBACxB,iCAAiC;oBACjC,yBAAyB;oBACzB,0BAA0B;iBAC3B;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,gBAAgB;oBAChB,qBAAqB;oBACrB,gBAAgB;oBAChB,iBAAiB;oBACjB,kBAAkB;oBAClB,8BAA8B;oBAC9B,2BAA2B;iBAC5B;gBACD,OAAO,EAAE;oBACP,wBAAwB;oBACxB,iCAAiC;oBACjC,yBAAyB;oBACzB,8BAA8B;oBAC9B,2BAA2B;oBAC3B,0BAA0B;iBAC3B;aACF;;wFACY,qBAAqB,mBAzB9B,wBAAwB;QACxB,iCAAiC;QACjC,yBAAyB;QACzB,0BAA0B,aAG1B,YAAY;QACZ,WAAW;QACX,gBAAgB;QAChB,qBAAqB;QACrB,gBAAgB;QAChB,iBAAiB;QACjB,kBAAkB;QAClB,8BAA8B;QAC9B,2BAA2B,aAG3B,wBAAwB;QACxB,iCAAiC;QACjC,yBAAyB;QACzB,8BAA8B;QAC9B,2BAA2B;QAC3B,0BAA0B","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FlowEditorModule } from '@memberjunction/ng-flow-editor';\nimport { MJEmptyStateComponent, MJAlertComponent, MJButtonDirective } from '@memberjunction/ng-ui-components';\nimport { AngularSplitModule } from 'angular-split';\n\nimport { TaskGraphEditorComponent } from './task-graph-editor.component';\nimport { TaskGraphPropertiesPanelComponent } from './task-graph-properties-panel.component';\nimport { TaskGraphRunViewComponent } from './task-graph-run-view.component';\nimport { TaskGraphDebugToolbarComponent } from './task-graph-debug-toolbar.component';\nimport { TaskGraphVariablesComponent } from './task-graph-variables.component';\nimport { TaskGraphDebuggerComponent } from './task-graph-debugger.component';\n\n@NgModule({\n declarations: [\n TaskGraphEditorComponent,\n TaskGraphPropertiesPanelComponent,\n TaskGraphRunViewComponent,\n TaskGraphDebuggerComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n FlowEditorModule,\n MJEmptyStateComponent,\n MJAlertComponent,\n MJButtonDirective,\n AngularSplitModule,\n TaskGraphDebugToolbarComponent,\n TaskGraphVariablesComponent,\n ],\n exports: [\n TaskGraphEditorComponent,\n TaskGraphPropertiesPanelComponent,\n TaskGraphRunViewComponent,\n TaskGraphDebugToolbarComponent,\n TaskGraphVariablesComponent,\n TaskGraphDebuggerComponent,\n ],\n})\nexport class TaskGraphEditorModule {}\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One persisted bag for the run-view chrome the person can resize.
|
|
3
|
+
*
|
|
4
|
+
* A single `MJ: User Settings` key holds a JSON object so adding a field later is a merge, not a
|
|
5
|
+
* new key — and every field is typed. Size and openness stay separate properties on purpose:
|
|
6
|
+
* minimizing the data pane and opening it again must restore the width they dragged to.
|
|
7
|
+
*/
|
|
8
|
+
import { type PaneSizePair } from './pane-split';
|
|
9
|
+
export declare const TASK_GRAPH_RUN_PREFS_KEY = "mj.taskGraphRun.prefs.v1";
|
|
10
|
+
export interface TaskGraphRunPrefs {
|
|
11
|
+
/** Left invocation / output pane is expanded. Default minimized. */
|
|
12
|
+
InvocationOpen: boolean;
|
|
13
|
+
/** `[invocation, canvas]` percentages while the left pane is open. */
|
|
14
|
+
InvocationSplit: PaneSizePair;
|
|
15
|
+
}
|
|
16
|
+
export declare const DEFAULT_TASK_GRAPH_RUN_PREFS: TaskGraphRunPrefs;
|
|
17
|
+
export type TaskGraphRunPrefsSettingsPort = {
|
|
18
|
+
Get(key: string): string | undefined;
|
|
19
|
+
Set(key: string, value: string): void;
|
|
20
|
+
};
|
|
21
|
+
/** Merge a stored bag onto defaults. Unknown or partial JSON is never fatal. */
|
|
22
|
+
export declare function ParseTaskGraphRunPrefs(raw: string | undefined): TaskGraphRunPrefs;
|
|
23
|
+
export declare function SerializeTaskGraphRunPrefs(prefs: TaskGraphRunPrefs): string;
|
|
24
|
+
/** Restore / write the bag through a settings port so the rules can be unit-tested. */
|
|
25
|
+
export declare class TaskGraphRunPrefsStore {
|
|
26
|
+
private readonly settings;
|
|
27
|
+
Value: TaskGraphRunPrefs;
|
|
28
|
+
constructor(settings: TaskGraphRunPrefsSettingsPort);
|
|
29
|
+
Restore(): void;
|
|
30
|
+
SetInvocationOpen(open: boolean): void;
|
|
31
|
+
SetInvocationSplit(pair: PaneSizePair): void;
|
|
32
|
+
private persist;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=task-graph-run-prefs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-graph-run-prefs.d.ts","sourceRoot":"","sources":["../../src/lib/task-graph-run-prefs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjE,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAC9B,oEAAoE;IACpE,cAAc,EAAE,OAAO,CAAC;IACxB,sEAAsE;IACtE,eAAe,EAAE,YAAY,CAAC;CACjC;AAED,eAAO,MAAM,4BAA4B,EAAE,iBAG1C,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC,CAAC;AASF,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAgBjF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAE3E;AAED,uFAAuF;AACvF,qBAAa,sBAAsB;IAGnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAF9B,KAAK,EAAE,iBAAiB,CAAkB;gBAEpB,QAAQ,EAAE,6BAA6B;IAE7D,OAAO,IAAI,IAAI;IAIf,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAKtC,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKnD,OAAO,CAAC,OAAO;CAGlB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One persisted bag for the run-view chrome the person can resize.
|
|
3
|
+
*
|
|
4
|
+
* A single `MJ: User Settings` key holds a JSON object so adding a field later is a merge, not a
|
|
5
|
+
* new key — and every field is typed. Size and openness stay separate properties on purpose:
|
|
6
|
+
* minimizing the data pane and opening it again must restore the width they dragged to.
|
|
7
|
+
*/
|
|
8
|
+
import { AsPaneSizePair } from './pane-split';
|
|
9
|
+
export const TASK_GRAPH_RUN_PREFS_KEY = 'mj.taskGraphRun.prefs.v1';
|
|
10
|
+
export const DEFAULT_TASK_GRAPH_RUN_PREFS = {
|
|
11
|
+
InvocationOpen: false,
|
|
12
|
+
InvocationSplit: [22, 78],
|
|
13
|
+
};
|
|
14
|
+
function copyDefaults() {
|
|
15
|
+
return {
|
|
16
|
+
InvocationOpen: DEFAULT_TASK_GRAPH_RUN_PREFS.InvocationOpen,
|
|
17
|
+
InvocationSplit: [...DEFAULT_TASK_GRAPH_RUN_PREFS.InvocationSplit],
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/** Merge a stored bag onto defaults. Unknown or partial JSON is never fatal. */
|
|
21
|
+
export function ParseTaskGraphRunPrefs(raw) {
|
|
22
|
+
const next = copyDefaults();
|
|
23
|
+
if (!raw)
|
|
24
|
+
return next;
|
|
25
|
+
try {
|
|
26
|
+
const parsed = JSON.parse(raw);
|
|
27
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
28
|
+
return next;
|
|
29
|
+
const obj = parsed;
|
|
30
|
+
if (typeof obj['InvocationOpen'] === 'boolean') {
|
|
31
|
+
next.InvocationOpen = obj['InvocationOpen'];
|
|
32
|
+
}
|
|
33
|
+
const split = AsPaneSizePair(obj['InvocationSplit']);
|
|
34
|
+
if (split)
|
|
35
|
+
next.InvocationSplit = split;
|
|
36
|
+
return next;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return next;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function SerializeTaskGraphRunPrefs(prefs) {
|
|
43
|
+
return JSON.stringify(prefs);
|
|
44
|
+
}
|
|
45
|
+
/** Restore / write the bag through a settings port so the rules can be unit-tested. */
|
|
46
|
+
export class TaskGraphRunPrefsStore {
|
|
47
|
+
settings;
|
|
48
|
+
Value = copyDefaults();
|
|
49
|
+
constructor(settings) {
|
|
50
|
+
this.settings = settings;
|
|
51
|
+
}
|
|
52
|
+
Restore() {
|
|
53
|
+
this.Value = ParseTaskGraphRunPrefs(this.settings.Get(TASK_GRAPH_RUN_PREFS_KEY));
|
|
54
|
+
}
|
|
55
|
+
SetInvocationOpen(open) {
|
|
56
|
+
this.Value = { ...this.Value, InvocationOpen: open };
|
|
57
|
+
this.persist();
|
|
58
|
+
}
|
|
59
|
+
SetInvocationSplit(pair) {
|
|
60
|
+
this.Value = { ...this.Value, InvocationSplit: pair };
|
|
61
|
+
this.persist();
|
|
62
|
+
}
|
|
63
|
+
persist() {
|
|
64
|
+
this.settings.Set(TASK_GRAPH_RUN_PREFS_KEY, SerializeTaskGraphRunPrefs(this.Value));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=task-graph-run-prefs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-graph-run-prefs.js","sourceRoot":"","sources":["../../src/lib/task-graph-run-prefs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,cAAc,EAAqB,MAAM,cAAc,CAAC;AAEjE,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AASnE,MAAM,CAAC,MAAM,4BAA4B,GAAsB;IAC3D,cAAc,EAAE,KAAK;IACrB,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;CAC5B,CAAC;AAOF,SAAS,YAAY;IACjB,OAAO;QACH,cAAc,EAAE,4BAA4B,CAAC,cAAc;QAC3D,eAAe,EAAE,CAAC,GAAG,4BAA4B,CAAC,eAAe,CAAC;KACrE,CAAC;AACN,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,sBAAsB,CAAC,GAAuB;IAC1D,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAChF,MAAM,GAAG,GAAG,MAAiC,CAAC;QAC9C,IAAI,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACrD,IAAI,KAAK;YAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAwB;IAC/D,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,uFAAuF;AACvF,MAAM,OAAO,sBAAsB;IAGF;IAFtB,KAAK,GAAsB,YAAY,EAAE,CAAC;IAEjD,YAA6B,QAAuC;QAAvC,aAAQ,GAAR,QAAQ,CAA+B;IAAG,CAAC;IAEjE,OAAO;QACV,IAAI,CAAC,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACrF,CAAC;IAEM,iBAAiB,CAAC,IAAa;QAClC,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEM,kBAAkB,CAAC,IAAkB;QACxC,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,OAAO;QACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAwB,EAAE,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACxF,CAAC;CACJ","sourcesContent":["/**\n * One persisted bag for the run-view chrome the person can resize.\n *\n * A single `MJ: User Settings` key holds a JSON object so adding a field later is a merge, not a\n * new key — and every field is typed. Size and openness stay separate properties on purpose:\n * minimizing the data pane and opening it again must restore the width they dragged to.\n */\nimport { AsPaneSizePair, type PaneSizePair } from './pane-split';\n\nexport const TASK_GRAPH_RUN_PREFS_KEY = 'mj.taskGraphRun.prefs.v1';\n\nexport interface TaskGraphRunPrefs {\n /** Left invocation / output pane is expanded. Default minimized. */\n InvocationOpen: boolean;\n /** `[invocation, canvas]` percentages while the left pane is open. */\n InvocationSplit: PaneSizePair;\n}\n\nexport const DEFAULT_TASK_GRAPH_RUN_PREFS: TaskGraphRunPrefs = {\n InvocationOpen: false,\n InvocationSplit: [22, 78],\n};\n\nexport type TaskGraphRunPrefsSettingsPort = {\n Get(key: string): string | undefined;\n Set(key: string, value: string): void;\n};\n\nfunction copyDefaults(): TaskGraphRunPrefs {\n return {\n InvocationOpen: DEFAULT_TASK_GRAPH_RUN_PREFS.InvocationOpen,\n InvocationSplit: [...DEFAULT_TASK_GRAPH_RUN_PREFS.InvocationSplit],\n };\n}\n\n/** Merge a stored bag onto defaults. Unknown or partial JSON is never fatal. */\nexport function ParseTaskGraphRunPrefs(raw: string | undefined): TaskGraphRunPrefs {\n const next = copyDefaults();\n if (!raw) return next;\n try {\n const parsed: unknown = JSON.parse(raw);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return next;\n const obj = parsed as Record<string, unknown>;\n if (typeof obj['InvocationOpen'] === 'boolean') {\n next.InvocationOpen = obj['InvocationOpen'];\n }\n const split = AsPaneSizePair(obj['InvocationSplit']);\n if (split) next.InvocationSplit = split;\n return next;\n } catch {\n return next;\n }\n}\n\nexport function SerializeTaskGraphRunPrefs(prefs: TaskGraphRunPrefs): string {\n return JSON.stringify(prefs);\n}\n\n/** Restore / write the bag through a settings port so the rules can be unit-tested. */\nexport class TaskGraphRunPrefsStore {\n public Value: TaskGraphRunPrefs = copyDefaults();\n\n constructor(private readonly settings: TaskGraphRunPrefsSettingsPort) {}\n\n public Restore(): void {\n this.Value = ParseTaskGraphRunPrefs(this.settings.Get(TASK_GRAPH_RUN_PREFS_KEY));\n }\n\n public SetInvocationOpen(open: boolean): void {\n this.Value = { ...this.Value, InvocationOpen: open };\n this.persist();\n }\n\n public SetInvocationSplit(pair: PaneSizePair): void {\n this.Value = { ...this.Value, InvocationSplit: pair };\n this.persist();\n }\n\n private persist(): void {\n this.settings.Set(TASK_GRAPH_RUN_PREFS_KEY, SerializeTaskGraphRunPrefs(this.Value));\n }\n}\n"]}
|
|
@@ -19,9 +19,11 @@
|
|
|
19
19
|
import { ChangeDetectorRef, EventEmitter, OnDestroy } from '@angular/core';
|
|
20
20
|
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
21
21
|
import { MJTaskEntity } from '@memberjunction/core-entities';
|
|
22
|
+
import { type TaskGraphRunPrefs } from './task-graph-run-prefs';
|
|
22
23
|
import { type GraphNodePosition, type TaskGraphSpec } from '@memberjunction/ai-core-plus';
|
|
23
|
-
import type { TaskGraphRuntimeStatus } from './task-graph-canvas-adapter';
|
|
24
|
+
import type { TaskGraphDebugOverlay, TaskGraphRuntimeStatus } from './task-graph-canvas-adapter';
|
|
24
25
|
import type { TaskGraphSelectionChangedEventArgs } from './task-graph-editor-events';
|
|
26
|
+
import type { FlowAfterContextMenuActionEventArgs, FlowBeforeContextMenuEventArgs, FlowConnection, FlowToolbarAlign, FlowToolbarVisibility } from '@memberjunction/ng-flow-editor';
|
|
25
27
|
import * as i0 from "@angular/core";
|
|
26
28
|
/** What the host learns when someone clicks a step. */
|
|
27
29
|
export type TaskGraphRunNodeSelectedEvent = {
|
|
@@ -29,6 +31,41 @@ export type TaskGraphRunNodeSelectedEvent = {
|
|
|
29
31
|
TaskID: string;
|
|
30
32
|
Task: MJTaskEntity | null;
|
|
31
33
|
};
|
|
34
|
+
/** What the host learns when someone clicks a path. */
|
|
35
|
+
export type TaskGraphRunConnectionSelectedEvent = {
|
|
36
|
+
/** The `MJ: Task Dependencies` row id, when the projection carried one. */
|
|
37
|
+
EdgeID: string | null;
|
|
38
|
+
FromTaskID: string;
|
|
39
|
+
ToTaskID: string;
|
|
40
|
+
Condition?: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* One live dispatcher frame, as the HOST hands it in.
|
|
44
|
+
*
|
|
45
|
+
* Structural on purpose: the widget must not import the transport (`GraphQLDataProvider`'s
|
|
46
|
+
* `TaskGraphFrameEvent` satisfies this shape as-is), and the host owns the subscription — this
|
|
47
|
+
* component only renders what it is handed, which is the widgets-layer rule that keeps it embeddable
|
|
48
|
+
* anywhere. Fields beyond these are ignored, so a newer server cannot break an older widget.
|
|
49
|
+
*/
|
|
50
|
+
export type TaskGraphRunFrame = {
|
|
51
|
+
kind: string;
|
|
52
|
+
taskId?: string;
|
|
53
|
+
taskName?: string;
|
|
54
|
+
status?: string;
|
|
55
|
+
progressMessage?: string;
|
|
56
|
+
progressPercent?: number;
|
|
57
|
+
reason?: string;
|
|
58
|
+
edgeId?: string;
|
|
59
|
+
dependsOnTaskId?: string;
|
|
60
|
+
conditionText?: string;
|
|
61
|
+
claimEvent?: string;
|
|
62
|
+
claimedBy?: string;
|
|
63
|
+
verdict?: string;
|
|
64
|
+
passNumber?: number;
|
|
65
|
+
eligibleCount?: number;
|
|
66
|
+
heldCount?: number;
|
|
67
|
+
claimedCount?: number;
|
|
68
|
+
};
|
|
32
69
|
export declare class TaskGraphRunViewComponent extends BaseAngularComponent implements OnDestroy {
|
|
33
70
|
private cdr;
|
|
34
71
|
/**
|
|
@@ -52,9 +89,110 @@ export declare class TaskGraphRunViewComponent extends BaseAngularComponent impl
|
|
|
52
89
|
PollIntervalSeconds: number;
|
|
53
90
|
/** Height of the canvas. Hosts embed this in very different amounts of space. */
|
|
54
91
|
Height: string;
|
|
92
|
+
/**
|
|
93
|
+
* Whether the canvas legend shows. **Off by default here**, unlike the editor.
|
|
94
|
+
*
|
|
95
|
+
* The legend explains the authoring vocabulary — what a conditional edge means, what a duplicate
|
|
96
|
+
* default looks like. That is what someone drawing a graph needs. A run view answers a different
|
|
97
|
+
* question, "what happened", which the legend helps with not at all while covering a corner of
|
|
98
|
+
* the canvas the graph is usually occupying.
|
|
99
|
+
*/
|
|
100
|
+
ShowLegend: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Whether the canvas toolbar rides above the graph.
|
|
103
|
+
*
|
|
104
|
+
* Debug and other run hosts leave this on and set `ToolbarVisibility` to `minimized` so the
|
|
105
|
+
* graph is the picture, not a floating tool strip. The chip in the corner restores the bar.
|
|
106
|
+
*/
|
|
107
|
+
ShowToolbar: boolean;
|
|
108
|
+
ToolbarVisibility: FlowToolbarVisibility;
|
|
109
|
+
ToolbarAlign: FlowToolbarAlign;
|
|
110
|
+
/**
|
|
111
|
+
* The latest live dispatcher frame, handed in by the host.
|
|
112
|
+
*
|
|
113
|
+
* The host owns the subscription (`GraphQLDataProvider.TaskGraphFrames` or anything shaped like
|
|
114
|
+
* it) and binds each arrival here; the widget folds it into the overlay. Frames are advisory —
|
|
115
|
+
* a task frame patches the node's status in place for sub-second feedback, and the frames that
|
|
116
|
+
* imply CASCADES (a skip, a block, settlement) trigger a debounced row reload, because the
|
|
117
|
+
* dispatcher's propagation writes rows this component cannot infer from one frame. Rows remain
|
|
118
|
+
* the truth; the existing poll (if enabled) remains the safety net.
|
|
119
|
+
*/
|
|
120
|
+
set LiveFrame(frame: TaskGraphRunFrame | null);
|
|
121
|
+
/**
|
|
122
|
+
* Replay: render the run as it stood at this moment, reconstructed from each step's
|
|
123
|
+
* `StartedAt`/`CompletedAt`. Null (the default) renders the present. A step that had not
|
|
124
|
+
* started reads Pending; one mid-flight reads In Progress; one already finished reads its
|
|
125
|
+
* final status — the same three answers the rows would have given a viewer at that time.
|
|
126
|
+
*/
|
|
127
|
+
set ReplayAt(value: Date | null);
|
|
128
|
+
get ReplayAt(): Date | null;
|
|
129
|
+
/**
|
|
130
|
+
* Armed breakpoint task IDs, from the parent row's `$.debug.breakpoints`. Empty by default so
|
|
131
|
+
* embeds (agent-run timeline, test harness) never grow debugger chrome they did not ask for.
|
|
132
|
+
*/
|
|
133
|
+
set Breakpoints(value: readonly string[]);
|
|
134
|
+
get Breakpoints(): readonly string[];
|
|
135
|
+
/** The step a breakpoint actually stopped on. */
|
|
136
|
+
set PausedAtTaskID(value: string | null);
|
|
137
|
+
get PausedAtTaskID(): string | null;
|
|
138
|
+
/**
|
|
139
|
+
* The graph is claim-gated. Combined with `PausedAtTaskID` so start-paused (no specific
|
|
140
|
+
* step yet) can still light the entry node as waiting.
|
|
141
|
+
*/
|
|
142
|
+
set GraphPaused(value: boolean);
|
|
143
|
+
get GraphPaused(): boolean;
|
|
144
|
+
/** Operator-forced edge verdicts, keyed by `MJ: Task Dependencies` row ID. */
|
|
145
|
+
set EdgeOverrides(value: Readonly<Record<string, 'true' | 'false'>>);
|
|
146
|
+
get EdgeOverrides(): Readonly<Record<string, 'true' | 'false'>>;
|
|
147
|
+
/**
|
|
148
|
+
* Whether this host may arm/disarm breakpoints from the selected-step control.
|
|
149
|
+
* Off by default — the run view also renders where those controls would be wrong.
|
|
150
|
+
*/
|
|
151
|
+
AllowBreakpointEditing: boolean;
|
|
152
|
+
/** Compact debug key under the summary line. Off unless the host is a debugger. */
|
|
153
|
+
ShowDebugLegend: boolean;
|
|
154
|
+
/** VS Code VARIABLES pane to the left of the canvas. Off unless the host is debugging. */
|
|
155
|
+
ShowVariables: boolean;
|
|
156
|
+
/** The parent bag's `data` / `context` roots, for the Invocation scope. */
|
|
157
|
+
Invocation: {
|
|
158
|
+
data?: unknown;
|
|
159
|
+
context?: unknown;
|
|
160
|
+
} | null;
|
|
55
161
|
NodeSelected: EventEmitter<TaskGraphRunNodeSelectedEvent>;
|
|
162
|
+
/** The legend was toggled from the toolbar, so a host can remember the choice. */
|
|
163
|
+
LegendToggled: EventEmitter<boolean>;
|
|
56
164
|
/** Emitted once, when every step has reached a terminal status. */
|
|
57
165
|
Settled: EventEmitter<void>;
|
|
166
|
+
/** A connection was clicked. `EdgeID` is the dependency row id when the projection carried one. */
|
|
167
|
+
ConnectionSelected: EventEmitter<TaskGraphRunConnectionSelectedEvent>;
|
|
168
|
+
/** Intent only — the host owns `SetBreakpoints`. */
|
|
169
|
+
BreakpointToggled: EventEmitter<{
|
|
170
|
+
TaskID: string;
|
|
171
|
+
Enabled: boolean;
|
|
172
|
+
}>;
|
|
173
|
+
/** Intent only — the host owns `OverrideEdge`. */
|
|
174
|
+
EdgeOverrideRequested: EventEmitter<{
|
|
175
|
+
EdgeID: string;
|
|
176
|
+
Verdict: "true" | "false" | null;
|
|
177
|
+
}>;
|
|
178
|
+
/** What each running step says it is doing, from `NodeProgress` frames. Keyed by task row id. */
|
|
179
|
+
LiveActivity: Map<string, {
|
|
180
|
+
Message: string;
|
|
181
|
+
Percent?: number;
|
|
182
|
+
}>;
|
|
183
|
+
/** The last step the person selected, so the breakpoint control has a target. */
|
|
184
|
+
SelectedTaskID: string | null;
|
|
185
|
+
/** Stable overlay object — rebuilt only when debug inputs change, so the editor does not re-project every CD cycle. */
|
|
186
|
+
Overlay: TaskGraphDebugOverlay;
|
|
187
|
+
private breakpoints;
|
|
188
|
+
private pausedAtTaskID;
|
|
189
|
+
private graphPaused;
|
|
190
|
+
private edgeOverrides;
|
|
191
|
+
/** `Settled` is once-per-parent — a finished poll must not re-fire the host. */
|
|
192
|
+
private settledEmitted;
|
|
193
|
+
/** Left data pane + split sizes. One JSON bag in `MJ: User Settings`. */
|
|
194
|
+
get Prefs(): TaskGraphRunPrefs;
|
|
195
|
+
private prefsStore;
|
|
58
196
|
Spec: TaskGraphSpec | null;
|
|
59
197
|
RuntimeStatus: TaskGraphRuntimeStatus | null;
|
|
60
198
|
Positions: Map<string, GraphNodePosition>;
|
|
@@ -63,14 +201,23 @@ export declare class TaskGraphRunViewComponent extends BaseAngularComponent impl
|
|
|
63
201
|
/** Rows by id, so a selection event can hand the host the whole task rather than an id. */
|
|
64
202
|
private taskByID;
|
|
65
203
|
private parentTaskID;
|
|
204
|
+
private replayAt;
|
|
66
205
|
private pollTimer;
|
|
206
|
+
private frameReloadTimer;
|
|
67
207
|
private destroyed;
|
|
68
208
|
constructor(cdr: ChangeDetectorRef);
|
|
209
|
+
get InvocationPaneOpen(): boolean;
|
|
210
|
+
get InvocationPaneSize(): number;
|
|
211
|
+
get CanvasPaneSize(): number;
|
|
212
|
+
OnToggleInvocation(): void;
|
|
213
|
+
OnInvocationSplitDragEnd(sizes: readonly (number | '*')[]): void;
|
|
69
214
|
ngOnDestroy(): void;
|
|
70
|
-
/** Steps in a terminal state, for the host's summary line. */
|
|
215
|
+
/** Steps in a terminal state, for the host's summary line. Uses the same map the canvas paints. */
|
|
71
216
|
get CompletedCount(): number;
|
|
72
217
|
get TotalCount(): number;
|
|
73
218
|
get SkippedCount(): number;
|
|
219
|
+
get RunningCount(): number;
|
|
220
|
+
get IsSettled(): boolean;
|
|
74
221
|
/**
|
|
75
222
|
* A node was selected on the canvas.
|
|
76
223
|
*
|
|
@@ -79,6 +226,20 @@ export declare class TaskGraphRunViewComponent extends BaseAngularComponent impl
|
|
|
79
226
|
* holds.
|
|
80
227
|
*/
|
|
81
228
|
OnSelectionChanged(args: TaskGraphSelectionChangedEventArgs): void;
|
|
229
|
+
OnConnectionSelected(connection: FlowConnection | null): void;
|
|
230
|
+
private countRuntime;
|
|
231
|
+
get HasSelectedBreakpoint(): boolean;
|
|
232
|
+
get SelectedTaskName(): string;
|
|
233
|
+
get WaitingStepName(): string;
|
|
234
|
+
get SelectedTask(): MJTaskEntity | null;
|
|
235
|
+
OnToggleSelectedBreakpoint(): void;
|
|
236
|
+
/** Debug attaches here: replace Edit/Remove with breakpoint / path-override items. */
|
|
237
|
+
OnBeforeContextMenu(event: FlowBeforeContextMenuEventArgs): void;
|
|
238
|
+
OnAfterContextMenuAction(event: FlowAfterContextMenuActionEventArgs): void;
|
|
239
|
+
private hasBreakpoint;
|
|
240
|
+
OnDebugHotkey(event: KeyboardEvent): void;
|
|
241
|
+
private rebuildOverlay;
|
|
242
|
+
private emitSettledOnce;
|
|
82
243
|
/**
|
|
83
244
|
* Reads the graph and projects it onto the canvas.
|
|
84
245
|
*
|
|
@@ -89,6 +250,10 @@ export declare class TaskGraphRunViewComponent extends BaseAngularComponent impl
|
|
|
89
250
|
private load;
|
|
90
251
|
/** Rows → spec + runtime + geometry. */
|
|
91
252
|
private project;
|
|
253
|
+
/** Re-derives the overlay for the current replay position (or the present) from held rows. */
|
|
254
|
+
private applyReplay;
|
|
255
|
+
/** The overlay as it stood at `moment`, from each row's own timestamps. */
|
|
256
|
+
private statusAt;
|
|
92
257
|
/**
|
|
93
258
|
* The author's arrangement where there is one, a computed layout everywhere else.
|
|
94
259
|
*
|
|
@@ -99,6 +264,18 @@ export declare class TaskGraphRunViewComponent extends BaseAngularComponent impl
|
|
|
99
264
|
*/
|
|
100
265
|
private resolvePositions;
|
|
101
266
|
private isSettled;
|
|
267
|
+
/**
|
|
268
|
+
* Folds one live frame into the overlay.
|
|
269
|
+
*
|
|
270
|
+
* Direct status frames patch in place — a new `RuntimeStatus` object, because the canvas is
|
|
271
|
+
* OnPush and mutation would render nothing. Frames whose consequences the dispatcher computes
|
|
272
|
+
* across the whole graph (skips cascade, blocks propagate, settlement rolls up) reload the rows
|
|
273
|
+
* instead: inferring a cascade client-side would be a second implementation of the engine's
|
|
274
|
+
* rules, free to drift.
|
|
275
|
+
*/
|
|
276
|
+
private foldFrame;
|
|
277
|
+
/** One reload per burst of cascade frames, not one per frame. */
|
|
278
|
+
private scheduleFrameReload;
|
|
102
279
|
private schedulePoll;
|
|
103
280
|
private stopPolling;
|
|
104
281
|
private fail;
|
|
@@ -108,6 +285,6 @@ export declare class TaskGraphRunViewComponent extends BaseAngularComponent impl
|
|
|
108
285
|
Height: number;
|
|
109
286
|
};
|
|
110
287
|
static ɵfac: i0.ɵɵFactoryDeclaration<TaskGraphRunViewComponent, never>;
|
|
111
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TaskGraphRunViewComponent, "mj-task-graph-run-view", never, { "ParentTaskID": { "alias": "ParentTaskID"; "required": false; }; "WorkflowName": { "alias": "WorkflowName"; "required": false; }; "LiveUpdates": { "alias": "LiveUpdates"; "required": false; }; "PollIntervalSeconds": { "alias": "PollIntervalSeconds"; "required": false; }; "Height": { "alias": "Height"; "required": false; }; }, { "NodeSelected": "NodeSelected"; "Settled": "Settled"; }, never, never, false, never>;
|
|
288
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TaskGraphRunViewComponent, "mj-task-graph-run-view", never, { "ParentTaskID": { "alias": "ParentTaskID"; "required": false; }; "WorkflowName": { "alias": "WorkflowName"; "required": false; }; "LiveUpdates": { "alias": "LiveUpdates"; "required": false; }; "PollIntervalSeconds": { "alias": "PollIntervalSeconds"; "required": false; }; "Height": { "alias": "Height"; "required": false; }; "ShowLegend": { "alias": "ShowLegend"; "required": false; }; "ShowToolbar": { "alias": "ShowToolbar"; "required": false; }; "ToolbarVisibility": { "alias": "ToolbarVisibility"; "required": false; }; "ToolbarAlign": { "alias": "ToolbarAlign"; "required": false; }; "LiveFrame": { "alias": "LiveFrame"; "required": false; }; "ReplayAt": { "alias": "ReplayAt"; "required": false; }; "Breakpoints": { "alias": "Breakpoints"; "required": false; }; "PausedAtTaskID": { "alias": "PausedAtTaskID"; "required": false; }; "GraphPaused": { "alias": "GraphPaused"; "required": false; }; "EdgeOverrides": { "alias": "EdgeOverrides"; "required": false; }; "AllowBreakpointEditing": { "alias": "AllowBreakpointEditing"; "required": false; }; "ShowDebugLegend": { "alias": "ShowDebugLegend"; "required": false; }; "ShowVariables": { "alias": "ShowVariables"; "required": false; }; "Invocation": { "alias": "Invocation"; "required": false; }; }, { "NodeSelected": "NodeSelected"; "LegendToggled": "LegendToggled"; "Settled": "Settled"; "ConnectionSelected": "ConnectionSelected"; "BreakpointToggled": "BreakpointToggled"; "EdgeOverrideRequested": "EdgeOverrideRequested"; }, never, never, false, never>;
|
|
112
289
|
}
|
|
113
290
|
//# sourceMappingURL=task-graph-run-view.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-graph-run-view.component.d.ts","sourceRoot":"","sources":["../../src/lib/task-graph-run-view.component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAEH,iBAAiB,EAEjB,YAAY,
|
|
1
|
+
{"version":3,"file":"task-graph-run-view.component.d.ts","sourceRoot":"","sources":["../../src/lib/task-graph-run-view.component.ts"],"names":[],"mappings":"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"}
|