@things-factory/integration-ui 6.1.66 → 6.1.71

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 (113) hide show
  1. package/client/editors/{entity-editor.js → entity-editor.ts} +2 -2
  2. package/client/editors/{entity-selector.js → entity-selector.ts} +45 -57
  3. package/client/editors/{property-editor.js → property-editor.ts} +1 -0
  4. package/client/editors/{things-editor-entity-selector.js → things-editor-entity-selector.ts} +27 -31
  5. package/client/editors/{things-editor-http-body.js → things-editor-http-body.ts} +43 -48
  6. package/client/editors/{things-editor-http-headers.js → things-editor-http-headers.ts} +48 -58
  7. package/client/editors/{things-editor-http-parameters.js → things-editor-http-parameters.ts} +48 -58
  8. package/client/grist/{connection-selector.js → connection-selector.ts} +2 -2
  9. package/client/grist/{connector-selector.js → connector-selector.ts} +2 -2
  10. package/client/grist/{dynamic-selector.js → dynamic-selector.ts} +9 -7
  11. package/client/grist/{task-type-selector.js → task-type-selector.ts} +4 -2
  12. package/client/index.ts +2 -0
  13. package/client/pages/{connection.js → connection.ts} +39 -45
  14. package/client/pages/{integration-monitor.js → integration-monitor.ts} +54 -56
  15. package/client/pages/{scenario-detail.js → scenario-detail.ts} +41 -47
  16. package/client/pages/scenario-importer.ts +107 -0
  17. package/client/pages/{scenario.js → scenario.ts} +15 -21
  18. package/client/viewparts/{connections-monitor.js → connections-monitor.ts} +76 -82
  19. package/client/viewparts/{monitoring-summary.js → monitoring-summary.ts} +55 -61
  20. package/client/viewparts/{pending-q-monitor.js → pending-q-monitor.ts} +110 -114
  21. package/client/viewparts/{scenario-instance-log-view.js → scenario-instance-log-view.ts} +31 -35
  22. package/client/viewparts/{scenario-instance-monitor.js → scenario-instance-monitor.ts} +67 -73
  23. package/client/viewparts/{scenario-instance-view.js → scenario-instance-view.ts} +100 -104
  24. package/client/viewparts/{scenario-monitor.js → scenario-monitor.ts} +143 -149
  25. package/client/viewparts/scenarios-monitor.ts +147 -0
  26. package/dist-client/bootstrap.d.ts +4 -0
  27. package/dist-client/bootstrap.js +29 -0
  28. package/dist-client/bootstrap.js.map +1 -0
  29. package/dist-client/editors/entity-editor.d.ts +10 -0
  30. package/dist-client/editors/entity-editor.js +47 -0
  31. package/dist-client/editors/entity-editor.js.map +1 -0
  32. package/dist-client/editors/entity-selector.d.ts +34 -0
  33. package/dist-client/editors/entity-selector.js +305 -0
  34. package/dist-client/editors/entity-selector.js.map +1 -0
  35. package/dist-client/editors/property-editor.d.ts +20 -0
  36. package/dist-client/editors/property-editor.js +61 -0
  37. package/dist-client/editors/property-editor.js.map +1 -0
  38. package/dist-client/editors/things-editor-entity-selector.d.ts +15 -0
  39. package/dist-client/editors/things-editor-entity-selector.js +87 -0
  40. package/dist-client/editors/things-editor-entity-selector.js.map +1 -0
  41. package/dist-client/editors/things-editor-http-body.d.ts +22 -0
  42. package/dist-client/editors/things-editor-http-body.js +130 -0
  43. package/dist-client/editors/things-editor-http-body.js.map +1 -0
  44. package/dist-client/editors/things-editor-http-headers.d.ts +29 -0
  45. package/dist-client/editors/things-editor-http-headers.js +160 -0
  46. package/dist-client/editors/things-editor-http-headers.js.map +1 -0
  47. package/dist-client/editors/things-editor-http-parameters.d.ts +29 -0
  48. package/dist-client/editors/things-editor-http-parameters.js +160 -0
  49. package/dist-client/editors/things-editor-http-parameters.js.map +1 -0
  50. package/dist-client/grist/connection-selector.d.ts +5 -0
  51. package/dist-client/grist/connection-selector.js +31 -0
  52. package/dist-client/grist/connection-selector.js.map +1 -0
  53. package/dist-client/grist/connector-selector.d.ts +5 -0
  54. package/dist-client/grist/connector-selector.js +31 -0
  55. package/dist-client/grist/connector-selector.js.map +1 -0
  56. package/dist-client/grist/dynamic-selector.d.ts +8 -0
  57. package/dist-client/grist/dynamic-selector.js +33 -0
  58. package/dist-client/grist/dynamic-selector.js.map +1 -0
  59. package/dist-client/grist/task-type-selector.d.ts +7 -0
  60. package/dist-client/grist/task-type-selector.js +58 -0
  61. package/dist-client/grist/task-type-selector.js.map +1 -0
  62. package/dist-client/index.d.ts +2 -0
  63. package/dist-client/index.js +3 -0
  64. package/dist-client/index.js.map +1 -0
  65. package/dist-client/pages/connection.d.ts +53 -0
  66. package/dist-client/pages/connection.js +429 -0
  67. package/dist-client/pages/connection.js.map +1 -0
  68. package/dist-client/pages/integration-monitor.d.ts +28 -0
  69. package/dist-client/pages/integration-monitor.js +340 -0
  70. package/dist-client/pages/integration-monitor.js.map +1 -0
  71. package/dist-client/pages/scenario-detail.d.ts +1 -0
  72. package/dist-client/pages/scenario-detail.js +303 -0
  73. package/dist-client/pages/scenario-detail.js.map +1 -0
  74. package/dist-client/pages/scenario-importer.d.ts +9 -0
  75. package/dist-client/pages/scenario-importer.js +116 -0
  76. package/dist-client/pages/scenario-importer.js.map +1 -0
  77. package/dist-client/pages/scenario.d.ts +68 -0
  78. package/dist-client/pages/scenario.js +582 -0
  79. package/dist-client/pages/scenario.js.map +1 -0
  80. package/dist-client/route.d.ts +1 -0
  81. package/dist-client/route.js +14 -0
  82. package/dist-client/route.js.map +1 -0
  83. package/dist-client/tsconfig.tsbuildinfo +1 -0
  84. package/dist-client/viewparts/connections-monitor.d.ts +10 -0
  85. package/dist-client/viewparts/connections-monitor.js +169 -0
  86. package/dist-client/viewparts/connections-monitor.js.map +1 -0
  87. package/dist-client/viewparts/monitoring-summary.d.ts +12 -0
  88. package/dist-client/viewparts/monitoring-summary.js +135 -0
  89. package/dist-client/viewparts/monitoring-summary.js.map +1 -0
  90. package/dist-client/viewparts/pending-q-monitor.d.ts +17 -0
  91. package/dist-client/viewparts/pending-q-monitor.js +247 -0
  92. package/dist-client/viewparts/pending-q-monitor.js.map +1 -0
  93. package/dist-client/viewparts/scenario-instance-log-view.d.ts +21 -0
  94. package/dist-client/viewparts/scenario-instance-log-view.js +105 -0
  95. package/dist-client/viewparts/scenario-instance-log-view.js.map +1 -0
  96. package/dist-client/viewparts/scenario-instance-monitor.d.ts +15 -0
  97. package/dist-client/viewparts/scenario-instance-monitor.js +171 -0
  98. package/dist-client/viewparts/scenario-instance-monitor.js.map +1 -0
  99. package/dist-client/viewparts/scenario-instance-view.d.ts +29 -0
  100. package/dist-client/viewparts/scenario-instance-view.js +263 -0
  101. package/dist-client/viewparts/scenario-instance-view.js.map +1 -0
  102. package/dist-client/viewparts/scenario-monitor.d.ts +16 -0
  103. package/dist-client/viewparts/scenario-monitor.js +288 -0
  104. package/dist-client/viewparts/scenario-monitor.js.map +1 -0
  105. package/dist-client/viewparts/scenarios-monitor.d.ts +16 -0
  106. package/dist-client/viewparts/scenarios-monitor.js +167 -0
  107. package/dist-client/viewparts/scenarios-monitor.js.map +1 -0
  108. package/package.json +10 -7
  109. package/client/index.js +0 -0
  110. package/client/pages/scenario-importer.js +0 -118
  111. package/client/viewparts/scenarios-monitor.js +0 -153
  112. /package/client/{bootstrap.js → bootstrap.ts} +0 -0
  113. /package/client/{route.js → route.ts} +0 -0
@@ -0,0 +1,429 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import '@operato/data-grist/ox-grist.js';
3
+ import gql from 'graphql-tag';
4
+ import { css, html } from 'lit';
5
+ import { customElement, property, query } from 'lit/decorators.js';
6
+ import { connect } from 'pwa-helpers/connect-mixin';
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 { PageView, store } from '@operato/shell';
12
+ import { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles';
13
+ import { isMobileDevice } from '@operato/utils';
14
+ let Connection = class Connection extends connect(store)(localize(i18next)(PageView)) {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.active = false;
18
+ }
19
+ get context() {
20
+ var _a;
21
+ return {
22
+ search: {
23
+ handler: search => {
24
+ this.grist.searchText = search;
25
+ },
26
+ placeholder: i18next.t('text.connection list'),
27
+ value: ((_a = this.grist) === null || _a === void 0 ? void 0 : _a.searchText) || ''
28
+ },
29
+ // 필터가 설정되면, 아래 코멘트 해제
30
+ // filter: {
31
+ // handler: () => {
32
+ // const display = this.headroom.style.display
33
+ // this.headroom.style.display = display !== 'none' ? 'none' : 'flex'
34
+ // }
35
+ // },
36
+ help: 'integration/ui/connection',
37
+ actions: [
38
+ Object.assign({ title: i18next.t('button.save'), action: this._updateConnectionManager.bind(this) }, CommonButtonStyles.save),
39
+ Object.assign({ title: i18next.t('button.delete'), action: this._deleteConnections.bind(this) }, CommonButtonStyles.delete)
40
+ ]
41
+ };
42
+ }
43
+ render() {
44
+ return html `
45
+ <ox-grist
46
+ .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
47
+ .config=${this.gristConfig}
48
+ .fetchHandler=${this.fetchHandler.bind(this)}
49
+ >
50
+ </ox-grist>
51
+ `;
52
+ }
53
+ async pageInitialized() {
54
+ this.fetchConnectors();
55
+ this.gristConfig = {
56
+ list: { fields: ['name', 'description', 'type', 'active'] },
57
+ columns: [
58
+ { type: 'gutter', gutterName: 'sequence' },
59
+ { type: 'gutter', gutterName: 'row-selector', multiple: true },
60
+ {
61
+ type: 'gutter',
62
+ gutterName: 'button',
63
+ name: 'state',
64
+ icon: record => (!record ? 'link' : record.state == 'CONNECTED' ? 'link_off' : 'link'),
65
+ handlers: {
66
+ click: (columns, data, column, record, rowIndex) => {
67
+ if (!record || !record.name || record.__dirty__ == '+') {
68
+ return;
69
+ }
70
+ if (record.state == 'CONNECTED') {
71
+ this.disconnect(record);
72
+ }
73
+ else {
74
+ this.connect(record);
75
+ }
76
+ }
77
+ }
78
+ },
79
+ {
80
+ type: 'object',
81
+ name: 'domain',
82
+ hidden: true
83
+ },
84
+ {
85
+ type: 'string',
86
+ name: 'name',
87
+ label: true,
88
+ header: i18next.t('field.name'),
89
+ record: {
90
+ editable: true
91
+ },
92
+ filter: 'search',
93
+ sortable: true,
94
+ width: 150,
95
+ validation: function (after, before, record, column) {
96
+ /* connected 상태에서는 이름을 바꿀 수 없다. */
97
+ if (record.state == 'CONNECTED') {
98
+ document.dispatchEvent(new CustomEvent('notify', {
99
+ detail: {
100
+ level: 'warn',
101
+ message: 'connection name cannot be changed during connected.'
102
+ }
103
+ }));
104
+ return false;
105
+ }
106
+ return true;
107
+ }
108
+ },
109
+ {
110
+ type: 'string',
111
+ name: 'description',
112
+ label: true,
113
+ header: i18next.t('field.description'),
114
+ record: {
115
+ editable: true
116
+ },
117
+ filter: 'search',
118
+ width: 200
119
+ },
120
+ {
121
+ type: 'checkbox',
122
+ name: 'active',
123
+ label: true,
124
+ header: i18next.t('field.active'),
125
+ record: {
126
+ editable: true
127
+ },
128
+ sortable: true,
129
+ width: 60
130
+ },
131
+ {
132
+ type: 'connector',
133
+ name: 'type',
134
+ label: true,
135
+ header: i18next.t('field.type'),
136
+ record: {
137
+ renderer: HelpDecoratedRenderer,
138
+ editable: true,
139
+ help: value => { var _a, _b; return (_b = (_a = this.connectors) === null || _a === void 0 ? void 0 : _a[value]) === null || _b === void 0 ? void 0 : _b.help; }
140
+ },
141
+ filter: 'search',
142
+ sortable: true,
143
+ width: 200
144
+ },
145
+ {
146
+ type: 'string',
147
+ name: 'endpoint',
148
+ header: i18next.t('field.endpoint'),
149
+ record: {
150
+ editable: true
151
+ },
152
+ filter: 'search',
153
+ sortable: true,
154
+ width: 200
155
+ },
156
+ {
157
+ type: 'parameters',
158
+ name: 'params',
159
+ header: i18next.t('field.params'),
160
+ record: {
161
+ editable: true,
162
+ options: async (value, column, record, row, field) => {
163
+ var _a;
164
+ const { name, help, parameterSpec: spec } = record.type ? (_a = this.connectors) === null || _a === void 0 ? void 0 : _a[record.type] : {};
165
+ const context = this.grist;
166
+ return { name, help, spec, context };
167
+ },
168
+ renderer: 'json5'
169
+ },
170
+ width: 100
171
+ },
172
+ {
173
+ type: 'object',
174
+ name: 'updater',
175
+ header: i18next.t('field.updater'),
176
+ record: {
177
+ editable: false
178
+ },
179
+ sortable: true,
180
+ width: 120
181
+ },
182
+ {
183
+ type: 'datetime',
184
+ name: 'updatedAt',
185
+ header: i18next.t('field.updated_at'),
186
+ record: {
187
+ editable: false
188
+ },
189
+ sortable: true,
190
+ width: 180
191
+ }
192
+ ],
193
+ rows: {
194
+ selectable: {
195
+ multiple: true
196
+ }
197
+ },
198
+ sorters: [
199
+ {
200
+ name: 'name'
201
+ }
202
+ ]
203
+ };
204
+ }
205
+ async fetchHandler({ page, limit, sortings = [], filters = [] }) {
206
+ const response = await client.query({
207
+ query: gql `
208
+ query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
209
+ responses: connections(filters: $filters, pagination: $pagination, sortings: $sortings) {
210
+ items {
211
+ id
212
+ domain {
213
+ id
214
+ name
215
+ description
216
+ }
217
+ name
218
+ description
219
+ type
220
+ endpoint
221
+ active
222
+ state
223
+ params
224
+ updater {
225
+ id
226
+ name
227
+ description
228
+ }
229
+ updatedAt
230
+ }
231
+ total
232
+ }
233
+ }
234
+ `,
235
+ variables: {
236
+ filters,
237
+ pagination: { page, limit },
238
+ sortings
239
+ }
240
+ });
241
+ return {
242
+ total: response.data.responses.total || 0,
243
+ records: response.data.responses.items || []
244
+ };
245
+ }
246
+ async fetchConnectors() {
247
+ const response = await client.query({
248
+ query: gql `
249
+ query {
250
+ connectors {
251
+ items {
252
+ name
253
+ help
254
+ parameterSpec {
255
+ type
256
+ name
257
+ label
258
+ placeholder
259
+ property
260
+ }
261
+ }
262
+ }
263
+ }
264
+ `
265
+ });
266
+ if (!response.errors) {
267
+ this.connectors = response.data.connectors.items.reduce((connectors, connector) => {
268
+ connectors[connector.name] = connector;
269
+ return connectors;
270
+ }, {});
271
+ }
272
+ else {
273
+ console.error('fetch connectors error');
274
+ }
275
+ }
276
+ async _deleteConnections(name) {
277
+ if (confirm(i18next.t('text.sure_to_x', {
278
+ x: i18next.t('text.delete')
279
+ }))) {
280
+ const names = this.grist.selected.map(record => record.name);
281
+ if (names && names.length > 0) {
282
+ const response = await client.mutate({
283
+ mutation: gql `
284
+ mutation ($names: [String!]!) {
285
+ deleteConnections(names: $names)
286
+ }
287
+ `,
288
+ variables: {
289
+ names
290
+ }
291
+ });
292
+ if (!response.errors) {
293
+ this.grist.fetch();
294
+ await document.dispatchEvent(new CustomEvent('notify', {
295
+ detail: {
296
+ message: i18next.t('text.info_x_successfully', {
297
+ x: i18next.t('text.delete')
298
+ })
299
+ }
300
+ }));
301
+ }
302
+ }
303
+ }
304
+ }
305
+ async _updateConnectionManager() {
306
+ var patches = this.grist.dirtyRecords;
307
+ if (patches && patches.length) {
308
+ patches = patches.map(connection => {
309
+ let patchField = connection.id ? { id: connection.id } : {};
310
+ const dirtyFields = connection.__dirtyfields__;
311
+ for (let key in dirtyFields) {
312
+ patchField[key] = dirtyFields[key].after;
313
+ }
314
+ patchField.cuFlag = connection.__dirty__;
315
+ return patchField;
316
+ });
317
+ const response = await client.mutate({
318
+ mutation: gql `
319
+ mutation ($patches: [ConnectionPatch!]!) {
320
+ updateMultipleConnection(patches: $patches) {
321
+ name
322
+ }
323
+ }
324
+ `,
325
+ variables: {
326
+ patches
327
+ }
328
+ });
329
+ if (!response.errors)
330
+ this.grist.fetch();
331
+ }
332
+ }
333
+ async connect(record) {
334
+ var response = await client.mutate({
335
+ mutation: gql `
336
+ mutation ($name: String!) {
337
+ connectConnection(name: $name) {
338
+ state
339
+ }
340
+ }
341
+ `,
342
+ variables: {
343
+ name: record.name
344
+ }
345
+ });
346
+ var state = response.data.connectConnection.state;
347
+ record.state = state;
348
+ this.grist.refresh();
349
+ document.dispatchEvent(new CustomEvent('notify', {
350
+ detail: {
351
+ level: 'info',
352
+ message: `${state == 'CONNECTED' ? 'success' : 'fail'} to connect : ${record.name}`
353
+ }
354
+ }));
355
+ }
356
+ async disconnect(record) {
357
+ var response = await client.mutate({
358
+ mutation: gql `
359
+ mutation ($name: String!) {
360
+ disconnectConnection(name: $name) {
361
+ state
362
+ }
363
+ }
364
+ `,
365
+ variables: {
366
+ name: record.name
367
+ }
368
+ });
369
+ var state = response.data.disconnectConnection.state;
370
+ record.state = state;
371
+ this.grist.refresh();
372
+ document.dispatchEvent(new CustomEvent('notify', {
373
+ detail: {
374
+ level: 'info',
375
+ message: `${state == 'CONNECTED' ? 'fail' : 'success'} to disconnect : ${record.name}`
376
+ }
377
+ }));
378
+ }
379
+ };
380
+ Connection.styles = [
381
+ CommonGristStyles,
382
+ ScrollbarStyles,
383
+ css `
384
+ :host {
385
+ display: flex;
386
+ flex-direction: column;
387
+
388
+ overflow: hidden;
389
+ }
390
+
391
+ ox-grist {
392
+ overflow-y: auto;
393
+ flex: 1;
394
+ }
395
+
396
+ #filters {
397
+ display: flex;
398
+ flex-direction: row;
399
+ justify-content: space-between;
400
+
401
+ background-color: white;
402
+ }
403
+
404
+ #filters > * {
405
+ padding: var(--padding-default) var(--padding-wide);
406
+ }
407
+ `
408
+ ];
409
+ __decorate([
410
+ property({ type: Boolean }),
411
+ __metadata("design:type", Boolean)
412
+ ], Connection.prototype, "active", void 0);
413
+ __decorate([
414
+ property({ type: Object }),
415
+ __metadata("design:type", Object)
416
+ ], Connection.prototype, "gristConfig", void 0);
417
+ __decorate([
418
+ property({ type: Object }),
419
+ __metadata("design:type", Object)
420
+ ], Connection.prototype, "connectors", void 0);
421
+ __decorate([
422
+ query('ox-grist'),
423
+ __metadata("design:type", DataGrist)
424
+ ], Connection.prototype, "grist", void 0);
425
+ Connection = __decorate([
426
+ customElement('connection-page')
427
+ ], Connection);
428
+ export { Connection };
429
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../client/pages/connection.ts"],"names":[],"mappings":";AAAA,OAAO,iCAAiC,CAAA;AAExC,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AAChF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAGxC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAApE;;QA+BwB,WAAM,GAAY,KAAK,CAAA;IAqZtD,CAAC;IA/YC,IAAI,OAAO;;QACT,OAAO;YACL,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM,CAAC,EAAE;oBAChB,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAA;gBAChC,CAAC;gBACD,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC;gBAC9C,KAAK,EAAE,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,UAAU,KAAI,EAAE;aACpC;YACD,sBAAsB;YACtB,YAAY;YACZ,qBAAqB;YACrB,kDAAkD;YAClD,yEAAyE;YACzE,MAAM;YACN,KAAK;YACL,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE;gCAEL,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAC/B,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAC7C,kBAAkB,CAAC,IAAI;gCAG1B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,EACjC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IACvC,kBAAkB,CAAC,MAAM;aAE/B;SACF,CAAA;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;gBAEC,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;kBAChC,IAAI,CAAC,WAAW;wBACV,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;;KAG/C,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,eAAe,EAAE,CAAA;QAEtB,IAAI,CAAC,WAAW,GAAG;YACjB,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;YAC3D,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE;gBAC1C,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC9D;oBACE,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,QAAQ;oBACpB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;oBACtF,QAAQ,EAAE;wBACR,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;4BACjD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,GAAG,EAAE;gCACtD,OAAM;6BACP;4BACD,IAAI,MAAM,CAAC,KAAK,IAAI,WAAW,EAAE;gCAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;6BACxB;iCAAM;gCACL,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;6BACrB;wBACH,CAAC;qBACF;iBACF;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,IAAI;iBACb;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;oBAC/B,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;oBACV,UAAU,EAAE,UAAU,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;wBACjD,kCAAkC;wBAClC,IAAI,MAAM,CAAC,KAAK,IAAI,WAAW,EAAE;4BAC/B,QAAQ,CAAC,aAAa,CACpB,IAAI,WAAW,CAAC,QAAQ,EAAE;gCACxB,MAAM,EAAE;oCACN,KAAK,EAAE,MAAM;oCACb,OAAO,EAAE,qDAAqD;iCAC/D;6BACF,CAAC,CACH,CAAA;4BACD,OAAO,KAAK,CAAA;yBACb;wBACD,OAAO,IAAI,CAAA;oBACb,CAAC;iBACF;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;oBACtC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;oBACjC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;oBAC/B,MAAM,EAAE;wBACN,QAAQ,EAAE,qBAAqB;wBAC/B,QAAQ,EAAE,IAAI;wBACd,IAAI,EAAE,KAAK,CAAC,EAAE,eAAC,OAAA,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAG,KAAK,CAAC,0CAAE,IAAI,CAAA,EAAA;qBAC9C;oBACD,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;oBACnC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;qBACf;oBACD,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;oBACjC,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;wBACd,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;;4BACnD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,UAAU,0CAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,EAAU,CAAA;4BACtG,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;4BAC1B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;wBACtC,CAAC;wBACD,QAAQ,EAAE,OAAO;qBAClB;oBACD,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;oBAClC,MAAM,EAAE;wBACN,QAAQ,EAAE,KAAK;qBAChB;oBACD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC;oBACrC,MAAM,EAAE;wBACN,QAAQ,EAAE,KAAK;qBAChB;oBACD,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,GAAG;iBACX;aACF;YACD,IAAI,EAAE;gBACJ,UAAU,EAAE;oBACV,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;iBACb;aACF;SACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;QAC7D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAClC,KAAK,EAAE,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BT;YACD,SAAS,EAAE;gBACT,OAAO;gBACP,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC3B,QAAQ;aACT;SACF,CAAC,CAAA;QAEF,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;YACzC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;SAC7C,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAClC,KAAK,EAAE,GAAG,CAAA;;;;;;;;;;;;;;;;OAgBT;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE;gBAChF,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;gBACtC,OAAO,UAAU,CAAA;YACnB,CAAC,EAAE,EAAE,CAAC,CAAA;SACP;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;SACxC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAI;QAC3B,IACE,OAAO,CACL,OAAO,CAAC,CAAC,CAAC,gBAAgB,EAAE;YAC1B,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;SAC5B,CAAC,CACH,EACD;YACA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC5D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;oBACnC,QAAQ,EAAE,GAAG,CAAA;;;;WAIZ;oBACD,SAAS,EAAE;wBACT,KAAK;qBACN;iBACF,CAAC,CAAA;gBAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACpB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;oBAClB,MAAM,QAAQ,CAAC,aAAa,CAC1B,IAAI,WAAW,CAAC,QAAQ,EAAE;wBACxB,MAAM,EAAE;4BACN,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,0BAA0B,EAAE;gCAC7C,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;6BAC5B,CAAC;yBACH;qBACF,CAAC,CACH,CAAA;iBACF;aACF;SACF;IACH,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAA;QAErC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;YAC7B,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gBACjC,IAAI,UAAU,GAAQ,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;gBAChE,MAAM,WAAW,GAAG,UAAU,CAAC,eAAe,CAAA;gBAC9C,KAAK,IAAI,GAAG,IAAI,WAAW,EAAE;oBAC3B,UAAU,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAA;iBACzC;gBACD,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,SAAS,CAAA;gBAExC,OAAO,UAAU,CAAA;YACnB,CAAC,CAAC,CAAA;YAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACnC,QAAQ,EAAE,GAAG,CAAA;;;;;;SAMZ;gBACD,SAAS,EAAE;oBACT,OAAO;iBACR;aACF,CAAC,CAAA;YAEF,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;SACzC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAM;QAClB,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACjC,QAAQ,EAAE,GAAG,CAAA;;;;;;OAMZ;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB;SACF,CAAC,CAAA;QAEF,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAA;QAEjD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;QAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;QAEpB,QAAQ,CAAC,aAAa,CACpB,IAAI,WAAW,CAAC,QAAQ,EAAE;YACxB,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,iBAAiB,MAAM,CAAC,IAAI,EAAE;aACpF;SACF,CAAC,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAM;QACrB,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACjC,QAAQ,EAAE,GAAG,CAAA;;;;;;OAMZ;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB;SACF,CAAC,CAAA;QAEF,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAA;QAEpD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;QAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;QAEpB,QAAQ,CAAC,aAAa,CACpB,IAAI,WAAW,CAAC,QAAQ,EAAE;YACxB,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,oBAAoB,MAAM,CAAC,IAAI,EAAE;aACvF;SACF,CAAC,CACH,CAAA;IACH,CAAC;;AAlbM,iBAAM,GAAG;IACd,iBAAiB;IACjB,eAAe;IACf,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;KAwBF;CACF,CAAA;AAED;IAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;;0CAAwB;AACpD;IAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;+CAAiB;AAC5C;IAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;8CAAgB;AAE3C;IAAC,KAAK,CAAC,UAAU,CAAC;8BAAS,SAAS;yCAAA;AAnCzB,UAAU;IADtB,aAAa,CAAC,iBAAiB,CAAC;GACpB,UAAU,CAobtB;SApbY,UAAU","sourcesContent":["import '@operato/data-grist/ox-grist.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin'\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 { PageView, store } from '@operato/shell'\nimport { CommonButtonStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'\nimport { isMobileDevice } from '@operato/utils'\n\n@customElement('connection-page')\nexport class Connection extends connect(store)(localize(i18next)(PageView)) {\n static styles = [\n CommonGristStyles,\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n overflow: hidden;\n }\n\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n\n #filters {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n background-color: white;\n }\n\n #filters > * {\n padding: var(--padding-default) var(--padding-wide);\n }\n `\n ]\n\n @property({ type: Boolean }) active: boolean = false\n @property({ type: Object }) gristConfig: any\n @property({ type: Object }) connectors: any\n\n @query('ox-grist') grist!: DataGrist\n\n get context() {\n return {\n search: {\n handler: search => {\n this.grist.searchText = search\n },\n placeholder: i18next.t('text.connection list'),\n value: this.grist?.searchText || ''\n },\n // 필터가 설정되면, 아래 코멘트 해제\n // filter: {\n // handler: () => {\n // const display = this.headroom.style.display\n // this.headroom.style.display = display !== 'none' ? 'none' : 'flex'\n // }\n // },\n help: 'integration/ui/connection',\n actions: [\n {\n title: i18next.t('button.save'),\n action: this._updateConnectionManager.bind(this),\n ...CommonButtonStyles.save\n },\n {\n title: i18next.t('button.delete'),\n action: this._deleteConnections.bind(this),\n ...CommonButtonStyles.delete\n }\n ]\n }\n }\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 >\n </ox-grist>\n `\n }\n\n async pageInitialized() {\n this.fetchConnectors()\n\n this.gristConfig = {\n list: { fields: ['name', 'description', 'type', 'active'] },\n columns: [\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: true },\n {\n type: 'gutter',\n gutterName: 'button',\n name: 'state',\n icon: record => (!record ? 'link' : record.state == 'CONNECTED' ? 'link_off' : 'link'),\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n if (!record || !record.name || record.__dirty__ == '+') {\n return\n }\n if (record.state == 'CONNECTED') {\n this.disconnect(record)\n } else {\n this.connect(record)\n }\n }\n }\n },\n {\n type: 'object',\n name: 'domain',\n hidden: true\n },\n {\n type: 'string',\n name: 'name',\n label: true,\n header: i18next.t('field.name'),\n record: {\n editable: true\n },\n filter: 'search',\n sortable: true,\n width: 150,\n validation: function (after, before, record, column) {\n /* connected 상태에서는 이름을 바꿀 수 없다. */\n if (record.state == 'CONNECTED') {\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'warn',\n message: 'connection name cannot be changed during connected.'\n }\n })\n )\n return false\n }\n return true\n }\n },\n {\n type: 'string',\n name: 'description',\n label: true,\n header: i18next.t('field.description'),\n record: {\n editable: true\n },\n filter: 'search',\n width: 200\n },\n {\n type: 'checkbox',\n name: 'active',\n label: true,\n header: i18next.t('field.active'),\n record: {\n editable: true\n },\n sortable: true,\n width: 60\n },\n {\n type: 'connector',\n name: 'type',\n label: true,\n header: i18next.t('field.type'),\n record: {\n renderer: HelpDecoratedRenderer,\n editable: true,\n help: value => this.connectors?.[value]?.help\n },\n filter: 'search',\n sortable: true,\n width: 200\n },\n {\n type: 'string',\n name: 'endpoint',\n header: i18next.t('field.endpoint'),\n record: {\n editable: true\n },\n filter: 'search',\n sortable: true,\n width: 200\n },\n {\n type: 'parameters',\n name: 'params',\n header: i18next.t('field.params'),\n record: {\n editable: true,\n options: async (value, column, record, row, field) => {\n const { name, help, parameterSpec: spec } = record.type ? this.connectors?.[record.type] : ({} as any)\n const context = this.grist\n return { name, help, spec, context }\n },\n renderer: 'json5'\n },\n width: 100\n },\n {\n type: 'object',\n name: 'updater',\n header: i18next.t('field.updater'),\n record: {\n editable: false\n },\n sortable: true,\n width: 120\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: i18next.t('field.updated_at'),\n record: {\n editable: false\n },\n sortable: true,\n width: 180\n }\n ],\n rows: {\n selectable: {\n multiple: true\n }\n },\n sorters: [\n {\n name: 'name'\n }\n ]\n }\n }\n\n async fetchHandler({ page, limit, sortings = [], filters = [] }) {\n const response = await client.query({\n query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {\n responses: connections(filters: $filters, pagination: $pagination, sortings: $sortings) {\n items {\n id\n domain {\n id\n name\n description\n }\n name\n description\n type\n endpoint\n active\n state\n params\n updater {\n id\n name\n description\n }\n updatedAt\n }\n total\n }\n }\n `,\n variables: {\n filters,\n pagination: { page, limit },\n sortings\n }\n })\n\n return {\n total: response.data.responses.total || 0,\n records: response.data.responses.items || []\n }\n }\n\n async fetchConnectors() {\n const response = await client.query({\n query: gql`\n query {\n connectors {\n items {\n name\n help\n parameterSpec {\n type\n name\n label\n placeholder\n property\n }\n }\n }\n }\n `\n })\n\n if (!response.errors) {\n this.connectors = response.data.connectors.items.reduce((connectors, connector) => {\n connectors[connector.name] = connector\n return connectors\n }, {})\n } else {\n console.error('fetch connectors error')\n }\n }\n\n async _deleteConnections(name) {\n if (\n confirm(\n i18next.t('text.sure_to_x', {\n x: i18next.t('text.delete')\n })\n )\n ) {\n const names = this.grist.selected.map(record => record.name)\n if (names && names.length > 0) {\n const response = await client.mutate({\n mutation: gql`\n mutation ($names: [String!]!) {\n deleteConnections(names: $names)\n }\n `,\n variables: {\n names\n }\n })\n\n if (!response.errors) {\n this.grist.fetch()\n await document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n message: i18next.t('text.info_x_successfully', {\n x: i18next.t('text.delete')\n })\n }\n })\n )\n }\n }\n }\n }\n\n async _updateConnectionManager() {\n var patches = this.grist.dirtyRecords\n\n if (patches && patches.length) {\n patches = patches.map(connection => {\n let patchField: any = connection.id ? { id: connection.id } : {}\n const dirtyFields = connection.__dirtyfields__\n for (let key in dirtyFields) {\n patchField[key] = dirtyFields[key].after\n }\n patchField.cuFlag = connection.__dirty__\n\n return patchField\n })\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($patches: [ConnectionPatch!]!) {\n updateMultipleConnection(patches: $patches) {\n name\n }\n }\n `,\n variables: {\n patches\n }\n })\n\n if (!response.errors) this.grist.fetch()\n }\n }\n\n async connect(record) {\n var response = await client.mutate({\n mutation: gql`\n mutation ($name: String!) {\n connectConnection(name: $name) {\n state\n }\n }\n `,\n variables: {\n name: record.name\n }\n })\n\n var state = response.data.connectConnection.state\n\n record.state = state\n\n this.grist.refresh()\n\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'info',\n message: `${state == 'CONNECTED' ? 'success' : 'fail'} to connect : ${record.name}`\n }\n })\n )\n }\n\n async disconnect(record) {\n var response = await client.mutate({\n mutation: gql`\n mutation ($name: String!) {\n disconnectConnection(name: $name) {\n state\n }\n }\n `,\n variables: {\n name: record.name\n }\n })\n\n var state = response.data.disconnectConnection.state\n\n record.state = state\n\n this.grist.refresh()\n\n document.dispatchEvent(\n new CustomEvent('notify', {\n detail: {\n level: 'info',\n message: `${state == 'CONNECTED' ? 'fail' : 'success'} to disconnect : ${record.name}`\n }\n })\n )\n }\n}\n"]}
@@ -0,0 +1,28 @@
1
+ import '../viewparts/monitoring-summary';
2
+ import '../viewparts/pending-q-monitor';
3
+ import '../viewparts/scenarios-monitor';
4
+ import '../viewparts/connections-monitor';
5
+ import { PageView } from '@operato/shell';
6
+ declare const IntegrationMonitor_base: (new (...args: any[]) => import("lit").LitElement) & typeof PageView;
7
+ export declare class IntegrationMonitor extends IntegrationMonitor_base {
8
+ static ScenarioInstanceStatus: string[];
9
+ static styles: import("lit").CSSResult[];
10
+ scenarios: any;
11
+ pendings: any;
12
+ connections: any;
13
+ colorIndex: any;
14
+ scenarioInstanceStateSubscription: any;
15
+ scenarioQueueStateSubscription: any;
16
+ connectionStateSubscription: any;
17
+ get context(): {
18
+ title: string;
19
+ help: string;
20
+ };
21
+ render(): import("lit-html").TemplateResult<1>;
22
+ pageUpdated(changes: any): Promise<void>;
23
+ fetchScenarios(): Promise<void>;
24
+ fetchConnections(): Promise<void>;
25
+ startSubscribe(): Promise<void>;
26
+ stopSubscribe(): Promise<void>;
27
+ }
28
+ export {};