@things-factory/worklist 6.0.21 → 6.0.25

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 (112) hide show
  1. package/client/activity-summary-generator.ts +132 -0
  2. package/client/components/activity-starter-form.ts +89 -3
  3. package/client/index.ts +1 -0
  4. package/client/pages/installable-activity/installable-activity-list-page.ts +410 -0
  5. package/client/pages/installable-activity/installable-activity-model-item-list.ts +18 -0
  6. package/client/pages/todo/draft-list-page.ts +9 -0
  7. package/client/route.ts +4 -0
  8. package/dist-client/activity-summary-generator.d.ts +2 -0
  9. package/dist-client/activity-summary-generator.js +114 -0
  10. package/dist-client/activity-summary-generator.js.map +1 -0
  11. package/dist-client/components/activity-starter-form.d.ts +1 -0
  12. package/dist-client/components/activity-starter-form.js +66 -4
  13. package/dist-client/components/activity-starter-form.js.map +1 -1
  14. package/dist-client/index.d.ts +1 -0
  15. package/dist-client/index.js +1 -0
  16. package/dist-client/index.js.map +1 -1
  17. package/dist-client/pages/installable-activity/installable-activity-list-page.d.ts +45 -0
  18. package/dist-client/pages/installable-activity/installable-activity-list-page.js +414 -0
  19. package/dist-client/pages/installable-activity/installable-activity-list-page.js.map +1 -0
  20. package/dist-client/pages/installable-activity/installable-activity-model-item-list.d.ts +1 -0
  21. package/dist-client/pages/installable-activity/installable-activity-model-item-list.js +20 -0
  22. package/dist-client/pages/installable-activity/installable-activity-model-item-list.js.map +1 -0
  23. package/dist-client/pages/installed-activity/installed-activity-list-page.d.ts +45 -0
  24. package/dist-client/pages/installed-activity/installed-activity-list-page.js +412 -0
  25. package/dist-client/pages/installed-activity/installed-activity-list-page.js.map +1 -0
  26. package/dist-client/pages/installed-activity/installed-activity-model-item-list.d.ts +1 -0
  27. package/dist-client/pages/installed-activity/installed-activity-model-item-list.js +20 -0
  28. package/dist-client/pages/installed-activity/installed-activity-model-item-list.js.map +1 -0
  29. package/dist-client/pages/todo/draft-list-page.js +9 -0
  30. package/dist-client/pages/todo/draft-list-page.js.map +1 -1
  31. package/dist-client/route.d.ts +1 -1
  32. package/dist-client/route.js +3 -0
  33. package/dist-client/route.js.map +1 -1
  34. package/dist-client/tsconfig.tsbuildinfo +1 -1
  35. package/dist-server/controllers/activity-installation-controller.js +17 -0
  36. package/dist-server/controllers/activity-installation-controller.js.map +1 -0
  37. package/dist-server/controllers/activity-instance/post.js +3 -6
  38. package/dist-server/controllers/activity-instance/post.js.map +1 -1
  39. package/dist-server/controllers/activity-thread/submit.js.map +1 -1
  40. package/dist-server/controllers/call-webhook.js +4 -2
  41. package/dist-server/controllers/call-webhook.js.map +1 -1
  42. package/dist-server/controllers/common.js +44 -4
  43. package/dist-server/controllers/common.js.map +1 -1
  44. package/dist-server/controllers/index.js +4 -0
  45. package/dist-server/controllers/index.js.map +1 -1
  46. package/dist-server/index.js +1 -1
  47. package/dist-server/index.js.map +1 -1
  48. package/dist-server/service/activity/activity-model-type.js +1 -1
  49. package/dist-server/service/activity/activity-model-type.js.map +1 -1
  50. package/dist-server/service/activity/activity-query.js +1 -0
  51. package/dist-server/service/activity/activity-query.js.map +1 -1
  52. package/dist-server/service/activity/activity.js +9 -0
  53. package/dist-server/service/activity/activity.js.map +1 -1
  54. package/dist-server/service/activity-approval/event-subscriber.js +21 -4
  55. package/dist-server/service/activity-approval/event-subscriber.js.map +1 -1
  56. package/dist-server/service/activity-instance/activity-instance-query.js +40 -0
  57. package/dist-server/service/activity-instance/activity-instance-query.js.map +1 -1
  58. package/dist-server/service/activity-instance/activity-instance-type.js +13 -1
  59. package/dist-server/service/activity-instance/activity-instance-type.js.map +1 -1
  60. package/dist-server/service/activity-instance/activity-instance.js +25 -1
  61. package/dist-server/service/activity-instance/activity-instance.js.map +1 -1
  62. package/dist-server/service/index.js +4 -0
  63. package/dist-server/service/index.js.map +1 -1
  64. package/dist-server/service/installable-activity/index.js +10 -0
  65. package/dist-server/service/installable-activity/index.js.map +1 -0
  66. package/dist-server/service/installable-activity/installable-activity-mutation.js +60 -0
  67. package/dist-server/service/installable-activity/installable-activity-mutation.js.map +1 -0
  68. package/dist-server/service/installable-activity/installable-activity-query.js +48 -0
  69. package/dist-server/service/installable-activity/installable-activity-query.js.map +1 -0
  70. package/dist-server/service/installable-activity/installable-activity-type.js +21 -0
  71. package/dist-server/service/installable-activity/installable-activity-type.js.map +1 -0
  72. package/dist-server/service/installable-activity/installable-activity.js +70 -0
  73. package/dist-server/service/installable-activity/installable-activity.js.map +1 -0
  74. package/dist-server/service/installed-activity/index.js +10 -0
  75. package/dist-server/service/installed-activity/index.js.map +1 -0
  76. package/dist-server/service/installed-activity/installed-activity-mutation.js +60 -0
  77. package/dist-server/service/installed-activity/installed-activity-mutation.js.map +1 -0
  78. package/dist-server/service/installed-activity/installed-activity-query.js +48 -0
  79. package/dist-server/service/installed-activity/installed-activity-query.js.map +1 -0
  80. package/dist-server/service/installed-activity/installed-activity-type.js +21 -0
  81. package/dist-server/service/installed-activity/installed-activity-type.js.map +1 -0
  82. package/dist-server/service/installed-activity/installed-activity.js +70 -0
  83. package/dist-server/service/installed-activity/installed-activity.js.map +1 -0
  84. package/dist-server/tsconfig.tsbuildinfo +1 -1
  85. package/package.json +7 -7
  86. package/server/controllers/activity-installation-controller.ts +17 -0
  87. package/server/controllers/activity-instance/bid.ts +52 -0
  88. package/server/controllers/activity-instance/post.ts +9 -9
  89. package/server/controllers/activity-thread/submit.ts +1 -1
  90. package/server/controllers/call-webhook.ts +40 -0
  91. package/server/controllers/common.ts +41 -5
  92. package/server/controllers/index.ts +1 -0
  93. package/server/index.ts +1 -1
  94. package/server/service/activity/activity-model-type.ts +3 -3
  95. package/server/service/activity/activity-query.ts +2 -1
  96. package/server/service/activity/activity.ts +7 -0
  97. package/server/service/activity-approval/event-subscriber.ts +22 -5
  98. package/server/service/activity-instance/activity-instance-query.ts +44 -1
  99. package/server/service/activity-instance/activity-instance-type.ts +12 -4
  100. package/server/service/activity-instance/activity-instance.ts +17 -1
  101. package/server/service/index.ts +7 -0
  102. package/server/service/installable-activity/index.ts +7 -0
  103. package/server/service/installable-activity/installable-activity-mutation.ts +61 -0
  104. package/server/service/installable-activity/installable-activity-query.ts +36 -0
  105. package/server/service/installable-activity/installable-activity-type.ts +12 -0
  106. package/server/service/installable-activity/installable-activity.ts +49 -0
  107. package/things-factory.config.js +1 -0
  108. package/translations/en.json +2 -0
  109. package/translations/ko.json +2 -0
  110. package/translations/ms.json +2 -0
  111. package/translations/zh.json +2 -0
  112. package/server/controllers/activity-extension-controller.ts +0 -12
@@ -0,0 +1,18 @@
1
+ import { html } from 'lit'
2
+ import { customElement } from 'lit/decorators.js'
3
+
4
+ import { isMobileDevice } from '@operato/utils'
5
+ import { ActivityModelItemList } from '../activity/activity-model-item-list'
6
+
7
+ @customElement('installable-activity-model-item-list')
8
+ class InstallableActivityModelItemList extends ActivityModelItemList {
9
+ render() {
10
+ return html`
11
+ <ox-grist
12
+ .mode=${isMobileDevice() ? 'CARD' : 'GRID'}
13
+ .config=${this.gristConfig}
14
+ .fetchHandler=${this.fetchHandler.bind(this)}
15
+ ></ox-grist>
16
+ `
17
+ }
18
+ }
@@ -301,6 +301,15 @@ export class DraftListPage extends connect(store)(localize(i18next)(PageView)) {
301
301
  id
302
302
  }
303
303
  activityType
304
+ assignees {
305
+ type
306
+ assignee {
307
+ id
308
+ name
309
+ description
310
+ controlNo
311
+ }
312
+ }
304
313
  approvalLine {
305
314
  type
306
315
  approver {
package/client/route.ts CHANGED
@@ -75,5 +75,9 @@ export default function route(page: string) {
75
75
  case 'activity-approval-list':
76
76
  import('./pages/activity-approval/activity-approval-list-page')
77
77
  return page
78
+
79
+ case 'installable-activity-list':
80
+ import('./pages/installable-activity/installable-activity-list-page')
81
+ return page
78
82
  }
79
83
  }
@@ -0,0 +1,2 @@
1
+ export declare function generateActivitySummary(name: string): AsyncGenerator<any, void, unknown>;
2
+ export declare function startSubscribeActivitySummary(): Promise<void>;
@@ -0,0 +1,114 @@
1
+ import { __asyncGenerator, __await } from "tslib";
2
+ import debounce from 'lodash-es/debounce';
3
+ import gql from 'graphql-tag';
4
+ import { client, subscribe } from '@operato/graphql';
5
+ import { AsyncLock } from '@operato/utils';
6
+ async function subscribeActivityInstance() {
7
+ return await subscribe({
8
+ query: gql `
9
+ subscription {
10
+ activityInstance {
11
+ name
12
+ }
13
+ }
14
+ `
15
+ }, {
16
+ next: async ({ data }) => {
17
+ if (data) {
18
+ fetchActivitySummary();
19
+ }
20
+ }
21
+ });
22
+ }
23
+ async function subscribeActivityThread() {
24
+ return await subscribe({
25
+ query: gql `
26
+ subscription {
27
+ activityThread {
28
+ transaction
29
+ }
30
+ }
31
+ `
32
+ }, {
33
+ next: async ({ data }) => {
34
+ if (data) {
35
+ fetchActivitySummary();
36
+ }
37
+ }
38
+ });
39
+ }
40
+ async function subscribeActivityApproval() {
41
+ return await subscribe({
42
+ query: gql `
43
+ subscription {
44
+ activityApproval {
45
+ judgment
46
+ }
47
+ }
48
+ `
49
+ }, {
50
+ next: async ({ data }) => {
51
+ if (data) {
52
+ fetchActivitySummary();
53
+ }
54
+ }
55
+ });
56
+ }
57
+ var summary = {};
58
+ var generatorLocks = {
59
+ numberOfToDos: new AsyncLock(true),
60
+ numberOfApprovalWaitings: new AsyncLock(true),
61
+ numberOfPicks: new AsyncLock(true),
62
+ numberOfDrafts: new AsyncLock(true)
63
+ };
64
+ const fetchActivitySummary = debounce(async () => {
65
+ var _a, _b, _c, _d;
66
+ const response = await client.query({
67
+ query: gql `
68
+ query {
69
+ activitySummary {
70
+ numberOfToDos
71
+ numberOfApprovalWaitings
72
+ numberOfPicks
73
+ numberOfDrafts
74
+ }
75
+ }
76
+ `
77
+ });
78
+ if (response.data) {
79
+ const { numberOfToDos, numberOfApprovalWaitings, numberOfPicks, numberOfDrafts } = response.data.activitySummary;
80
+ summary['numberOfToDos'] = numberOfToDos;
81
+ summary['numberOfApprovalWaitings'] = numberOfApprovalWaitings;
82
+ summary['numberOfPicks'] = numberOfPicks;
83
+ summary['numberOfDrafts'] = numberOfDrafts;
84
+ (_a = generatorLocks['numberOfToDos']) === null || _a === void 0 ? void 0 : _a.unlock(numberOfToDos);
85
+ (_b = generatorLocks['numberOfApprovalWaitings']) === null || _b === void 0 ? void 0 : _b.unlock(numberOfApprovalWaitings);
86
+ (_c = generatorLocks['numberOfPicks']) === null || _c === void 0 ? void 0 : _c.unlock(numberOfPicks);
87
+ (_d = generatorLocks['numberOfDrafts']) === null || _d === void 0 ? void 0 : _d.unlock(numberOfDrafts);
88
+ }
89
+ }, 1000);
90
+ export function generateActivitySummary(name) {
91
+ var _a;
92
+ return __asyncGenerator(this, arguments, function* generateActivitySummary_1() {
93
+ /* 1. 앞에 사용되었던 generator가 종료될 기회를 준다. */
94
+ (_a = generatorLocks[name]) === null || _a === void 0 ? void 0 : _a.unlock();
95
+ /* 2. 마지막 값을 일단 yield 한다. */
96
+ yield yield __await(summary[name]);
97
+ while (true) {
98
+ generatorLocks[name].lock();
99
+ let badge = yield __await(generatorLocks[name].promise);
100
+ if (badge === undefined) {
101
+ /* 새로운 generator가 생성된 경우이면, 기존 generator는 종료한다. */
102
+ return yield __await(void 0);
103
+ }
104
+ yield yield __await(badge);
105
+ }
106
+ });
107
+ }
108
+ export async function startSubscribeActivitySummary() {
109
+ await subscribeActivityInstance();
110
+ await subscribeActivityThread();
111
+ await subscribeActivityApproval();
112
+ fetchActivitySummary();
113
+ }
114
+ //# sourceMappingURL=activity-summary-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-summary-generator.js","sourceRoot":"","sources":["../client/activity-summary-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import debounce from 'lodash-es/debounce'\nimport gql from 'graphql-tag'\nimport { client, subscribe } from '@operato/graphql'\nimport { AsyncLock } from '@operato/utils'\n\nasync function subscribeActivityInstance() {\n return await subscribe(\n {\n query: gql`\n subscription {\n activityInstance {\n name\n }\n }\n `\n },\n {\n next: async ({ data }) => {\n if (data) {\n fetchActivitySummary()\n }\n }\n }\n )\n}\n\nasync function subscribeActivityThread() {\n return await subscribe(\n {\n query: gql`\n subscription {\n activityThread {\n transaction\n }\n }\n `\n },\n {\n next: async ({ data }) => {\n if (data) {\n fetchActivitySummary()\n }\n }\n }\n )\n}\n\nasync function subscribeActivityApproval() {\n return await subscribe(\n {\n query: gql`\n subscription {\n activityApproval {\n judgment\n }\n }\n `\n },\n {\n next: async ({ data }) => {\n if (data) {\n fetchActivitySummary()\n }\n }\n }\n )\n}\n\nvar summary = {}\nvar generatorLocks = {\n numberOfToDos: new AsyncLock(true),\n numberOfApprovalWaitings: new AsyncLock(true),\n numberOfPicks: new AsyncLock(true),\n numberOfDrafts: new AsyncLock(true)\n}\n\nconst fetchActivitySummary = debounce(async () => {\n const response = await client.query({\n query: gql`\n query {\n activitySummary {\n numberOfToDos\n numberOfApprovalWaitings\n numberOfPicks\n numberOfDrafts\n }\n }\n `\n })\n\n if (response.data) {\n const { numberOfToDos, numberOfApprovalWaitings, numberOfPicks, numberOfDrafts } = response.data.activitySummary\n\n summary['numberOfToDos'] = numberOfToDos\n summary['numberOfApprovalWaitings'] = numberOfApprovalWaitings\n summary['numberOfPicks'] = numberOfPicks\n summary['numberOfDrafts'] = numberOfDrafts\n\n generatorLocks['numberOfToDos']?.unlock(numberOfToDos)\n generatorLocks['numberOfApprovalWaitings']?.unlock(numberOfApprovalWaitings)\n generatorLocks['numberOfPicks']?.unlock(numberOfPicks)\n generatorLocks['numberOfDrafts']?.unlock(numberOfDrafts)\n }\n}, 1000)\n\nexport async function* generateActivitySummary(name: string) {\n /* 1. 앞에 사용되었던 generator가 종료될 기회를 준다. */\n generatorLocks[name]?.unlock()\n\n /* 2. 마지막 값을 일단 yield 한다. */\n yield summary[name]\n\n while (true) {\n generatorLocks[name].lock()\n\n let badge = await generatorLocks[name].promise\n if (badge === undefined) {\n /* 새로운 generator가 생성된 경우이면, 기존 generator는 종료한다. */\n return\n }\n\n yield badge\n }\n}\n\nexport async function startSubscribeActivitySummary() {\n await subscribeActivityInstance()\n await subscribeActivityThread()\n await subscribeActivityApproval()\n\n fetchActivitySummary()\n}\n"]}
@@ -15,6 +15,7 @@ export declare class ActivityStarterForm extends ActivityStarterForm_base {
15
15
  draftActivityInstance(): Promise<void>;
16
16
  updateActivityInstance(): Promise<void>;
17
17
  postActivityInstance(): Promise<void>;
18
+ onClickAssignees(): void;
18
19
  onClickApprovalLine(): void;
19
20
  }
20
21
  export {};
@@ -24,7 +24,7 @@ let ActivityStarterForm = class ActivityStarterForm extends localize(i18next)(Li
24
24
  .map(item => {
25
25
  return Object.assign(Object.assign({}, item), { label: item.name });
26
26
  });
27
- const { id, name, description, input, state, approvalLine, threadsMin = 0, threadsMax = 0 } = this.activityInstance || {};
27
+ const { id, name, description, input, state, approvalLine, assignees, threadsMin = 0, threadsMax = 0 } = this.activityInstance || {};
28
28
  const draftable = !id;
29
29
  const postable = id && state === 'draft';
30
30
  return html `
@@ -67,6 +67,19 @@ let ActivityStarterForm = class ActivityStarterForm extends localize(i18next)(Li
67
67
  />
68
68
  </section>
69
69
 
70
+ <section>
71
+ <label>Assignees</label>
72
+ ${assignees
73
+ ? html `
74
+ <assignees-view
75
+ .value=${assignees}
76
+ @click=${this.onClickAssignees.bind(this)}
77
+ @change=${e => (this.activityInstance.assignees = e.currentTarget.value)}
78
+ ></assignees-view>
79
+ `
80
+ : html `<mwc-icon-button icon="group_add" @click=${this.onClickAssignees.bind(this)}></mwc-icon-button>`}
81
+ </section>
82
+
70
83
  <section>
71
84
  <label>Approval Line</label>
72
85
  ${approvalLine
@@ -74,6 +87,7 @@ let ActivityStarterForm = class ActivityStarterForm extends localize(i18next)(Li
74
87
  <approval-line-view
75
88
  .model=${approvalLine}
76
89
  @click=${this.onClickApprovalLine.bind(this)}
90
+ @change=${e => (this.activityInstance.approvalLine = e.currentTarget.value)}
77
91
  ></approval-line-view>
78
92
  `
79
93
  : html `<mwc-icon-button icon="group_add" @click=${this.onClickApprovalLine.bind(this)}></mwc-icon-button>`}
@@ -157,6 +171,15 @@ let ActivityStarterForm = class ActivityStarterForm extends localize(i18next)(Li
157
171
  description
158
172
  input
159
173
  state
174
+ assignees {
175
+ type
176
+ assignee {
177
+ id
178
+ name
179
+ description
180
+ controlNo
181
+ }
182
+ }
160
183
  approvalLine {
161
184
  type
162
185
  approver {
@@ -185,13 +208,14 @@ let ActivityStarterForm = class ActivityStarterForm extends localize(i18next)(Li
185
208
  }
186
209
  }
187
210
  async updateActivityInstance() {
188
- const { id, name, description, input, threadsMin = 0, threadsMax = 0, approvalLine } = this.activityInstance;
211
+ const { id, name, description, input, threadsMin = 0, threadsMax = 0, assignees, approvalLine } = this.activityInstance;
189
212
  const patch = {
190
213
  name: name || this.activity.name,
191
214
  description: description || this.activity.description,
192
215
  input,
193
216
  threadsMin,
194
217
  threadsMax,
218
+ assignees,
195
219
  approvalLine
196
220
  };
197
221
  const response = await client.mutate({
@@ -203,6 +227,15 @@ let ActivityStarterForm = class ActivityStarterForm extends localize(i18next)(Li
203
227
  description
204
228
  input
205
229
  state
230
+ assignees {
231
+ type
232
+ assignee {
233
+ id
234
+ name
235
+ description
236
+ controlNo
237
+ }
238
+ }
206
239
  approvalLine {
207
240
  type
208
241
  approver {
@@ -232,14 +265,16 @@ let ActivityStarterForm = class ActivityStarterForm extends localize(i18next)(Li
232
265
  }
233
266
  }
234
267
  async postActivityInstance() {
235
- const { id, name, description, input, threadsMin = 0, threadsMax = 0 } = this.activityInstance;
268
+ const { id, name, description, input, threadsMin = 0, threadsMax = 0, assignees, approvalLine } = this.activityInstance;
236
269
  const activityInstance = {
237
270
  id,
238
271
  name: name || this.activity.name,
239
272
  description: description || this.activity.description,
240
273
  threadsMin,
241
274
  threadsMax,
242
- input
275
+ input,
276
+ assignees,
277
+ approvalLine
243
278
  };
244
279
  const response = await client.mutate({
245
280
  mutation: gql `
@@ -250,6 +285,15 @@ let ActivityStarterForm = class ActivityStarterForm extends localize(i18next)(Li
250
285
  description
251
286
  input
252
287
  state
288
+ assignees {
289
+ type
290
+ assignee {
291
+ id
292
+ name
293
+ description
294
+ controlNo
295
+ }
296
+ }
253
297
  approvalLine {
254
298
  type
255
299
  approver {
@@ -277,6 +321,24 @@ let ActivityStarterForm = class ActivityStarterForm extends localize(i18next)(Li
277
321
  });
278
322
  }
279
323
  }
324
+ onClickAssignees() {
325
+ const { assignees } = this.activityInstance || {};
326
+ const popup = openPopup(html `
327
+ <assignees-editor-popup
328
+ .value=${assignees}
329
+ .confirmCallback=${value => {
330
+ this.activityInstance.assignees = value;
331
+ this.requestUpdate();
332
+ }}
333
+ ></assignees-editor-popup>
334
+ `, {
335
+ backdrop: true,
336
+ help: 'organization/assignees-editor',
337
+ size: 'large',
338
+ title: i18next.t('title.assignee list')
339
+ });
340
+ popup.onclosed = () => { };
341
+ }
280
342
  onClickApprovalLine() {
281
343
  const { approvalLine } = this.activityInstance || {};
282
344
  const popup = openPopup(html `
@@ -1 +1 @@
1
- {"version":3,"file":"activity-starter-form.js","sourceRoot":"","sources":["../../client/components/activity-starter-form.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/mwc-button'\nimport '@material/mwc-icon-button'\nimport '@operato/property-editor/ox-properties-dynamic-view.js'\nimport '@things-factory/organization'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\n\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { notify, openPopup } from '@operato/layout'\nimport { ScrollbarStyles } from '@operato/styles'\n\n@customElement('activity-starter-form')\nexport class ActivityStarterForm extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: #fff;\n }\n\n content {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: var(--padding-default);\n overflow: auto;\n }\n\n section {\n display: flex;\n flex-direction: column;\n }\n\n #description {\n height: 60px;\n }\n\n .button-container {\n display: flex;\n margin-left: auto;\n padding: var(--padding-default);\n }\n\n mwc-button {\n margin-left: var(--margin-default);\n }\n `\n ]\n\n @property({ type: String }) activityId?: string\n @property({ type: Object }) activity?: any\n @property({ type: Object }) activityInstance: any = {}\n\n render() {\n const { model, thumbnail } = this.activity || {}\n\n const inputSpec = (model || [])\n .filter(item => item.inout === 'in' || item.inout === 'inout')\n .map(item => {\n return {\n ...item,\n label: item.name\n }\n })\n\n const {\n id,\n name,\n description,\n input,\n state,\n approvalLine,\n threadsMin = 0,\n threadsMax = 0\n } = this.activityInstance || {}\n const draftable = !id\n const postable = id && state === 'draft'\n\n return html`\n <content>\n <section>\n <label for=\"name\">title</label>\n <input\n id=\"name\"\n .value=${name || this.activity?.name}\n @change=${e => (this.activityInstance.name = e.currentTarget.value)}\n />\n </section>\n\n <section>\n <label for=\"description\">description</label>\n <textarea\n id=\"description\"\n .value=${description || this.activity?.description}\n @change=${e => {\n this.activityInstance.description = e.currentTarget.value\n }}\n ></textarea>\n </section>\n\n <section>\n <label for=\"threads-min\">Threads Min</label>\n <input\n id=\"threadsMin\"\n type=\"number\"\n .value=${threadsMin || 0}\n @change=${e => (this.activityInstance.threadsMin = e.currentTarget.valueAsNumber)}\n />\n\n <label for=\"threads-max\">Threads Max</label>\n <input\n id=\"threads-max\"\n type=\"number\"\n .value=${threadsMax || 0}\n @change=${e => (this.activityInstance.threadsMax = e.currentTarget.valueAsNumber)}\n />\n </section>\n\n <section>\n <label>Approval Line</label>\n ${approvalLine\n ? html`\n <approval-line-view\n .model=${approvalLine}\n @click=${this.onClickApprovalLine.bind(this)}\n ></approval-line-view>\n `\n : html`<mwc-icon-button icon=\"group_add\" @click=${this.onClickApprovalLine.bind(this)}></mwc-icon-button>`}\n </section>\n\n <section>\n <img src=${thumbnail} />\n </section>\n\n <label>Input</label>\n\n ${!model\n ? html``\n : html`\n <ox-properties-dynamic-view\n .props=${inputSpec}\n .value=${input}\n @property-change=${e => {\n this.activityInstance.input = e.currentTarget.value\n console.log('activity-instance', this.activityInstance.input)\n }}\n ></ox-properties-dynamic-view>\n `}\n </content>\n\n <div class=\"button-container\">\n <mwc-button raised @click=${e => history.back()}>${i18next.t('button.close')}</mwc-button>\n ${when(\n draftable,\n () => html`\n <mwc-button raised @click=${this.draftActivityInstance.bind(this)}>${i18next.t('button.draft')}</mwc-button>\n `\n )}\n ${when(\n postable,\n () => html`\n <mwc-button raised @click=${this.updateActivityInstance.bind(this)}>${i18next.t('button.save')}</mwc-button>\n <mwc-button raised @click=${this.postActivityInstance.bind(this)}>${i18next.t('button.post')}</mwc-button>\n `\n )}\n </div>\n `\n }\n\n firstUpdated() {\n this.fetchActivity(this.activityId)\n }\n\n async fetchActivity(id) {\n const response = await client.query({\n query: gql`\n query activity($id: String!) {\n activity(id: $id) {\n id\n name\n description\n state\n thumbnail\n model {\n name\n description\n active\n tag\n inout\n type\n unit\n options\n quantifier\n spec\n }\n }\n }\n `,\n variables: {\n id\n }\n })\n\n this.activity = response.data.activity\n }\n\n async draftActivityInstance() {\n const { activityId } = this\n\n const activityInstance = {\n activityId,\n name: this.activity.name,\n description: this.activity.description,\n ...this.activityInstance\n }\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($activityInstance: NewActivityInstance!) {\n draftActivityInstance(activityInstance: $activityInstance) {\n id\n name\n description\n input\n state\n approvalLine {\n type\n approver {\n id\n name\n description\n controlNo\n }\n }\n threadsMin\n threadsMax\n }\n }\n `,\n variables: {\n activityInstance\n }\n })\n\n if (!response.errors) {\n this.activityInstance = response.data.draftActivityInstance\n notify({\n message: i18next.t('text.info_x_successfully', {\n x: `${i18next.t('label.activity-instance')} ${i18next.t('text.draft')}`\n })\n })\n }\n }\n\n async updateActivityInstance() {\n const { id, name, description, input, threadsMin = 0, threadsMax = 0, approvalLine } = this.activityInstance\n\n const patch = {\n name: name || this.activity.name,\n description: description || this.activity.description,\n input,\n threadsMin,\n threadsMax,\n approvalLine\n }\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($id: String!, $patch: ActivityInstancePatch!) {\n updateActivityInstance(id: $id, patch: $patch) {\n id\n name\n description\n input\n state\n approvalLine {\n type\n approver {\n id\n name\n description\n controlNo\n }\n }\n threadsMin\n threadsMax\n }\n }\n `,\n variables: {\n id,\n patch\n }\n })\n\n if (!response.errors) {\n this.activityInstance = response.data.updateActivityInstance\n notify({\n message: i18next.t('text.info_x_successfully', {\n x: `${i18next.t('label.activity-instance')} ${i18next.t('text.save')}`\n })\n })\n }\n }\n\n async postActivityInstance() {\n const { id, name, description, input, threadsMin = 0, threadsMax = 0 } = this.activityInstance\n\n const activityInstance = {\n id,\n name: name || this.activity.name,\n description: description || this.activity.description,\n threadsMin,\n threadsMax,\n input\n }\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($activityInstance: ActivityInstancePost!) {\n postActivityInstance(activityInstance: $activityInstance) {\n id\n name\n description\n input\n state\n approvalLine {\n type\n approver {\n id\n name\n description\n controlNo\n }\n }\n threadsMin\n threadsMax\n }\n }\n `,\n variables: {\n activityInstance\n }\n })\n\n if (!response.errors) {\n this.activityInstance = response.data.postActivityInstance\n notify({\n message: i18next.t('text.info_x_successfully', {\n x: `${i18next.t('label.activity-instance')} ${i18next.t('text.assign')}`\n })\n })\n }\n }\n\n onClickApprovalLine() {\n const { approvalLine } = this.activityInstance || {}\n\n const popup = openPopup(\n html`\n <approval-line-items-editor-popup\n .value=${approvalLine}\n .confirmCallback=${value => {\n this.activityInstance.approvalLine = value\n this.requestUpdate()\n }}\n ></approval-line-items-editor-popup>\n `,\n {\n backdrop: true,\n help: 'organization/approval-line-items-editor',\n size: 'large',\n title: i18next.t('title.approval-line item list')\n }\n )\n popup.onclosed = () => {}\n }\n}\n"]}
1
+ {"version":3,"file":"activity-starter-form.js","sourceRoot":"","sources":["../../client/components/activity-starter-form.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/mwc-button'\nimport '@material/mwc-icon-button'\nimport '@operato/property-editor/ox-properties-dynamic-view.js'\nimport '@things-factory/organization'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\n\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { notify, openPopup } from '@operato/layout'\nimport { ScrollbarStyles } from '@operato/styles'\n\n@customElement('activity-starter-form')\nexport class ActivityStarterForm extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n background-color: #fff;\n }\n\n content {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: var(--padding-default);\n overflow: auto;\n }\n\n section {\n display: flex;\n flex-direction: column;\n }\n\n #description {\n height: 60px;\n }\n\n .button-container {\n display: flex;\n margin-left: auto;\n padding: var(--padding-default);\n }\n\n mwc-button {\n margin-left: var(--margin-default);\n }\n `\n ]\n\n @property({ type: String }) activityId?: string\n @property({ type: Object }) activity?: any\n @property({ type: Object }) activityInstance: any = {}\n\n render() {\n const { model, thumbnail } = this.activity || {}\n\n const inputSpec = (model || [])\n .filter(item => item.inout === 'in' || item.inout === 'inout')\n .map(item => {\n return {\n ...item,\n label: item.name\n }\n })\n\n const {\n id,\n name,\n description,\n input,\n state,\n approvalLine,\n assignees,\n threadsMin = 0,\n threadsMax = 0\n } = this.activityInstance || {}\n const draftable = !id\n const postable = id && state === 'draft'\n\n return html`\n <content>\n <section>\n <label for=\"name\">title</label>\n <input\n id=\"name\"\n .value=${name || this.activity?.name}\n @change=${e => (this.activityInstance.name = e.currentTarget.value)}\n />\n </section>\n\n <section>\n <label for=\"description\">description</label>\n <textarea\n id=\"description\"\n .value=${description || this.activity?.description}\n @change=${e => {\n this.activityInstance.description = e.currentTarget.value\n }}\n ></textarea>\n </section>\n\n <section>\n <label for=\"threads-min\">Threads Min</label>\n <input\n id=\"threadsMin\"\n type=\"number\"\n .value=${threadsMin || 0}\n @change=${e => (this.activityInstance.threadsMin = e.currentTarget.valueAsNumber)}\n />\n\n <label for=\"threads-max\">Threads Max</label>\n <input\n id=\"threads-max\"\n type=\"number\"\n .value=${threadsMax || 0}\n @change=${e => (this.activityInstance.threadsMax = e.currentTarget.valueAsNumber)}\n />\n </section>\n\n <section>\n <label>Assignees</label>\n ${assignees\n ? html`\n <assignees-view\n .value=${assignees}\n @click=${this.onClickAssignees.bind(this)}\n @change=${e => (this.activityInstance.assignees = e.currentTarget.value)}\n ></assignees-view>\n `\n : html`<mwc-icon-button icon=\"group_add\" @click=${this.onClickAssignees.bind(this)}></mwc-icon-button>`}\n </section>\n\n <section>\n <label>Approval Line</label>\n ${approvalLine\n ? html`\n <approval-line-view\n .model=${approvalLine}\n @click=${this.onClickApprovalLine.bind(this)}\n @change=${e => (this.activityInstance.approvalLine = e.currentTarget.value)}\n ></approval-line-view>\n `\n : html`<mwc-icon-button icon=\"group_add\" @click=${this.onClickApprovalLine.bind(this)}></mwc-icon-button>`}\n </section>\n\n <section>\n <img src=${thumbnail} />\n </section>\n\n <label>Input</label>\n\n ${!model\n ? html``\n : html`\n <ox-properties-dynamic-view\n .props=${inputSpec}\n .value=${input}\n @property-change=${e => {\n this.activityInstance.input = e.currentTarget.value\n console.log('activity-instance', this.activityInstance.input)\n }}\n ></ox-properties-dynamic-view>\n `}\n </content>\n\n <div class=\"button-container\">\n <mwc-button raised @click=${e => history.back()}>${i18next.t('button.close')}</mwc-button>\n ${when(\n draftable,\n () => html`\n <mwc-button raised @click=${this.draftActivityInstance.bind(this)}>${i18next.t('button.draft')}</mwc-button>\n `\n )}\n ${when(\n postable,\n () => html`\n <mwc-button raised @click=${this.updateActivityInstance.bind(this)}>${i18next.t('button.save')}</mwc-button>\n <mwc-button raised @click=${this.postActivityInstance.bind(this)}>${i18next.t('button.post')}</mwc-button>\n `\n )}\n </div>\n `\n }\n\n firstUpdated() {\n this.fetchActivity(this.activityId)\n }\n\n async fetchActivity(id) {\n const response = await client.query({\n query: gql`\n query activity($id: String!) {\n activity(id: $id) {\n id\n name\n description\n state\n thumbnail\n model {\n name\n description\n active\n tag\n inout\n type\n unit\n options\n quantifier\n spec\n }\n }\n }\n `,\n variables: {\n id\n }\n })\n\n this.activity = response.data.activity\n }\n\n async draftActivityInstance() {\n const { activityId } = this\n\n const activityInstance = {\n activityId,\n name: this.activity.name,\n description: this.activity.description,\n ...this.activityInstance\n }\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($activityInstance: NewActivityInstance!) {\n draftActivityInstance(activityInstance: $activityInstance) {\n id\n name\n description\n input\n state\n assignees {\n type\n assignee {\n id\n name\n description\n controlNo\n }\n }\n approvalLine {\n type\n approver {\n id\n name\n description\n controlNo\n }\n }\n threadsMin\n threadsMax\n }\n }\n `,\n variables: {\n activityInstance\n }\n })\n\n if (!response.errors) {\n this.activityInstance = response.data.draftActivityInstance\n notify({\n message: i18next.t('text.info_x_successfully', {\n x: `${i18next.t('label.activity-instance')} ${i18next.t('text.draft')}`\n })\n })\n }\n }\n\n async updateActivityInstance() {\n const {\n id,\n name,\n description,\n input,\n threadsMin = 0,\n threadsMax = 0,\n assignees,\n approvalLine\n } = this.activityInstance\n\n const patch = {\n name: name || this.activity.name,\n description: description || this.activity.description,\n input,\n threadsMin,\n threadsMax,\n assignees,\n approvalLine\n }\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($id: String!, $patch: ActivityInstancePatch!) {\n updateActivityInstance(id: $id, patch: $patch) {\n id\n name\n description\n input\n state\n assignees {\n type\n assignee {\n id\n name\n description\n controlNo\n }\n }\n approvalLine {\n type\n approver {\n id\n name\n description\n controlNo\n }\n }\n threadsMin\n threadsMax\n }\n }\n `,\n variables: {\n id,\n patch\n }\n })\n\n if (!response.errors) {\n this.activityInstance = response.data.updateActivityInstance\n notify({\n message: i18next.t('text.info_x_successfully', {\n x: `${i18next.t('label.activity-instance')} ${i18next.t('text.save')}`\n })\n })\n }\n }\n\n async postActivityInstance() {\n const {\n id,\n name,\n description,\n input,\n threadsMin = 0,\n threadsMax = 0,\n assignees,\n approvalLine\n } = this.activityInstance\n\n const activityInstance = {\n id,\n name: name || this.activity.name,\n description: description || this.activity.description,\n threadsMin,\n threadsMax,\n input,\n assignees,\n approvalLine\n }\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($activityInstance: ActivityInstancePost!) {\n postActivityInstance(activityInstance: $activityInstance) {\n id\n name\n description\n input\n state\n assignees {\n type\n assignee {\n id\n name\n description\n controlNo\n }\n }\n approvalLine {\n type\n approver {\n id\n name\n description\n controlNo\n }\n }\n threadsMin\n threadsMax\n }\n }\n `,\n variables: {\n activityInstance\n }\n })\n\n if (!response.errors) {\n this.activityInstance = response.data.postActivityInstance\n notify({\n message: i18next.t('text.info_x_successfully', {\n x: `${i18next.t('label.activity-instance')} ${i18next.t('text.assign')}`\n })\n })\n }\n }\n\n onClickAssignees() {\n const { assignees } = this.activityInstance || {}\n\n const popup = openPopup(\n html`\n <assignees-editor-popup\n .value=${assignees}\n .confirmCallback=${value => {\n this.activityInstance.assignees = value\n this.requestUpdate()\n }}\n ></assignees-editor-popup>\n `,\n {\n backdrop: true,\n help: 'organization/assignees-editor',\n size: 'large',\n title: i18next.t('title.assignee list')\n }\n )\n popup.onclosed = () => {}\n }\n\n onClickApprovalLine() {\n const { approvalLine } = this.activityInstance || {}\n\n const popup = openPopup(\n html`\n <approval-line-items-editor-popup\n .value=${approvalLine}\n .confirmCallback=${value => {\n this.activityInstance.approvalLine = value\n this.requestUpdate()\n }}\n ></approval-line-items-editor-popup>\n `,\n {\n backdrop: true,\n help: 'organization/approval-line-items-editor',\n size: 'large',\n title: i18next.t('title.approval-line item list')\n }\n )\n popup.onclosed = () => {}\n }\n}\n"]}
@@ -1 +1,2 @@
1
1
  export * from './pages/activity/activity-page.js';
2
+ export * from './activity-summary-generator';
@@ -1,2 +1,3 @@
1
1
  export * from './pages/activity/activity-page.js';
2
+ export * from './activity-summary-generator';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAA","sourcesContent":["export * from './pages/activity/activity-page.js'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAA;AACjD,cAAc,8BAA8B,CAAA","sourcesContent":["export * from './pages/activity/activity-page.js'\nexport * from './activity-summary-generator'\n"]}
@@ -0,0 +1,45 @@
1
+ import '@operato/data-grist';
2
+ import './installable-activity-model-item-list.js';
3
+ import { DataGrist } from '@operato/data-grist';
4
+ import { PageView } from '@operato/shell';
5
+ declare const ActivityTemplateListPage_base: (new (...args: any[]) => {
6
+ _storeUnsubscribe: import("redux").Unsubscribe;
7
+ connectedCallback(): void;
8
+ disconnectedCallback(): void;
9
+ stateChanged(_state: unknown): void;
10
+ readonly isConnected: boolean;
11
+ }) & (new (...args: any[]) => import("lit").LitElement) & typeof PageView;
12
+ export declare class ActivityTemplateListPage extends ActivityTemplateListPage_base {
13
+ static styles: import("lit").CSSResult[];
14
+ gristConfig: any;
15
+ mode?: 'GRID' | 'LIST' | 'CARD';
16
+ get context(): {
17
+ search: {
18
+ handler: (search: string) => void;
19
+ placeholder: string;
20
+ value: string;
21
+ };
22
+ filter: {
23
+ handler: () => void;
24
+ };
25
+ help: string;
26
+ actions: never[];
27
+ };
28
+ sorterControl?: any;
29
+ grist: DataGrist;
30
+ render(): import("lit-html").TemplateResult<1>;
31
+ pageInitialized(lifecycle: any): Promise<void>;
32
+ pageUpdated(changes: any, lifecycle: any): Promise<void>;
33
+ fetchHandler({ page, limit, sortings, filters }: {
34
+ page: any;
35
+ limit: any;
36
+ sortings?: never[] | undefined;
37
+ filters?: never[] | undefined;
38
+ }): Promise<{
39
+ total: any;
40
+ records: any;
41
+ } | undefined>;
42
+ activate(record: any): Promise<void>;
43
+ deactivate(record: any): Promise<void>;
44
+ }
45
+ export {};