@things-factory/integration-ui 9.0.0-beta.27 → 9.0.0-beta.29

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 (120) hide show
  1. package/dist-client/analysis/graph-data.d.ts +36 -0
  2. package/dist-client/analysis/graph-data.js +2 -0
  3. package/dist-client/analysis/graph-data.js.map +1 -0
  4. package/dist-client/analysis/graph-viewer-style.d.ts +1 -0
  5. package/dist-client/analysis/graph-viewer-style.js +121 -0
  6. package/dist-client/analysis/graph-viewer-style.js.map +1 -0
  7. package/dist-client/analysis/graph-viewer.d.ts +36 -0
  8. package/dist-client/analysis/graph-viewer.js +294 -0
  9. package/dist-client/analysis/graph-viewer.js.map +1 -0
  10. package/dist-client/analysis/node.d.ts +4 -0
  11. package/dist-client/analysis/node.js +59 -0
  12. package/dist-client/analysis/node.js.map +1 -0
  13. package/dist-client/analysis/relationship.d.ts +4 -0
  14. package/dist-client/analysis/relationship.js +13 -0
  15. package/dist-client/analysis/relationship.js.map +1 -0
  16. package/dist-client/analysis/utils.d.ts +20 -0
  17. package/dist-client/analysis/utils.js +31 -0
  18. package/dist-client/analysis/utils.js.map +1 -0
  19. package/dist-client/bootstrap.d.ts +3 -0
  20. package/dist-client/bootstrap.js +30 -0
  21. package/dist-client/bootstrap.js.map +1 -0
  22. package/dist-client/editors/entity-editor.d.ts +10 -0
  23. package/dist-client/editors/entity-editor.js +46 -0
  24. package/dist-client/editors/entity-editor.js.map +1 -0
  25. package/dist-client/editors/entity-selector.d.ts +31 -0
  26. package/dist-client/editors/entity-selector.js +301 -0
  27. package/dist-client/editors/entity-selector.js.map +1 -0
  28. package/dist-client/editors/property-editor.d.ts +30 -0
  29. package/dist-client/editors/property-editor.js +105 -0
  30. package/dist-client/editors/property-editor.js.map +1 -0
  31. package/dist-client/editors/things-editor-db-procedure.d.ts +52 -0
  32. package/dist-client/editors/things-editor-db-procedure.js +495 -0
  33. package/dist-client/editors/things-editor-db-procedure.js.map +1 -0
  34. package/dist-client/editors/things-editor-entity-selector.d.ts +15 -0
  35. package/dist-client/editors/things-editor-entity-selector.js +94 -0
  36. package/dist-client/editors/things-editor-entity-selector.js.map +1 -0
  37. package/dist-client/editors/things-editor-http-body.d.ts +22 -0
  38. package/dist-client/editors/things-editor-http-body.js +137 -0
  39. package/dist-client/editors/things-editor-http-body.js.map +1 -0
  40. package/dist-client/editors/things-editor-http-headers.d.ts +29 -0
  41. package/dist-client/editors/things-editor-http-headers.js +167 -0
  42. package/dist-client/editors/things-editor-http-headers.js.map +1 -0
  43. package/dist-client/editors/things-editor-http-parameters.d.ts +29 -0
  44. package/dist-client/editors/things-editor-http-parameters.js +167 -0
  45. package/dist-client/editors/things-editor-http-parameters.js.map +1 -0
  46. package/dist-client/editors/things-editor-tag-scenarios.d.ts +32 -0
  47. package/dist-client/editors/things-editor-tag-scenarios.js +226 -0
  48. package/dist-client/editors/things-editor-tag-scenarios.js.map +1 -0
  49. package/dist-client/grist/connection-selector.d.ts +4 -0
  50. package/dist-client/grist/connection-selector.js +30 -0
  51. package/dist-client/grist/connection-selector.js.map +1 -0
  52. package/dist-client/grist/connector-selector.d.ts +4 -0
  53. package/dist-client/grist/connector-selector.js +30 -0
  54. package/dist-client/grist/connector-selector.js.map +1 -0
  55. package/dist-client/grist/dynamic-selector.d.ts +10 -0
  56. package/dist-client/grist/dynamic-selector.js +32 -0
  57. package/dist-client/grist/dynamic-selector.js.map +1 -0
  58. package/dist-client/grist/task-type-selector.d.ts +7 -0
  59. package/dist-client/grist/task-type-selector.js +58 -0
  60. package/dist-client/grist/task-type-selector.js.map +1 -0
  61. package/dist-client/index.d.ts +2 -0
  62. package/dist-client/index.js +3 -0
  63. package/dist-client/index.js.map +1 -0
  64. package/dist-client/pages/connection-importer.d.ts +10 -0
  65. package/dist-client/pages/connection-importer.js +102 -0
  66. package/dist-client/pages/connection-importer.js.map +1 -0
  67. package/dist-client/pages/connection.d.ts +64 -0
  68. package/dist-client/pages/connection.js +478 -0
  69. package/dist-client/pages/connection.js.map +1 -0
  70. package/dist-client/pages/integration-analysis.d.ts +24 -0
  71. package/dist-client/pages/integration-analysis.js +238 -0
  72. package/dist-client/pages/integration-analysis.js.map +1 -0
  73. package/dist-client/pages/integration-monitor.d.ts +28 -0
  74. package/dist-client/pages/integration-monitor.js +343 -0
  75. package/dist-client/pages/integration-monitor.js.map +1 -0
  76. package/dist-client/pages/scenario-detail.d.ts +2 -0
  77. package/dist-client/pages/scenario-detail.js +298 -0
  78. package/dist-client/pages/scenario-detail.js.map +1 -0
  79. package/dist-client/pages/scenario-importer.d.ts +10 -0
  80. package/dist-client/pages/scenario-importer.js +108 -0
  81. package/dist-client/pages/scenario-importer.js.map +1 -0
  82. package/dist-client/pages/scenario.d.ts +69 -0
  83. package/dist-client/pages/scenario.js +632 -0
  84. package/dist-client/pages/scenario.js.map +1 -0
  85. package/dist-client/pages/state-register.d.ts +50 -0
  86. package/dist-client/pages/state-register.js +278 -0
  87. package/dist-client/pages/state-register.js.map +1 -0
  88. package/dist-client/route.d.ts +1 -0
  89. package/dist-client/route.js +20 -0
  90. package/dist-client/route.js.map +1 -0
  91. package/dist-client/tsconfig.tsbuildinfo +1 -0
  92. package/dist-client/viewparts/connections-monitor.d.ts +10 -0
  93. package/dist-client/viewparts/connections-monitor.js +172 -0
  94. package/dist-client/viewparts/connections-monitor.js.map +1 -0
  95. package/dist-client/viewparts/monitoring-summary.d.ts +13 -0
  96. package/dist-client/viewparts/monitoring-summary.js +142 -0
  97. package/dist-client/viewparts/monitoring-summary.js.map +1 -0
  98. package/dist-client/viewparts/pending-q-monitor.d.ts +18 -0
  99. package/dist-client/viewparts/pending-q-monitor.js +248 -0
  100. package/dist-client/viewparts/pending-q-monitor.js.map +1 -0
  101. package/dist-client/viewparts/scenario-instance-log-view.d.ts +24 -0
  102. package/dist-client/viewparts/scenario-instance-log-view.js +141 -0
  103. package/dist-client/viewparts/scenario-instance-log-view.js.map +1 -0
  104. package/dist-client/viewparts/scenario-instance-monitor.d.ts +15 -0
  105. package/dist-client/viewparts/scenario-instance-monitor.js +173 -0
  106. package/dist-client/viewparts/scenario-instance-monitor.js.map +1 -0
  107. package/dist-client/viewparts/scenario-instance-view.d.ts +29 -0
  108. package/dist-client/viewparts/scenario-instance-view.js +263 -0
  109. package/dist-client/viewparts/scenario-instance-view.js.map +1 -0
  110. package/dist-client/viewparts/scenario-monitor.d.ts +16 -0
  111. package/dist-client/viewparts/scenario-monitor.js +285 -0
  112. package/dist-client/viewparts/scenario-monitor.js.map +1 -0
  113. package/dist-client/viewparts/scenarios-monitor.d.ts +16 -0
  114. package/dist-client/viewparts/scenarios-monitor.js +170 -0
  115. package/dist-client/viewparts/scenarios-monitor.js.map +1 -0
  116. package/dist-server/index.d.ts +0 -0
  117. package/dist-server/index.js +1 -0
  118. package/dist-server/index.js.map +1 -0
  119. package/dist-server/tsconfig.tsbuildinfo +1 -0
  120. package/package.json +6 -6
@@ -0,0 +1,298 @@
1
+ import { __decorate, __metadata, __rest } from "tslib";
2
+ import '@material/web/icon/icon.js';
3
+ import '@operato/data-grist/ox-grist.js';
4
+ import gql from 'graphql-tag';
5
+ import { css, html, LitElement } from 'lit';
6
+ import { customElement, property, query } from 'lit/decorators.js';
7
+ import { DataGrist } from '@operato/data-grist/ox-grist.js';
8
+ import { client } from '@operato/graphql';
9
+ import { HelpDecoratedRenderer } from '@operato/help/help-decorated-renderer.js';
10
+ import { i18next, localize } from '@operato/i18n';
11
+ import { isMobileDevice } from '@operato/utils';
12
+ import { CommonHeaderStyles } from '@operato/styles';
13
+ const SelectFields = ['name', 'description', 'sequence', 'task', 'connection', 'params', 'result', 'skip', 'log'];
14
+ let ScenarioDetail = class ScenarioDetail extends localize(i18next)(LitElement) {
15
+ render() {
16
+ return html `
17
+ <ox-grist
18
+ .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
19
+ .config=${this.gristConfig}
20
+ .fetchHandler=${this.fetchHandler.bind(this)}
21
+ ></ox-grist>
22
+ <div class="footer">
23
+ <div filler></div>
24
+ <button danger @click=${this._deleteSteps.bind(this)}>
25
+ <md-icon>delete</md-icon>${i18next.t('button.delete')}
26
+ </button>
27
+ <button @click=${this._updateSteps.bind(this)} done><md-icon>save</md-icon>${i18next.t('button.save')}</button>
28
+ </div>
29
+ `;
30
+ }
31
+ async firstUpdated() {
32
+ this.gristConfig = {
33
+ list: { fields: ['name', 'description', 'task'] },
34
+ columns: [
35
+ { type: 'gutter', gutterName: 'row-selector', multiple: true, fixed: true },
36
+ {
37
+ type: 'gutter',
38
+ gutterName: 'button',
39
+ fixed: true,
40
+ icon: 'add',
41
+ handlers: {
42
+ click: 'record-copy'
43
+ }
44
+ },
45
+ { type: 'gutter', gutterName: 'sequence', fixed: true },
46
+ {
47
+ type: 'gutter',
48
+ gutterName: 'button',
49
+ fixed: true,
50
+ icon: 'arrow_upward',
51
+ handlers: {
52
+ click: 'move-up'
53
+ }
54
+ },
55
+ {
56
+ type: 'gutter',
57
+ gutterName: 'button',
58
+ fixed: true,
59
+ icon: 'arrow_downward',
60
+ handlers: {
61
+ click: 'move-down'
62
+ }
63
+ },
64
+ {
65
+ type: 'number',
66
+ name: 'sequence',
67
+ fixed: true,
68
+ hidden: true
69
+ },
70
+ {
71
+ type: 'string',
72
+ name: 'id',
73
+ hidden: true
74
+ },
75
+ {
76
+ type: 'string',
77
+ name: 'name',
78
+ fixed: true,
79
+ header: i18next.t('field.name'),
80
+ record: {
81
+ editable: true
82
+ },
83
+ width: 140
84
+ },
85
+ {
86
+ type: 'string',
87
+ name: 'description',
88
+ header: i18next.t('field.description'),
89
+ record: {
90
+ editable: true
91
+ },
92
+ width: 240
93
+ },
94
+ {
95
+ type: 'boolean',
96
+ name: 'result',
97
+ header: i18next.t('field.result'),
98
+ record: {
99
+ editable: true
100
+ },
101
+ width: 80
102
+ },
103
+ {
104
+ type: 'boolean',
105
+ name: 'skip',
106
+ header: i18next.t('field.skip'),
107
+ record: {
108
+ editable: true
109
+ },
110
+ width: 80
111
+ },
112
+ {
113
+ type: 'boolean',
114
+ name: 'log',
115
+ header: i18next.t('field.log'),
116
+ record: {
117
+ editable: true
118
+ },
119
+ width: 80
120
+ },
121
+ {
122
+ type: 'connection',
123
+ name: 'connection',
124
+ header: i18next.t('field.connection'),
125
+ record: {
126
+ editable: true
127
+ },
128
+ width: 160
129
+ },
130
+ {
131
+ type: 'task-type',
132
+ name: 'task',
133
+ header: i18next.t('field.task'),
134
+ record: {
135
+ renderer: HelpDecoratedRenderer,
136
+ editable: true,
137
+ help: value => { var _a, _b; return (_b = (_a = this.taskTypes) === null || _a === void 0 ? void 0 : _a[value]) === null || _b === void 0 ? void 0 : _b.help; },
138
+ connectionName: async (value, column, record, row, field) => {
139
+ /* return connectionName */
140
+ return record.connection;
141
+ }
142
+ },
143
+ width: 200
144
+ },
145
+ {
146
+ type: 'parameters',
147
+ name: 'params',
148
+ header: i18next.t('field.params'),
149
+ record: {
150
+ editable: true,
151
+ options: (value, column, record, row, field) => {
152
+ var _a;
153
+ var { name, parameterSpec: spec, help } = record.task ? (_a = this.taskTypes) === null || _a === void 0 ? void 0 : _a[record.task] : {};
154
+ const context = this.grist;
155
+ return { name, spec, help, context };
156
+ },
157
+ renderer: 'json5'
158
+ },
159
+ width: 300
160
+ }
161
+ ],
162
+ rows: {
163
+ selectable: {
164
+ multiple: true
165
+ }
166
+ },
167
+ pagination: {
168
+ infinite: true
169
+ },
170
+ sorters: [
171
+ {
172
+ name: 'sequence'
173
+ }
174
+ ]
175
+ };
176
+ }
177
+ async fetchHandler({ page, limit, sorters = [] }) {
178
+ const response = await client.query({
179
+ query: gql `
180
+ query {
181
+ steps (
182
+ filters: [{
183
+ name: "scenarioId",
184
+ value: "${this.scenario.id}",
185
+ operator: "eq"
186
+ }],
187
+ sortings: { name: "sequence" }
188
+ ) {
189
+ items {
190
+ id
191
+ ${SelectFields.join('\n')}
192
+ }
193
+ total
194
+ }
195
+ }
196
+ `
197
+ });
198
+ return {
199
+ total: response.data.steps.total || 0,
200
+ records: response.data.steps.items || []
201
+ };
202
+ }
203
+ async fetchTaskType(name) {
204
+ const response = await client.query({
205
+ query: gql `
206
+ query ($name: String!) {
207
+ taskType(name: $name) {
208
+ name
209
+ description
210
+ help
211
+ parameterSpec {
212
+ type
213
+ name
214
+ label
215
+ placeholder
216
+ property
217
+ styles
218
+ }
219
+ }
220
+ }
221
+ `,
222
+ variables: {
223
+ name
224
+ }
225
+ });
226
+ return response.data.taskType;
227
+ }
228
+ async _updateSteps() {
229
+ let patches = this.grist.dirtyData.records;
230
+ if (patches) {
231
+ patches = patches.map(patch => {
232
+ const _a = patch.__origin__, _b = _a === void 0 ? {} : _a, { __typename } = _b, patchField = __rest(_b, ["__typename"]), { __dirtyfields__ } = patch;
233
+ for (let key in __dirtyfields__) {
234
+ patchField[key] = __dirtyfields__[key].after;
235
+ }
236
+ return patchField;
237
+ });
238
+ const response = await client.mutate({
239
+ mutation: gql `
240
+ mutation ($scenarioId: String!, $patches: [StepPatch!]!) {
241
+ updateMultipleStep(scenarioId: $scenarioId, patches: $patches) {
242
+ name
243
+ }
244
+ }
245
+ `,
246
+ variables: {
247
+ scenarioId: this.scenario.id,
248
+ patches
249
+ }
250
+ });
251
+ if (!response.errors) {
252
+ this.grist.fetch();
253
+ this.requestRefresh();
254
+ }
255
+ }
256
+ }
257
+ async _deleteSteps() {
258
+ this.grist.deleteSelectedRecords(true);
259
+ }
260
+ requestRefresh() {
261
+ this.dispatchEvent(new CustomEvent('requestRefresh'));
262
+ }
263
+ };
264
+ ScenarioDetail.styles = [
265
+ CommonHeaderStyles,
266
+ css `
267
+ :host {
268
+ display: flex;
269
+ flex-direction: column;
270
+
271
+ background-color: var(--md-sys-color-surface);
272
+ }
273
+
274
+ ox-grist {
275
+ flex: 1;
276
+ }
277
+ `
278
+ ];
279
+ __decorate([
280
+ property({ type: Object }),
281
+ __metadata("design:type", Object)
282
+ ], ScenarioDetail.prototype, "scenario", void 0);
283
+ __decorate([
284
+ property({ type: Object }),
285
+ __metadata("design:type", Object)
286
+ ], ScenarioDetail.prototype, "gristConfig", void 0);
287
+ __decorate([
288
+ property({ type: Object }),
289
+ __metadata("design:type", Object)
290
+ ], ScenarioDetail.prototype, "taskTypes", void 0);
291
+ __decorate([
292
+ query('ox-grist'),
293
+ __metadata("design:type", DataGrist)
294
+ ], ScenarioDetail.prototype, "grist", void 0);
295
+ ScenarioDetail = __decorate([
296
+ customElement('scenario-detail')
297
+ ], ScenarioDetail);
298
+ //# sourceMappingURL=scenario-detail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-detail.js","sourceRoot":"","sources":["../../client/pages/scenario-detail.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/data-grist/ox-grist.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport { DataGrist } from '@operato/data-grist/ox-grist.js'\nimport { client } from '@operato/graphql'\nimport { HelpDecoratedRenderer } from '@operato/help/help-decorated-renderer.js'\nimport { i18next, localize } from '@operato/i18n'\nimport { isMobileDevice } from '@operato/utils'\nimport { CommonHeaderStyles } from '@operato/styles'\nimport { FetchOption } from '@operato/data-grist'\n\nconst SelectFields = ['name', 'description', 'sequence', 'task', 'connection', 'params', 'result', 'skip', 'log']\n\n@customElement('scenario-detail')\nclass ScenarioDetail extends localize(i18next)(LitElement) {\n static styles = [\n CommonHeaderStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: var(--md-sys-color-surface);\n }\n\n ox-grist {\n flex: 1;\n }\n `\n ]\n\n @property({ type: Object }) scenario: any\n @property({ type: Object }) gristConfig: any\n @property({ type: Object }) taskTypes: any\n\n @query('ox-grist') grist!: DataGrist\n\n render() {\n return html`\n <ox-grist\n .mode=${isMobileDevice() ? 'LIST' : 'GRID'}\n .config=${this.gristConfig}\n .fetchHandler=${this.fetchHandler.bind(this)}\n ></ox-grist>\n <div class=\"footer\">\n <div filler></div>\n <button danger @click=${this._deleteSteps.bind(this)}>\n <md-icon>delete</md-icon>${i18next.t('button.delete')}\n </button>\n <button @click=${this._updateSteps.bind(this)} done><md-icon>save</md-icon>${i18next.t('button.save')}</button>\n </div>\n `\n }\n\n async firstUpdated() {\n this.gristConfig = {\n list: { fields: ['name', 'description', 'task'] },\n columns: [\n { type: 'gutter', gutterName: 'row-selector', multiple: true, fixed: true },\n {\n type: 'gutter',\n gutterName: 'button',\n fixed: true,\n icon: 'add',\n handlers: {\n click: 'record-copy'\n }\n },\n { type: 'gutter', gutterName: 'sequence', fixed: true },\n {\n type: 'gutter',\n gutterName: 'button',\n fixed: true,\n icon: 'arrow_upward',\n handlers: {\n click: 'move-up'\n }\n },\n {\n type: 'gutter',\n gutterName: 'button',\n fixed: true,\n icon: 'arrow_downward',\n handlers: {\n click: 'move-down'\n }\n },\n {\n type: 'number',\n name: 'sequence',\n fixed: true,\n hidden: true\n },\n {\n type: 'string',\n name: 'id',\n hidden: true\n },\n {\n type: 'string',\n name: 'name',\n fixed: true,\n header: i18next.t('field.name'),\n record: {\n editable: true\n },\n width: 140\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: {\n editable: true\n },\n width: 240\n },\n {\n type: 'boolean',\n name: 'result',\n header: i18next.t('field.result'),\n record: {\n editable: true\n },\n width: 80\n },\n {\n type: 'boolean',\n name: 'skip',\n header: i18next.t('field.skip'),\n record: {\n editable: true\n },\n width: 80\n },\n {\n type: 'boolean',\n name: 'log',\n header: i18next.t('field.log'),\n record: {\n editable: true\n },\n width: 80\n },\n {\n type: 'connection',\n name: 'connection',\n header: i18next.t('field.connection'),\n record: {\n editable: true\n },\n width: 160\n },\n {\n type: 'task-type',\n name: 'task',\n header: i18next.t('field.task'),\n record: {\n renderer: HelpDecoratedRenderer,\n editable: true,\n help: value => this.taskTypes?.[value]?.help,\n connectionName: async (value, column, record, row, field) => {\n /* return connectionName */\n return record.connection\n }\n },\n width: 200\n },\n {\n type: 'parameters',\n name: 'params',\n header: i18next.t('field.params'),\n record: {\n editable: true,\n options: (value, column, record, row, field) => {\n var { name, parameterSpec: spec, help } = record.task ? this.taskTypes?.[record.task] : ({} as any)\n const context = this.grist\n return { name, spec, help, context }\n },\n renderer: 'json5'\n },\n width: 300\n }\n ],\n rows: {\n selectable: {\n multiple: true\n }\n },\n pagination: {\n infinite: true\n },\n sorters: [\n {\n name: 'sequence'\n }\n ]\n }\n }\n\n async fetchHandler({ page, limit, sorters = [] }: FetchOption) {\n const response = await client.query({\n query: gql`\n query {\n steps ( \n filters: [{ \n name: \"scenarioId\",\n value: \"${this.scenario.id}\",\n operator: \"eq\" \n }],\n sortings: { name: \"sequence\" }\n ) {\n items {\n id\n ${SelectFields.join('\\n')}\n }\n total\n }\n }\n `\n })\n\n return {\n total: response.data.steps.total || 0,\n records: response.data.steps.items || []\n }\n }\n\n async fetchTaskType(name) {\n const response = await client.query({\n query: gql`\n query ($name: String!) {\n taskType(name: $name) {\n name\n description\n help\n parameterSpec {\n type\n name\n label\n placeholder\n property\n styles\n }\n }\n }\n `,\n variables: {\n name\n }\n })\n\n return response.data.taskType\n }\n\n async _updateSteps() {\n let patches = this.grist.dirtyData.records\n if (patches) {\n patches = patches.map(patch => {\n const { __origin__: { __typename, ...patchField } = {}, __dirtyfields__ } = patch\n\n for (let key in __dirtyfields__) {\n patchField[key] = __dirtyfields__[key].after\n }\n\n return patchField\n })\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($scenarioId: String!, $patches: [StepPatch!]!) {\n updateMultipleStep(scenarioId: $scenarioId, patches: $patches) {\n name\n }\n }\n `,\n variables: {\n scenarioId: this.scenario.id,\n patches\n }\n })\n\n if (!response.errors) {\n this.grist.fetch()\n this.requestRefresh()\n }\n }\n }\n\n async _deleteSteps() {\n this.grist.deleteSelectedRecords(true)\n }\n\n requestRefresh() {\n this.dispatchEvent(new CustomEvent('requestRefresh'))\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import '@material/web/icon/icon.js';
2
+ import '@operato/data-grist';
3
+ import { LitElement } from 'lit';
4
+ export declare class ScenarioImporter extends LitElement {
5
+ static styles: import("lit").CSSResult[];
6
+ scenarios: any;
7
+ columns: any;
8
+ render(): import("lit-html").TemplateResult<1>;
9
+ save(): Promise<void>;
10
+ }
@@ -0,0 +1,108 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import '@material/web/icon/icon.js';
3
+ import '@operato/data-grist';
4
+ import gql from 'graphql-tag';
5
+ import { css, html, LitElement } from 'lit';
6
+ import { customElement, property } from 'lit/decorators.js';
7
+ import { client } from '@operato/graphql';
8
+ import { i18next } from '@operato/i18n';
9
+ import { isMobileDevice } from '@operato/utils';
10
+ import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles';
11
+ let ScenarioImporter = class ScenarioImporter extends LitElement {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.columns = {
15
+ list: { fields: ['name', 'description'] },
16
+ pagination: { infinite: true },
17
+ columns: [
18
+ {
19
+ type: 'string',
20
+ name: 'name',
21
+ header: i18next.t('field.name'),
22
+ width: 150
23
+ },
24
+ {
25
+ type: 'string',
26
+ name: 'type',
27
+ header: i18next.t('field.type'),
28
+ width: 100
29
+ },
30
+ {
31
+ type: 'string',
32
+ name: 'description',
33
+ header: i18next.t('field.description'),
34
+ width: 200
35
+ },
36
+ {
37
+ type: 'crontab',
38
+ name: 'schedule',
39
+ header: i18next.t('field.schedule'),
40
+ width: 80
41
+ },
42
+ {
43
+ type: 'string',
44
+ name: 'timezone',
45
+ header: i18next.t('field.timezone'),
46
+ width: 120
47
+ }
48
+ ]
49
+ };
50
+ }
51
+ render() {
52
+ return html `
53
+ <ox-grist
54
+ .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
55
+ .config=${this.columns}
56
+ .data=${{ records: this.scenarios }}
57
+ ></ox-grist>
58
+
59
+ <div class="footer">
60
+ <div filler></div>
61
+ <button @click=${this.save.bind(this)} done><md-icon>save</md-icon>${i18next.t('button.save')}</button>
62
+ </div>
63
+ `;
64
+ }
65
+ async save() {
66
+ var _a;
67
+ const response = await client.mutate({
68
+ mutation: gql `
69
+ mutation importScenarios($scenarios: [ScenarioPatch!]!) {
70
+ importScenarios(scenarios: $scenarios)
71
+ }
72
+ `,
73
+ variables: { scenarios: this.scenarios }
74
+ });
75
+ if ((_a = response.errors) === null || _a === void 0 ? void 0 : _a.length)
76
+ return;
77
+ this.dispatchEvent(new CustomEvent('imported'));
78
+ }
79
+ };
80
+ ScenarioImporter.styles = [
81
+ CommonHeaderStyles,
82
+ CommonGristStyles,
83
+ css `
84
+ :host {
85
+ display: flex;
86
+ flex-direction: column;
87
+
88
+ background-color: var(--md-sys-color-surface);
89
+ }
90
+
91
+ ox-grist {
92
+ flex: 1;
93
+ }
94
+ `
95
+ ];
96
+ __decorate([
97
+ property({ type: Array }),
98
+ __metadata("design:type", Object)
99
+ ], ScenarioImporter.prototype, "scenarios", void 0);
100
+ __decorate([
101
+ property({ type: Object }),
102
+ __metadata("design:type", Object)
103
+ ], ScenarioImporter.prototype, "columns", void 0);
104
+ ScenarioImporter = __decorate([
105
+ customElement('scenario-importer')
106
+ ], ScenarioImporter);
107
+ export { ScenarioImporter };
108
+ //# sourceMappingURL=scenario-importer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-importer.js","sourceRoot":"","sources":["../../client/pages/scenario-importer.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@operato/data-grist'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { isMobileDevice } from '@operato/utils'\nimport { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'\n\n@customElement('scenario-importer')\nexport class ScenarioImporter extends LitElement {\n static styles = [\n CommonHeaderStyles,\n CommonGristStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: var(--md-sys-color-surface);\n }\n\n ox-grist {\n flex: 1;\n }\n `\n ]\n\n @property({ type: Array }) scenarios: any\n @property({ type: Object }) columns: any = {\n list: { fields: ['name', 'description'] },\n pagination: { infinite: true },\n columns: [\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n width: 150\n },\n {\n type: 'string',\n name: 'type',\n header: i18next.t('field.type'),\n width: 100\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n width: 200\n },\n {\n type: 'crontab',\n name: 'schedule',\n header: i18next.t('field.schedule'),\n width: 80\n },\n {\n type: 'string',\n name: 'timezone',\n header: i18next.t('field.timezone'),\n width: 120\n }\n ]\n }\n\n render() {\n return html`\n <ox-grist\n .mode=${isMobileDevice() ? 'LIST' : 'GRID'}\n .config=${this.columns}\n .data=${{ records: this.scenarios }}\n ></ox-grist>\n\n <div class=\"footer\">\n <div filler></div>\n <button @click=${this.save.bind(this)} done><md-icon>save</md-icon>${i18next.t('button.save')}</button>\n </div>\n `\n }\n\n async save() {\n const response = await client.mutate({\n mutation: gql`\n mutation importScenarios($scenarios: [ScenarioPatch!]!) {\n importScenarios(scenarios: $scenarios)\n }\n `,\n variables: { scenarios: this.scenarios }\n })\n\n if (response.errors?.length) return\n\n this.dispatchEvent(new CustomEvent('imported'))\n }\n}\n"]}
@@ -0,0 +1,69 @@
1
+ import '@operato/data-grist';
2
+ import './scenario-detail.js';
3
+ import './scenario-importer.js';
4
+ import { DataGrist } from '@operato/data-grist/ox-grist.js';
5
+ import { PageView } from '@operato/shell';
6
+ import { FetchOption } from '@operato/data-grist';
7
+ declare const Scenario_base: (new (...args: any[]) => {
8
+ _storeUnsubscribe: import("redux").Unsubscribe;
9
+ connectedCallback(): void;
10
+ disconnectedCallback(): void;
11
+ stateChanged(_state: unknown): void;
12
+ readonly isConnected: boolean;
13
+ }) & (new (...args: any[]) => {
14
+ __preferenceProviders: {
15
+ [element: string]: import("@operato/p13n").PagePreferenceProvider;
16
+ };
17
+ getPagePreferenceProvider(element: string): import("@operato/p13n").PagePreferenceProvider | undefined;
18
+ }) & (new (...args: any[]) => import("lit").LitElement) & typeof PageView;
19
+ export declare class Scenario extends Scenario_base {
20
+ static get styles(): import("lit").CSSResult[];
21
+ active: boolean;
22
+ gristConfig: any;
23
+ taskTypes: any;
24
+ grist: DataGrist;
25
+ get context(): {
26
+ title: string;
27
+ search: {
28
+ handler: (search: any) => void;
29
+ value: string;
30
+ };
31
+ help: string;
32
+ actions: {
33
+ icon: string;
34
+ emphasis: {
35
+ raised: boolean;
36
+ outlined: boolean;
37
+ dense: boolean;
38
+ danger: boolean;
39
+ };
40
+ title: string;
41
+ action: () => void;
42
+ }[];
43
+ exportable: {
44
+ name: string;
45
+ data: () => Promise<{}[]>;
46
+ };
47
+ importable: {
48
+ handler: (records: any) => Promise<void>;
49
+ };
50
+ };
51
+ render(): import("lit-html").TemplateResult<1>;
52
+ pageInitialized(lifecycle: any): Promise<void>;
53
+ pageUpdated(changes: any, lifecycle: any): Promise<void>;
54
+ fetchHandler({ page, limit, sortings, filters }: FetchOption): Promise<{
55
+ total: any;
56
+ records: any;
57
+ }>;
58
+ fetchTaskTypes(): Promise<void>;
59
+ _deleteScenario(): Promise<void>;
60
+ _copyScenario(): Promise<void>;
61
+ _updateScenario(): Promise<void>;
62
+ startScenario(record: any): Promise<void>;
63
+ stopScenario(record: any): Promise<void>;
64
+ startScenarioSchedule(record: any): Promise<void>;
65
+ stopScenarioSchedule(record: any): Promise<void>;
66
+ exportHandler(): Promise<{}[]>;
67
+ importHandler(records: any): Promise<void>;
68
+ }
69
+ export {};