ultravisor 1.0.2 → 1.0.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.
Files changed (121) hide show
  1. package/.claude/launch.json +11 -0
  2. package/.claude/ultravisor-dev-config.json +3 -0
  3. package/.ultravisor.json +426 -0
  4. package/docs/README.md +63 -0
  5. package/package.json +12 -8
  6. package/source/Ultravisor.cjs +22 -3
  7. package/source/cli/Ultravisor-CLIProgram.cjs +35 -23
  8. package/source/cli/commands/Ultravisor-Command-SingleOperation.cjs +29 -18
  9. package/source/cli/commands/Ultravisor-Command-SingleTask.cjs +62 -19
  10. package/source/cli/commands/Ultravisor-Command-UpdateTask.cjs +27 -15
  11. package/source/config/Ultravisor-Default-Command-Configuration.cjs +5 -3
  12. package/source/services/Ultravisor-ExecutionEngine.cjs +1039 -0
  13. package/source/services/Ultravisor-ExecutionManifest.cjs +399 -0
  14. package/source/services/Ultravisor-Hypervisor-State.cjs +270 -97
  15. package/source/services/Ultravisor-Hypervisor.cjs +38 -83
  16. package/source/services/Ultravisor-StateManager.cjs +241 -0
  17. package/source/services/Ultravisor-TaskTypeRegistry.cjs +143 -0
  18. package/source/services/tasks/Ultravisor-TaskType-Base.cjs +105 -0
  19. package/source/services/tasks/control/Ultravisor-TaskType-IfConditional.cjs +148 -0
  20. package/source/services/tasks/control/Ultravisor-TaskType-LaunchOperation.cjs +187 -0
  21. package/source/services/tasks/control/Ultravisor-TaskType-SplitExecute.cjs +184 -0
  22. package/source/services/tasks/data/Ultravisor-TaskType-ReplaceString.cjs +82 -0
  23. package/source/services/tasks/data/Ultravisor-TaskType-SetValues.cjs +81 -0
  24. package/source/services/tasks/data/Ultravisor-TaskType-StringAppender.cjs +101 -0
  25. package/source/services/tasks/file-io/Ultravisor-TaskType-ReadFile.cjs +103 -0
  26. package/source/services/tasks/file-io/Ultravisor-TaskType-WriteFile.cjs +117 -0
  27. package/source/services/tasks/interaction/Ultravisor-TaskType-ErrorMessage.cjs +54 -0
  28. package/source/services/tasks/interaction/Ultravisor-TaskType-ValueInput.cjs +62 -0
  29. package/source/web_server/Ultravisor-API-Server.cjs +237 -124
  30. package/test/Ultravisor_browser_tests.js +2226 -0
  31. package/test/Ultravisor_tests.js +1143 -5830
  32. package/webinterface/css/ultravisor.css +23 -0
  33. package/webinterface/package.json +6 -3
  34. package/webinterface/source/Pict-Application-Ultravisor.js +93 -73
  35. package/webinterface/source/cards/FlowCard-CSVTransform.js +43 -0
  36. package/webinterface/source/cards/FlowCard-Command.js +86 -0
  37. package/webinterface/source/cards/FlowCard-ComprehensionIntersect.js +40 -0
  38. package/webinterface/source/cards/FlowCard-Conditional.js +87 -0
  39. package/webinterface/source/cards/FlowCard-CopyFile.js +55 -0
  40. package/webinterface/source/cards/FlowCard-End.js +29 -0
  41. package/webinterface/source/cards/FlowCard-GetJSON.js +55 -0
  42. package/webinterface/source/cards/FlowCard-GetText.js +54 -0
  43. package/webinterface/source/cards/FlowCard-Histogram.js +176 -0
  44. package/webinterface/source/cards/FlowCard-LaunchOperation.js +82 -0
  45. package/webinterface/source/cards/FlowCard-ListFiles.js +55 -0
  46. package/webinterface/source/cards/FlowCard-MeadowCount.js +44 -0
  47. package/webinterface/source/cards/FlowCard-MeadowCreate.js +44 -0
  48. package/webinterface/source/cards/FlowCard-MeadowDelete.js +45 -0
  49. package/webinterface/source/cards/FlowCard-MeadowRead.js +46 -0
  50. package/webinterface/source/cards/FlowCard-MeadowReads.js +46 -0
  51. package/webinterface/source/cards/FlowCard-MeadowUpdate.js +44 -0
  52. package/webinterface/source/cards/FlowCard-ParseCSV.js +85 -0
  53. package/webinterface/source/cards/FlowCard-ReadJSON.js +54 -0
  54. package/webinterface/source/cards/FlowCard-ReadText.js +54 -0
  55. package/webinterface/source/cards/FlowCard-RestRequest.js +59 -0
  56. package/webinterface/source/cards/FlowCard-SendJSON.js +57 -0
  57. package/webinterface/source/cards/FlowCard-Solver.js +77 -0
  58. package/webinterface/source/cards/FlowCard-Start.js +29 -0
  59. package/webinterface/source/cards/FlowCard-TemplateString.js +77 -0
  60. package/webinterface/source/cards/FlowCard-WriteJSON.js +54 -0
  61. package/webinterface/source/cards/FlowCard-WriteText.js +54 -0
  62. package/webinterface/source/data/ExampleFlow-CSVPipeline.js +231 -0
  63. package/webinterface/source/data/ExampleFlow-FileProcessor.js +315 -0
  64. package/webinterface/source/data/ExampleFlow-MeadowPipeline.js +328 -0
  65. package/webinterface/source/providers/PictRouter-Ultravisor-Configuration.json +8 -8
  66. package/webinterface/source/views/PictView-Ultravisor-Dashboard.js +6 -6
  67. package/webinterface/source/views/PictView-Ultravisor-FlowEditor.js +436 -0
  68. package/webinterface/source/views/PictView-Ultravisor-ManifestList.js +45 -43
  69. package/webinterface/source/views/PictView-Ultravisor-OperationEdit.js +34 -89
  70. package/webinterface/source/views/PictView-Ultravisor-OperationList.js +128 -13
  71. package/webinterface/source/views/PictView-Ultravisor-PendingInput.js +314 -0
  72. package/webinterface/source/views/PictView-Ultravisor-Schedule.js +18 -53
  73. package/webinterface/source/views/PictView-Ultravisor-TimingView.js +27 -14
  74. package/webinterface/source/views/PictView-Ultravisor-TopBar.js +2 -1
  75. package/.babelrc +0 -6
  76. package/.browserslistrc +0 -1
  77. package/.browserslistrc-BACKUP +0 -1
  78. package/.gulpfile-quackage-config.json +0 -7
  79. package/.gulpfile-quackage.js +0 -2
  80. package/debug/Harness.js +0 -5
  81. package/source/services/Ultravisor-Operation-Manifest.cjs +0 -160
  82. package/source/services/Ultravisor-Operation.cjs +0 -200
  83. package/source/services/Ultravisor-Task.cjs +0 -349
  84. package/source/services/events/Ultravisor-Hypervisor-Event-Solver.cjs +0 -11
  85. package/source/services/tasks/Ultravisor-Task-Base.cjs +0 -264
  86. package/source/services/tasks/Ultravisor-Task-CollectValues.cjs +0 -188
  87. package/source/services/tasks/Ultravisor-Task-Command.cjs +0 -65
  88. package/source/services/tasks/Ultravisor-Task-CommandEach.cjs +0 -190
  89. package/source/services/tasks/Ultravisor-Task-Conditional.cjs +0 -104
  90. package/source/services/tasks/Ultravisor-Task-DateWindow.cjs +0 -72
  91. package/source/services/tasks/Ultravisor-Task-GeneratePagedOperation.cjs +0 -336
  92. package/source/services/tasks/Ultravisor-Task-LaunchOperation.cjs +0 -143
  93. package/source/services/tasks/Ultravisor-Task-LaunchTask.cjs +0 -146
  94. package/source/services/tasks/Ultravisor-Task-LineMatch.cjs +0 -158
  95. package/source/services/tasks/Ultravisor-Task-Request.cjs +0 -56
  96. package/source/services/tasks/Ultravisor-Task-Solver.cjs +0 -89
  97. package/source/services/tasks/Ultravisor-Task-TemplateString.cjs +0 -93
  98. package/source/services/tasks/rest/Ultravisor-Task-GetBinary.cjs +0 -127
  99. package/source/services/tasks/rest/Ultravisor-Task-GetJSON.cjs +0 -119
  100. package/source/services/tasks/rest/Ultravisor-Task-GetText.cjs +0 -109
  101. package/source/services/tasks/rest/Ultravisor-Task-GetXML.cjs +0 -112
  102. package/source/services/tasks/rest/Ultravisor-Task-RestRequest.cjs +0 -499
  103. package/source/services/tasks/rest/Ultravisor-Task-SendJSON.cjs +0 -150
  104. package/source/services/tasks/stagingfiles/Ultravisor-Task-CopyFile.cjs +0 -110
  105. package/source/services/tasks/stagingfiles/Ultravisor-Task-ListFiles.cjs +0 -89
  106. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadBinary.cjs +0 -87
  107. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadJSON.cjs +0 -67
  108. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadText.cjs +0 -66
  109. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadXML.cjs +0 -69
  110. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteBinary.cjs +0 -95
  111. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteJSON.cjs +0 -96
  112. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteText.cjs +0 -99
  113. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteXML.cjs +0 -102
  114. package/webinterface/.babelrc +0 -6
  115. package/webinterface/.browserslistrc +0 -1
  116. package/webinterface/.browserslistrc-BACKUP +0 -1
  117. package/webinterface/.gulpfile-quackage-config.json +0 -7
  118. package/webinterface/.gulpfile-quackage.js +0 -2
  119. package/webinterface/source/views/PictView-Ultravisor-TaskEdit.js +0 -220
  120. package/webinterface/source/views/PictView-Ultravisor-TaskList.js +0 -248
  121. /package/docs/{cover.md → _cover.md} +0 -0
@@ -0,0 +1,328 @@
1
+ /**
2
+ * Example Flow: Template Processor
3
+ *
4
+ * Demonstrates a multi-step text processing pipeline using the new engine task types:
5
+ * Start -> Set Values (initialize project metadata)
6
+ * -> Read File (template)
7
+ * -> Replace String (project name)
8
+ * -> Replace String (version)
9
+ * -> If Conditional (check for remaining placeholders)
10
+ * -> True: Error Message (warn about unresolved placeholders) -> End
11
+ * -> False: String Appender (add header comment) -> Write File (output) -> End
12
+ *
13
+ * Shows chained string operations, state management, and conditional validation.
14
+ */
15
+ module.exports =
16
+ {
17
+ Nodes:
18
+ [
19
+ // ── Entry ────────────────────────────────────────────────
20
+ {
21
+ Hash: 'tpl-start',
22
+ Type: 'start',
23
+ X: 50,
24
+ Y: 220,
25
+ Width: 140,
26
+ Height: 80,
27
+ Title: 'Start',
28
+ Ports:
29
+ [
30
+ { Hash: 'tpl-start-out', Direction: 'output', Side: 'right', Label: 'Out' }
31
+ ],
32
+ Data: {}
33
+ },
34
+ // ── Initialize project metadata ─────────────────────────
35
+ {
36
+ Hash: 'tpl-setvals',
37
+ Type: 'set-values',
38
+ X: 270,
39
+ Y: 200,
40
+ Width: 200,
41
+ Height: 80,
42
+ Title: 'Set Project Info',
43
+ Ports:
44
+ [
45
+ { Hash: 'tpl-sv-in', Direction: 'input', Side: 'left', Label: 'Execute' },
46
+ { Hash: 'tpl-sv-out', Direction: 'output', Side: 'right', Label: 'Complete' }
47
+ ],
48
+ Data:
49
+ {
50
+ Mappings:
51
+ [
52
+ { Address: 'Operation.ProjectName', Value: 'Retold' },
53
+ { Address: 'Operation.Version', Value: '3.0.0' },
54
+ { Address: 'Operation.Author', Value: 'Steven Velozo' }
55
+ ]
56
+ }
57
+ },
58
+ // ── Read the template file ──────────────────────────────
59
+ {
60
+ Hash: 'tpl-read',
61
+ Type: 'read-file',
62
+ X: 550,
63
+ Y: 200,
64
+ Width: 200,
65
+ Height: 80,
66
+ Title: 'Read Template',
67
+ Ports:
68
+ [
69
+ { Hash: 'tpl-read-in', Direction: 'input', Side: 'left', Label: 'BeginRead' },
70
+ { Hash: 'tpl-read-done', Direction: 'output', Side: 'right', Label: 'ReadComplete' },
71
+ { Hash: 'tpl-read-err', Direction: 'output', Side: 'bottom', Label: 'Error' }
72
+ ],
73
+ Data: { FilePath: 'readme.template.md', Encoding: 'utf8' }
74
+ },
75
+ // ── Replace project name placeholder ────────────────────
76
+ {
77
+ Hash: 'tpl-replace-name',
78
+ Type: 'replace-string',
79
+ X: 830,
80
+ Y: 180,
81
+ Width: 220,
82
+ Height: 80,
83
+ Title: 'Set Project Name',
84
+ Ports:
85
+ [
86
+ { Hash: 'tpl-rn-in', Direction: 'input', Side: 'left', Label: 'Replace' },
87
+ { Hash: 'tpl-rn-done', Direction: 'output', Side: 'right', Label: 'ReplaceComplete' },
88
+ { Hash: 'tpl-rn-err', Direction: 'output', Side: 'bottom', Label: 'Error' }
89
+ ],
90
+ Data: { InputString: '{~D:Record.TaskOutput.tpl-read.FileContent~}', SearchString: '${PROJECT_NAME}', ReplaceString: '{~D:Record.Operation.ProjectName~}' }
91
+ },
92
+ // ── Replace version placeholder ─────────────────────────
93
+ {
94
+ Hash: 'tpl-replace-ver',
95
+ Type: 'replace-string',
96
+ X: 1130,
97
+ Y: 180,
98
+ Width: 220,
99
+ Height: 80,
100
+ Title: 'Set Version',
101
+ Ports:
102
+ [
103
+ { Hash: 'tpl-rv-in', Direction: 'input', Side: 'left', Label: 'Replace' },
104
+ { Hash: 'tpl-rv-done', Direction: 'output', Side: 'right', Label: 'ReplaceComplete' },
105
+ { Hash: 'tpl-rv-err', Direction: 'output', Side: 'bottom', Label: 'Error' }
106
+ ],
107
+ Data: { InputString: '{~D:Record.TaskOutput.tpl-replace-name.ReplacedString~}', SearchString: '${VERSION}', ReplaceString: '{~D:Record.Operation.Version~}' }
108
+ },
109
+ // ── Check for remaining unresolved placeholders ─────────
110
+ {
111
+ Hash: 'tpl-validate',
112
+ Type: 'if-conditional',
113
+ X: 1430,
114
+ Y: 160,
115
+ Width: 240,
116
+ Height: 100,
117
+ Title: 'Unresolved Placeholders?',
118
+ Ports:
119
+ [
120
+ { Hash: 'tpl-val-in', Direction: 'input', Side: 'left', Label: 'Evaluate' },
121
+ { Hash: 'tpl-val-true', Direction: 'output', Side: 'bottom', Label: 'True' },
122
+ { Hash: 'tpl-val-false', Direction: 'output', Side: 'right', Label: 'False' }
123
+ ],
124
+ Data: { DataAddress: 'TaskOutput.tpl-replace-ver.ReplacedString', CompareValue: '${', Operator: 'contains' }
125
+ },
126
+ // ── Error: unresolved placeholders remain ────────────────
127
+ {
128
+ Hash: 'tpl-warn',
129
+ Type: 'error-message',
130
+ X: 1430,
131
+ Y: 380,
132
+ Width: 240,
133
+ Height: 80,
134
+ Title: 'Warn: Unresolved',
135
+ Ports:
136
+ [
137
+ { Hash: 'tpl-warn-in', Direction: 'input', Side: 'left', Label: 'Trigger' },
138
+ { Hash: 'tpl-warn-done', Direction: 'output', Side: 'right', Label: 'Complete' }
139
+ ],
140
+ Data: { MessageTemplate: 'Warning: Template still contains unresolved ${...} placeholders after processing' }
141
+ },
142
+ // ── Prepend a generated-by header comment ───────────────
143
+ {
144
+ Hash: 'tpl-header',
145
+ Type: 'string-appender',
146
+ X: 1750,
147
+ Y: 160,
148
+ Width: 220,
149
+ Height: 80,
150
+ Title: 'Add Header',
151
+ Ports:
152
+ [
153
+ { Hash: 'tpl-hdr-in', Direction: 'input', Side: 'left', Label: 'Append' },
154
+ { Hash: 'tpl-hdr-done', Direction: 'output', Side: 'right', Label: 'Completed' }
155
+ ],
156
+ Data: { InputString: '{~D:Record.TaskOutput.tpl-replace-ver.ReplacedString~}', OutputAddress: 'Operation.FinalContent' }
157
+ },
158
+ // ── Write the processed output ──────────────────────────
159
+ {
160
+ Hash: 'tpl-write',
161
+ Type: 'write-file',
162
+ X: 2050,
163
+ Y: 160,
164
+ Width: 200,
165
+ Height: 80,
166
+ Title: 'Write Output',
167
+ Ports:
168
+ [
169
+ { Hash: 'tpl-write-in', Direction: 'input', Side: 'left', Label: 'BeginWrite' },
170
+ { Hash: 'tpl-write-done', Direction: 'output', Side: 'right', Label: 'WriteComplete' },
171
+ { Hash: 'tpl-write-err', Direction: 'output', Side: 'bottom', Label: 'Error' }
172
+ ],
173
+ Data: { FilePath: 'README.md', Content: '{~D:Record.Operation.FinalContent~}', Encoding: 'utf8' }
174
+ },
175
+ // ── Exit ─────────────────────────────────────────────────
176
+ {
177
+ Hash: 'tpl-end',
178
+ Type: 'end',
179
+ X: 2330,
180
+ Y: 260,
181
+ Width: 140,
182
+ Height: 80,
183
+ Title: 'End',
184
+ Ports:
185
+ [
186
+ { Hash: 'tpl-end-in', Direction: 'input', Side: 'left', Label: 'In' }
187
+ ],
188
+ Data: {}
189
+ }
190
+ ],
191
+ Connections:
192
+ [
193
+ // Start -> Set Project Info
194
+ {
195
+ Hash: 'tpl-c1',
196
+ SourceNodeHash: 'tpl-start',
197
+ SourcePortHash: 'tpl-start-out',
198
+ TargetNodeHash: 'tpl-setvals',
199
+ TargetPortHash: 'tpl-sv-in',
200
+ Data: {}
201
+ },
202
+ // Set Project Info -> Read Template
203
+ {
204
+ Hash: 'tpl-c2',
205
+ SourceNodeHash: 'tpl-setvals',
206
+ SourcePortHash: 'tpl-sv-out',
207
+ TargetNodeHash: 'tpl-read',
208
+ TargetPortHash: 'tpl-read-in',
209
+ Data: {}
210
+ },
211
+ // Read Template -> Set Project Name
212
+ {
213
+ Hash: 'tpl-c3',
214
+ SourceNodeHash: 'tpl-read',
215
+ SourcePortHash: 'tpl-read-done',
216
+ TargetNodeHash: 'tpl-replace-name',
217
+ TargetPortHash: 'tpl-rn-in',
218
+ Data: {}
219
+ },
220
+ // Set Project Name -> Set Version
221
+ {
222
+ Hash: 'tpl-c4',
223
+ SourceNodeHash: 'tpl-replace-name',
224
+ SourcePortHash: 'tpl-rn-done',
225
+ TargetNodeHash: 'tpl-replace-ver',
226
+ TargetPortHash: 'tpl-rv-in',
227
+ Data: {}
228
+ },
229
+ // Set Version -> Unresolved Placeholders?
230
+ {
231
+ Hash: 'tpl-c5',
232
+ SourceNodeHash: 'tpl-replace-ver',
233
+ SourcePortHash: 'tpl-rv-done',
234
+ TargetNodeHash: 'tpl-validate',
235
+ TargetPortHash: 'tpl-val-in',
236
+ Data: {}
237
+ },
238
+ // Unresolved Placeholders? (True) -> Warn
239
+ {
240
+ Hash: 'tpl-c6',
241
+ SourceNodeHash: 'tpl-validate',
242
+ SourcePortHash: 'tpl-val-true',
243
+ TargetNodeHash: 'tpl-warn',
244
+ TargetPortHash: 'tpl-warn-in',
245
+ Data: {}
246
+ },
247
+ // Warn -> End
248
+ {
249
+ Hash: 'tpl-c7',
250
+ SourceNodeHash: 'tpl-warn',
251
+ SourcePortHash: 'tpl-warn-done',
252
+ TargetNodeHash: 'tpl-end',
253
+ TargetPortHash: 'tpl-end-in',
254
+ Data: {}
255
+ },
256
+ // Unresolved Placeholders? (False) -> Add Header
257
+ {
258
+ Hash: 'tpl-c8',
259
+ SourceNodeHash: 'tpl-validate',
260
+ SourcePortHash: 'tpl-val-false',
261
+ TargetNodeHash: 'tpl-header',
262
+ TargetPortHash: 'tpl-hdr-in',
263
+ Data: {}
264
+ },
265
+ // Add Header -> Write Output
266
+ {
267
+ Hash: 'tpl-c9',
268
+ SourceNodeHash: 'tpl-header',
269
+ SourcePortHash: 'tpl-hdr-done',
270
+ TargetNodeHash: 'tpl-write',
271
+ TargetPortHash: 'tpl-write-in',
272
+ Data: {}
273
+ },
274
+ // Write Output -> End
275
+ {
276
+ Hash: 'tpl-c10',
277
+ SourceNodeHash: 'tpl-write',
278
+ SourcePortHash: 'tpl-write-done',
279
+ TargetNodeHash: 'tpl-end',
280
+ TargetPortHash: 'tpl-end-in',
281
+ Data: {}
282
+ },
283
+ // Read Template error -> End
284
+ {
285
+ Hash: 'tpl-c11',
286
+ SourceNodeHash: 'tpl-read',
287
+ SourcePortHash: 'tpl-read-err',
288
+ TargetNodeHash: 'tpl-end',
289
+ TargetPortHash: 'tpl-end-in',
290
+ Data: {}
291
+ },
292
+ // Set Project Name error -> End
293
+ {
294
+ Hash: 'tpl-c12',
295
+ SourceNodeHash: 'tpl-replace-name',
296
+ SourcePortHash: 'tpl-rn-err',
297
+ TargetNodeHash: 'tpl-end',
298
+ TargetPortHash: 'tpl-end-in',
299
+ Data: {}
300
+ },
301
+ // Set Version error -> End
302
+ {
303
+ Hash: 'tpl-c13',
304
+ SourceNodeHash: 'tpl-replace-ver',
305
+ SourcePortHash: 'tpl-rv-err',
306
+ TargetNodeHash: 'tpl-end',
307
+ TargetPortHash: 'tpl-end-in',
308
+ Data: {}
309
+ },
310
+ // Write Output error -> End
311
+ {
312
+ Hash: 'tpl-c14',
313
+ SourceNodeHash: 'tpl-write',
314
+ SourcePortHash: 'tpl-write-err',
315
+ TargetNodeHash: 'tpl-end',
316
+ TargetPortHash: 'tpl-end-in',
317
+ Data: {}
318
+ }
319
+ ],
320
+ ViewState:
321
+ {
322
+ PanX: 0,
323
+ PanY: 0,
324
+ Zoom: 1,
325
+ SelectedNodeHash: null,
326
+ SelectedConnectionHash: null
327
+ }
328
+ };
@@ -10,14 +10,6 @@
10
10
  "path": "/Home",
11
11
  "template": "{~LV:Pict.PictApplication.showView(`Ultravisor-Dashboard`)~}"
12
12
  },
13
- {
14
- "path": "/Tasks",
15
- "template": "{~LV:Pict.PictApplication.showView(`Ultravisor-TaskList`)~}"
16
- },
17
- {
18
- "path": "/TaskEdit",
19
- "template": "{~LV:Pict.PictApplication.showView(`Ultravisor-TaskEdit`)~}"
20
- },
21
13
  {
22
14
  "path": "/Operations",
23
15
  "template": "{~LV:Pict.PictApplication.showView(`Ultravisor-OperationList`)~}"
@@ -34,9 +26,17 @@
34
26
  "path": "/Manifests",
35
27
  "template": "{~LV:Pict.PictApplication.showView(`Ultravisor-ManifestList`)~}"
36
28
  },
29
+ {
30
+ "path": "/PendingInput",
31
+ "template": "{~LV:Pict.PictApplication.showView(`Ultravisor-PendingInput`)~}"
32
+ },
37
33
  {
38
34
  "path": "/Timing",
39
35
  "template": "{~LV:Pict.PictApplication.showView(`Ultravisor-TimingView`)~}"
36
+ },
37
+ {
38
+ "path": "/FlowEditor",
39
+ "template": "{~LV:Pict.PictApplication.showView(`Ultravisor-FlowEditor`)~}"
40
40
  }
41
41
  ]
42
42
  }
@@ -135,8 +135,8 @@ const _ViewConfiguration =
135
135
  <div class="ultravisor-stat-card-value" id="Ultravisor-Dashboard-StatusValue">{~D:AppData.Ultravisor.ServerStatus.Status~}</div>
136
136
  </div>
137
137
  <div class="ultravisor-stat-card">
138
- <div class="ultravisor-stat-card-label">Tasks</div>
139
- <div class="ultravisor-stat-card-value" id="Ultravisor-Dashboard-TaskCount">--</div>
138
+ <div class="ultravisor-stat-card-label">Templates</div>
139
+ <div class="ultravisor-stat-card-value" id="Ultravisor-Dashboard-TemplateCount">--</div>
140
140
  </div>
141
141
  <div class="ultravisor-stat-card">
142
142
  <div class="ultravisor-stat-card-label">Operations</div>
@@ -203,14 +203,14 @@ class UltravisorDashboardView extends libPictView
203
203
  tmpRunEl.className = 'ultravisor-stat-card-value ' + (tmpRunning ? 'running' : 'stopped');
204
204
  }
205
205
 
206
- // Load task count
207
- tmpApp.loadTasks(
206
+ // Load template count
207
+ tmpApp.loadNodeTemplates(
208
208
  function ()
209
209
  {
210
- let tmpCountEl = document.getElementById('Ultravisor-Dashboard-TaskCount');
210
+ let tmpCountEl = document.getElementById('Ultravisor-Dashboard-TemplateCount');
211
211
  if (tmpCountEl)
212
212
  {
213
- tmpCountEl.textContent = this.pict.AppData.Ultravisor.TaskList.length;
213
+ tmpCountEl.textContent = this.pict.AppData.Ultravisor.NodeTemplateList.length;
214
214
  }
215
215
  }.bind(this));
216
216