@things-factory/worklist 9.1.19 → 10.0.0-beta.2

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 (103) hide show
  1. package/dist-client/components/activity-thread-timeline.d.ts +1 -9
  2. package/dist-client/components/activity-thread-timeline.js +1 -3
  3. package/dist-client/components/activity-thread-timeline.js.map +1 -1
  4. package/dist-client/pages/activity/activity-list-page.d.ts +1 -7
  5. package/dist-client/pages/activity/activity-list-page.js +125 -234
  6. package/dist-client/pages/activity/activity-list-page.js.map +1 -1
  7. package/dist-client/pages/activity/activity-page.d.ts +1 -7
  8. package/dist-client/pages/activity/activity-page.js +51 -93
  9. package/dist-client/pages/activity/activity-page.js.map +1 -1
  10. package/dist-client/pages/activity/starter-list-page.d.ts +1 -7
  11. package/dist-client/pages/activity/starter-list-page.js +33 -62
  12. package/dist-client/pages/activity/starter-list-page.js.map +1 -1
  13. package/dist-client/pages/activity-approval/activity-approval-list-page.d.ts +1 -7
  14. package/dist-client/pages/activity-approval/activity-approval-list-page.js +50 -95
  15. package/dist-client/pages/activity-approval/activity-approval-list-page.js.map +1 -1
  16. package/dist-client/pages/activity-approval/activity-approval-page.d.ts +1 -7
  17. package/dist-client/pages/activity-approval/activity-approval-page.js +73 -119
  18. package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
  19. package/dist-client/pages/activity-instance/activity-instance-list-page.d.ts +0 -6
  20. package/dist-client/pages/activity-instance/activity-instance-list-page.js +63 -120
  21. package/dist-client/pages/activity-instance/activity-instance-list-page.js.map +1 -1
  22. package/dist-client/pages/activity-instance/activity-instance-search-page.d.ts +1 -7
  23. package/dist-client/pages/activity-instance/activity-instance-search-page.js +55 -101
  24. package/dist-client/pages/activity-instance/activity-instance-search-page.js.map +1 -1
  25. package/dist-client/pages/activity-instance/activity-instance-start-page.d.ts +1 -7
  26. package/dist-client/pages/activity-instance/activity-instance-start-page.js +65 -109
  27. package/dist-client/pages/activity-instance/activity-instance-start-page.js.map +1 -1
  28. package/dist-client/pages/activity-stats/activity-stats-list-page.d.ts +1 -7
  29. package/dist-client/pages/activity-stats/activity-stats-list-page.js +50 -95
  30. package/dist-client/pages/activity-stats/activity-stats-list-page.js.map +1 -1
  31. package/dist-client/pages/activity-store/activity-store-page.d.ts +1 -7
  32. package/dist-client/pages/activity-store/activity-store-page.js +2 -3
  33. package/dist-client/pages/activity-store/activity-store-page.js.map +1 -1
  34. package/dist-client/pages/activity-supervisor/reporter-list-page.d.ts +1 -7
  35. package/dist-client/pages/activity-supervisor/reporter-list-page.js +36 -66
  36. package/dist-client/pages/activity-supervisor/reporter-list-page.js.map +1 -1
  37. package/dist-client/pages/activity-template/activity-template-list-page.d.ts +1 -7
  38. package/dist-client/pages/activity-template/activity-template-list-page.js +70 -134
  39. package/dist-client/pages/activity-template/activity-template-list-page.js.map +1 -1
  40. package/dist-client/pages/activity-thread/activity-thread-list-page.d.ts +1 -7
  41. package/dist-client/pages/activity-thread/activity-thread-list-page.js +49 -93
  42. package/dist-client/pages/activity-thread/activity-thread-list-page.js.map +1 -1
  43. package/dist-client/pages/activity-thread/activity-thread-page.d.ts +1 -7
  44. package/dist-client/pages/activity-thread/activity-thread-page.js +80 -135
  45. package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
  46. package/dist-client/pages/activity-thread/activity-thread-view-page.d.ts +1 -7
  47. package/dist-client/pages/activity-thread/activity-thread-view-page.js +54 -80
  48. package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -1
  49. package/dist-client/pages/activity-thread/activity-thread-view.js +4 -0
  50. package/dist-client/pages/activity-thread/activity-thread-view.js.map +1 -1
  51. package/dist-client/pages/dashboard/dashboard-home.js +3 -5
  52. package/dist-client/pages/dashboard/dashboard-home.js.map +1 -1
  53. package/dist-client/pages/installable-activity/installable-activity-list-page.d.ts +0 -6
  54. package/dist-client/pages/installable-activity/installable-activity-list-page.js +68 -130
  55. package/dist-client/pages/installable-activity/installable-activity-list-page.js.map +1 -1
  56. package/dist-client/pages/todo/approval-done-list-page.d.ts +1 -7
  57. package/dist-client/pages/todo/approval-done-list-page.js +53 -100
  58. package/dist-client/pages/todo/approval-done-list-page.js.map +1 -1
  59. package/dist-client/pages/todo/approval-pending-list-page.d.ts +0 -6
  60. package/dist-client/pages/todo/approval-pending-list-page.js +63 -119
  61. package/dist-client/pages/todo/approval-pending-list-page.js.map +1 -1
  62. package/dist-client/pages/todo/done-list-calendar-page.d.ts +1 -7
  63. package/dist-client/pages/todo/done-list-calendar-page.js +2 -3
  64. package/dist-client/pages/todo/done-list-calendar-page.js.map +1 -1
  65. package/dist-client/pages/todo/done-list-page.d.ts +1 -7
  66. package/dist-client/pages/todo/done-list-page.js +56 -106
  67. package/dist-client/pages/todo/done-list-page.js.map +1 -1
  68. package/dist-client/pages/todo/draft-list-page.d.ts +1 -7
  69. package/dist-client/pages/todo/draft-list-page.js +49 -88
  70. package/dist-client/pages/todo/draft-list-page.js.map +1 -1
  71. package/dist-client/pages/todo/pickable-list-page.d.ts +1 -7
  72. package/dist-client/pages/todo/pickable-list-page.js +48 -91
  73. package/dist-client/pages/todo/pickable-list-page.js.map +1 -1
  74. package/dist-client/pages/todo/todo-list-page.d.ts +0 -6
  75. package/dist-client/pages/todo/todo-list-page.js +56 -106
  76. package/dist-client/pages/todo/todo-list-page.js.map +1 -1
  77. package/dist-client/pages/worklist-home.js +2 -3
  78. package/dist-client/pages/worklist-home.js.map +1 -1
  79. package/dist-client/route.d.ts +1 -1
  80. package/dist-client/templates/activity-approval-context-template.js +8 -12
  81. package/dist-client/templates/activity-approval-context-template.js.map +1 -1
  82. package/dist-client/templates/activity-instance-context-template.js +8 -12
  83. package/dist-client/templates/activity-instance-context-template.js.map +1 -1
  84. package/dist-client/templates/activity-thread-context-template.js +8 -12
  85. package/dist-client/templates/activity-thread-context-template.js.map +1 -1
  86. package/dist-client/tsconfig.tsbuildinfo +1 -1
  87. package/dist-server/controllers/activity-approval/approve.js +2 -2
  88. package/dist-server/controllers/activity-approval/approve.js.map +1 -1
  89. package/dist-server/controllers/activity-thread/submit.js +2 -2
  90. package/dist-server/controllers/activity-thread/submit.js.map +1 -1
  91. package/dist-server/service/index.d.ts +2 -2
  92. package/dist-server/tsconfig.tsbuildinfo +1 -1
  93. package/package.json +16 -16
  94. package/spec/integration/approval-mixed-types.spec.ts +491 -0
  95. package/spec/integration/approval-role-based.spec.ts +389 -0
  96. package/spec/integration/instance-lifecycle.spec.ts +406 -0
  97. package/spec/integration/role-approval-edge-cases.spec.ts +581 -0
  98. package/spec/unit/controllers/activity-instance-issue.spec.ts +360 -0
  99. package/spec/unit/controllers/activity-thread-submit.spec.ts +384 -0
  100. package/spec/unit/role-approval-escalate-logic.spec.ts +499 -0
  101. package/spec/unit/role-approval-submit-logic.spec.ts +481 -0
  102. package/spec/unit/thread-state-helpers.spec.ts +253 -0
  103. package/translations/en.json +1 -1
@@ -5,14 +5,13 @@ import '@operato/input/ox-input-select-buttons.js';
5
5
  import gql from 'graphql-tag';
6
6
  import { css, html } from 'lit';
7
7
  import { customElement, property, query, state } from 'lit/decorators.js';
8
- import { connect } from 'pwa-helpers/connect-mixin.js';
9
8
  import { DataGrist, getRenderer } from '@operato/data-grist';
10
9
  import { client } from '@operato/graphql';
11
10
  import { i18next, localize } from '@operato/i18n';
12
- import { navigate, PageView, store } from '@operato/shell';
11
+ import { navigate, PageView } from '@operato/shell';
13
12
  import { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles';
14
13
  import { adjustFilters, isMobileDevice } from '@operato/utils';
15
- let ApprovalDoneListPage = class ApprovalDoneListPage extends connect(store)(localize(i18next)(PageView)) {
14
+ let ApprovalDoneListPage = class ApprovalDoneListPage extends localize(i18next)(PageView) {
16
15
  constructor() {
17
16
  super(...arguments);
18
17
  this.mode = isMobileDevice() ? 'CARD' : 'GRID';
@@ -21,43 +20,35 @@ let ApprovalDoneListPage = class ApprovalDoneListPage extends connect(store)(loc
21
20
  ScrollbarStyles,
22
21
  CommonHeaderStyles,
23
22
  css `
24
- :host {
25
- display: flex;
23
+ :host { display: flex;
26
24
 
27
25
  width: 100%;
28
26
 
29
27
  --grid-record-emphasized-background-color: #8b0000;
30
28
  --grid-record-emphasized-color: #ff6b6b;
31
- }
29
+ }
32
30
 
33
- ox-grist {
34
- overflow-y: auto;
31
+ ox-grist { overflow-y: auto;
35
32
  flex: 1;
36
- }
33
+ }
37
34
 
38
- .header {
39
- grid-template-areas: 'filters actions';
40
- }
35
+ .header { grid-template-areas: 'filters actions';
36
+ }
41
37
  `
42
38
  ]; }
43
39
  get context() {
44
- return {
45
- title: i18next.t('title.approval done list'),
46
- search: {
47
- handler: (search) => {
40
+ return { title: i18next.t('title.approval done list'),
41
+ search: { handler: (search) => {
48
42
  this.grist.searchText = search;
49
43
  },
50
- value: this.grist?.searchText || ''
51
- },
52
- filter: {
53
- handler: () => {
44
+ value: this.grist?.searchText || '' },
45
+ filter: { handler: () => {
54
46
  this.grist.toggleHeadroom();
55
47
  }
56
48
  },
57
49
  help: 'worklist/approval-done-list-page',
58
50
  actions: [],
59
- toolbar: false
60
- };
51
+ toolbar: false };
61
52
  }
62
53
  render() {
63
54
  const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID');
@@ -68,16 +59,13 @@ let ApprovalDoneListPage = class ApprovalDoneListPage extends connect(store)(loc
68
59
  <ox-input-select-buttons
69
60
  .value=${this.filters}
70
61
  .options=${[
71
- {
72
- display: i18next.t('label.filter-important'),
62
+ { display: i18next.t('label.filter-important'),
73
63
  value: 'important'
74
64
  },
75
- {
76
- display: i18next.t('label.filter-due'),
65
+ { display: i18next.t('label.filter-due'),
77
66
  value: 'due'
78
67
  },
79
- {
80
- display: i18next.t('label.filter-rejected'),
68
+ { display: i18next.t('label.filter-rejected'),
81
69
  value: 'rejected'
82
70
  }
83
71
  ]}
@@ -95,16 +83,13 @@ let ApprovalDoneListPage = class ApprovalDoneListPage extends connect(store)(loc
95
83
  `;
96
84
  }
97
85
  async pageInitialized(lifecycle) {
98
- this.gristConfig = {
99
- list: {
100
- thumbnail: 'thumbnail',
86
+ this.gristConfig = { list: { thumbnail: 'thumbnail',
101
87
  fields: ['name', 'description'],
102
88
  details: ['createdAt', 'due']
103
89
  },
104
90
  columns: [
105
91
  { type: 'gutter', gutterName: 'sequence', fixed: true },
106
- {
107
- type: 'gutter',
92
+ { type: 'gutter',
108
93
  gutterName: 'button',
109
94
  icon: 'pageview',
110
95
  iconOnly: false,
@@ -112,43 +97,35 @@ let ApprovalDoneListPage = class ApprovalDoneListPage extends connect(store)(loc
112
97
  width: 72,
113
98
  fixed: true
114
99
  },
115
- {
116
- type: 'string',
100
+ { type: 'string',
117
101
  name: 'name',
118
102
  fixed: true,
119
103
  header: i18next.t('field.name'),
120
- record: {
121
- editable: false
104
+ record: { editable: false
122
105
  },
123
106
  filter: 'search',
124
107
  sortable: true,
125
108
  width: 225
126
109
  },
127
- {
128
- type: 'string',
110
+ { type: 'string',
129
111
  name: 'description',
130
112
  header: i18next.t('field.description'),
131
- record: {
132
- editable: false
113
+ record: { editable: false
133
114
  },
134
115
  filter: 'search',
135
116
  width: 275
136
117
  },
137
- {
138
- type: 'number',
118
+ { type: 'number',
139
119
  name: 'round',
140
120
  header: i18next.t('field.round'),
141
- record: {
142
- editable: false
121
+ record: { editable: false
143
122
  },
144
123
  width: 50
145
124
  },
146
- {
147
- type: 'string',
125
+ { type: 'string',
148
126
  name: 'viewSource',
149
127
  header: i18next.t('field.view-source'),
150
- record: {
151
- editable: false,
128
+ record: { editable: false,
152
129
  renderer: function (value, column, record, rowIndex, field) {
153
130
  const { viewType, viewSource } = record.activity || {};
154
131
  var type = viewType !== 'board' ? 'string' : 'board';
@@ -158,12 +135,10 @@ let ApprovalDoneListPage = class ApprovalDoneListPage extends connect(store)(loc
158
135
  width: 140,
159
136
  hidden: true
160
137
  },
161
- {
162
- type: 'number',
138
+ { type: 'number',
163
139
  name: 'priority',
164
140
  header: i18next.t('field.priority'),
165
- record: {
166
- editable: false,
141
+ record: { editable: false,
167
142
  renderer: function (value, column, record, rowIndex, field) {
168
143
  const count = new Array(value > 4 ? 4 : value || 0).fill('');
169
144
  return html `${count.map(() => html `<md-icon style="color:gray;">star</md-icon>`)}`;
@@ -171,12 +146,10 @@ let ApprovalDoneListPage = class ApprovalDoneListPage extends connect(store)(loc
171
146
  },
172
147
  width: 75
173
148
  },
174
- {
175
- type: 'select',
149
+ { type: 'select',
176
150
  name: 'judgment',
177
151
  header: i18next.t('field.judgment'),
178
- record: {
179
- editable: false,
152
+ record: { editable: false,
180
153
  align: 'center',
181
154
  options: [
182
155
  { display: i18next.t('label.activity-state-rejected'), value: 'rejected' },
@@ -188,57 +161,47 @@ let ApprovalDoneListPage = class ApprovalDoneListPage extends connect(store)(loc
188
161
  },
189
162
  width: 80
190
163
  },
191
- {
192
- type: 'string',
164
+ { type: 'string',
193
165
  name: 'comment',
194
166
  header: i18next.t('field.comment'),
195
- record: {
196
- editable: false
167
+ record: { editable: false
197
168
  },
198
169
  width: 200
199
170
  },
200
- {
201
- type: 'datetime',
171
+ { type: 'datetime',
202
172
  name: 'createdAt',
203
173
  header: i18next.t('field.created-at'),
204
- record: {
205
- editable: false
174
+ record: { editable: false
206
175
  },
207
176
  sortable: true,
208
177
  filter: false,
209
178
  width: 180
210
179
  },
211
- {
212
- type: 'datetime',
180
+ { type: 'datetime',
213
181
  name: 'terminatedAt',
214
182
  header: i18next.t('field.terminated-at'),
215
- record: {
216
- editable: false
183
+ record: { editable: false
217
184
  },
218
185
  sortable: true,
219
186
  filter: false,
220
187
  width: 180
221
188
  },
222
- {
223
- type: 'image',
189
+ { type: 'image',
224
190
  name: 'thumbnail',
225
191
  header: i18next.t('field.thumbnail'),
226
192
  record: { editable: false },
227
193
  hidden: true
228
194
  }
229
195
  ],
230
- rows: {
231
- appendable: false,
196
+ rows: { appendable: false,
232
197
  editable: false,
233
- handlers: {
234
- click: (columns, data, column, record, rowIndex) => {
198
+ handlers: { click: (columns, data, column, record, rowIndex) => {
235
199
  this.openActivityApproval(record);
236
200
  }
237
201
  }
238
202
  },
239
203
  sorters: [
240
- {
241
- name: 'terminatedAt',
204
+ { name: 'terminatedAt',
242
205
  desc: true
243
206
  }
244
207
  ]
@@ -260,20 +223,14 @@ let ApprovalDoneListPage = class ApprovalDoneListPage extends connect(store)(loc
260
223
  if (this.filters?.includes('rejected')) {
261
224
  filters = adjustFilters(filters, [{ name: 'judgment', operator: 'eq', value: 'rejected' }]);
262
225
  }
263
- const response = await client.query({
264
- query: gql `
265
- query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
266
- responses: approvalDoneList(filters: $filters, pagination: $pagination, sortings: $sortings) {
267
- items {
268
- id
226
+ const response = await client.query({ query: gql `
227
+ query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) { responses: approvalDoneList(filters: $filters, pagination: $pagination, sortings: $sortings) { items { id
269
228
  round
270
229
  judgment
271
230
  comment
272
231
  createdAt
273
232
  terminatedAt
274
- activityThread {
275
- activityInstance {
276
- activityId: id
233
+ activityThread { activityInstance { activityId: id
277
234
  name
278
235
  description
279
236
  priority
@@ -285,33 +242,29 @@ let ApprovalDoneListPage = class ApprovalDoneListPage extends connect(store)(loc
285
242
  thumbnail
286
243
  updatedAt
287
244
  createdAt
288
- creator {
289
- id
245
+ creator { id
290
246
  name
291
- }
292
- }
247
+ }
248
+ }
293
249
  state
294
250
  output
295
251
  dueAt
296
252
  assignedAt
297
- }
298
- }
253
+ }
254
+ }
299
255
  total
300
- }
301
- }
256
+ }
257
+ }
302
258
  `,
303
- variables: {
304
- filters,
259
+ variables: { filters,
305
260
  pagination: { page, limit },
306
261
  sortings
307
262
  }
308
263
  });
309
- return {
310
- total: response.data.responses.total || 0,
264
+ return { total: response.data.responses.total || 0,
311
265
  records: (response.data.responses.items || []).map(item => {
312
266
  let thread = item.activityThread;
313
- return {
314
- id: item.id,
267
+ return { id: item.id,
315
268
  ...thread.activityInstance,
316
269
  judgment: item.judgment,
317
270
  comment: item.comment,
@@ -1 +1 @@
1
- {"version":3,"file":"approval-done-list-page.js","sourceRoot":"","sources":["../../../client/pages/todo/approval-done-list-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/data-grist'\nimport '@operato/context/ox-context-page-toolbar.js'\nimport '@operato/input/ox-input-select-buttons.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin.js'\n\nimport { DataGrist, FetchOption, getRenderer } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { navigate, PageView, store } from '@operato/shell'\nimport { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'\nimport { adjustFilters, isMobileDevice } from '@operato/utils'\n\n@customElement('approval-done-list-page')\nexport class ApprovalDoneListPage extends connect(store)(localize(i18next)(PageView)) {\n static styles = [\n ScrollbarStyles,\n CommonHeaderStyles,\n css`\n :host {\n display: flex;\n\n width: 100%;\n\n --grid-record-emphasized-background-color: #8b0000;\n --grid-record-emphasized-color: #ff6b6b;\n }\n\n ox-grist {\n overflow-y: auto;\n flex: 1;\n }\n\n .header {\n grid-template-areas: 'filters actions';\n }\n `\n ]\n\n @property({ type: Object }) gristConfig?: any\n @property({ type: String }) mode: 'GRID' | 'LIST' | 'CARD' = isMobileDevice() ? 'CARD' : 'GRID'\n\n @query('ox-grist') grist!: DataGrist\n\n @state() filters?: string[]\n\n get context() {\n return {\n title: i18next.t('title.approval done list'),\n search: {\n handler: (search: string) => {\n this.grist.searchText = search\n },\n value: this.grist?.searchText || ''\n },\n filter: {\n handler: () => {\n this.grist.toggleHeadroom()\n }\n },\n help: 'worklist/approval-done-list-page',\n actions: [],\n toolbar: false\n }\n }\n\n render() {\n const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')\n\n return html`\n <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>\n <div slot=\"headroom\" class=\"header\">\n <div class=\"filters\">\n <ox-input-select-buttons\n .value=${this.filters}\n .options=${[\n {\n display: i18next.t('label.filter-important'),\n value: 'important'\n },\n {\n display: i18next.t('label.filter-due'),\n value: 'due'\n },\n {\n display: i18next.t('label.filter-rejected'),\n value: 'rejected'\n }\n ]}\n @change=${(e: CustomEvent) => {\n this.filters = (e.currentTarget as any)?.value\n this.grist.fetch()\n }}\n ></ox-input-select-buttons>\n <!-- <ox-filters-form class=\"filter\" autofocus without-search></ox-filters-form> -->\n </div>\n\n <ox-context-page-toolbar class=\"actions\" .context=${this.context}></ox-context-page-toolbar>\n </div>\n </ox-grist>\n `\n }\n\n async pageInitialized(lifecycle) {\n this.gristConfig = {\n list: {\n thumbnail: 'thumbnail',\n fields: ['name', 'description'],\n details: ['createdAt', 'due']\n },\n columns: [\n { type: 'gutter', gutterName: 'sequence', fixed: true },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'pageview',\n iconOnly: false,\n title: i18next.t('button.view'),\n width: 72,\n fixed: true\n },\n {\n type: 'string',\n name: 'name',\n fixed: true,\n header: i18next.t('field.name'),\n record: {\n editable: false\n },\n filter: 'search',\n sortable: true,\n width: 225\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: {\n editable: false\n },\n filter: 'search',\n width: 275\n },\n {\n type: 'number',\n name: 'round',\n header: i18next.t('field.round'),\n record: {\n editable: false\n },\n width: 50\n },\n {\n type: 'string',\n name: 'viewSource',\n header: i18next.t('field.view-source'),\n record: {\n editable: false,\n renderer: function (value, column, record, rowIndex, field) {\n const { viewType, viewSource } = record.activity || {}\n var type = viewType !== 'board' ? 'string' : 'board'\n return getRenderer(type)(viewSource, column, record, rowIndex, field)\n }\n },\n width: 140,\n hidden: true\n },\n {\n type: 'number',\n name: 'priority',\n header: i18next.t('field.priority'),\n record: {\n editable: false,\n renderer: function (value, column, record, rowIndex, field) {\n const count = new Array(value > 4 ? 4 : value || 0).fill('')\n return html`${count.map(() => html`<md-icon style=\"color:gray;\">star</md-icon>`)}`\n }\n },\n width: 75\n },\n {\n type: 'select',\n name: 'judgment',\n header: i18next.t('field.judgment'),\n record: {\n editable: false,\n align: 'center',\n options: [\n { display: i18next.t('label.activity-state-rejected'), value: 'rejected' },\n { display: i18next.t('label.activity-state-escalated'), value: 'escalated' },\n { display: i18next.t('label.activity-state-delegated'), value: 'delegated' },\n { display: i18next.t('label.activity-state-approved'), value: 'approved' },\n { display: i18next.t('label.activity-state-aborted'), value: 'aborted' }\n ]\n },\n width: 80\n },\n {\n type: 'string',\n name: 'comment',\n header: i18next.t('field.comment'),\n record: {\n editable: false\n },\n width: 200\n },\n {\n type: 'datetime',\n name: 'createdAt',\n header: i18next.t('field.created-at'),\n record: {\n editable: false\n },\n sortable: true,\n filter: false,\n width: 180\n },\n {\n type: 'datetime',\n name: 'terminatedAt',\n header: i18next.t('field.terminated-at'),\n record: {\n editable: false\n },\n sortable: true,\n filter: false,\n width: 180\n },\n {\n type: 'image',\n name: 'thumbnail',\n header: i18next.t('field.thumbnail'),\n record: { editable: false },\n hidden: true\n }\n ],\n rows: {\n appendable: false,\n editable: false,\n handlers: {\n click: (columns, data, column, record, rowIndex) => {\n this.openActivityApproval(record)\n }\n }\n },\n sorters: [\n {\n name: 'terminatedAt',\n desc: true\n }\n ]\n }\n }\n\n async pageUpdated(changes, lifecycle, changedBefore) {\n if (this.active) {\n this.grist?.fetch()\n }\n }\n\n async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) {\n if (this.filters?.includes('important')) {\n filters = adjustFilters(filters, [{ name: 'priority', operator: 'gte', value: 2 }])\n }\n\n if (this.filters?.includes('due')) {\n let tomorrow = new Date(Date.now() + 24 * 3600 * 1000).toISOString().replace('T', ' ')\n filters = adjustFilters(filters, [{ name: 'dueAt', operator: 'lte', value: tomorrow }])\n }\n\n if (this.filters?.includes('rejected')) {\n filters = adjustFilters(filters, [{ name: 'judgment', operator: 'eq', value: 'rejected' }])\n }\n\n const response = await client.query({\n query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {\n responses: approvalDoneList(filters: $filters, pagination: $pagination, sortings: $sortings) {\n items {\n id\n round\n judgment\n comment\n createdAt\n terminatedAt\n activityThread {\n activityInstance {\n activityId: id\n name\n description\n priority\n input\n refBy\n activityType\n viewType\n viewSource\n thumbnail\n updatedAt\n createdAt\n creator {\n id\n name\n }\n }\n state\n output\n dueAt\n assignedAt\n }\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 || []).map(item => {\n let thread = item.activityThread\n return {\n id: item.id,\n ...thread.activityInstance,\n judgment: item.judgment,\n comment: item.comment,\n round: item.round,\n createdAt: item.createdAt,\n terminatedAt: item.terminatedAt\n }\n })\n }\n }\n\n openActivityApproval(activityApproval) {\n navigate(`activity-approval/${activityApproval.id}?title=${activityApproval.name}`)\n }\n}\n"]}
1
+ {"version":3,"file":"approval-done-list-page.js","sourceRoot":"","sources":["../../../client/pages/todo/approval-done-list-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/data-grist'\nimport '@operato/context/ox-context-page-toolbar.js'\nimport '@operato/input/ox-input-select-buttons.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { DataGrist, FetchOption, getRenderer } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { navigate, PageView } from '@operato/shell'\nimport { CommonHeaderStyles, ScrollbarStyles } from '@operato/styles'\nimport { adjustFilters, isMobileDevice } from '@operato/utils'\n\n@customElement('approval-done-list-page')\nexport class ApprovalDoneListPage extends localize(i18next)(PageView) { static styles = [\n ScrollbarStyles,\n CommonHeaderStyles,\n css`\n :host { display: flex;\n\n width: 100%;\n\n --grid-record-emphasized-background-color: #8b0000;\n --grid-record-emphasized-color: #ff6b6b;\n }\n\n ox-grist { overflow-y: auto;\n flex: 1;\n }\n\n .header { grid-template-areas: 'filters actions';\n }\n `\n ]\n\n @property({ type: Object }) gristConfig?: any\n @property({ type: String }) mode: 'GRID' | 'LIST' | 'CARD' = isMobileDevice() ? 'CARD' : 'GRID'\n\n @query('ox-grist') grist!: DataGrist\n\n @state() filters?: string[]\n\n get context() { return { title: i18next.t('title.approval done list'),\n search: { handler: (search: string) => { this.grist.searchText = search\n },\n value: this.grist?.searchText || ''\n },\n filter: { handler: () => { this.grist.toggleHeadroom()\n }\n },\n help: 'worklist/approval-done-list-page',\n actions: [],\n toolbar: false\n }\n }\n\n render() { const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')\n\n return html`\n <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>\n <div slot=\"headroom\" class=\"header\">\n <div class=\"filters\">\n <ox-input-select-buttons\n .value=${this.filters}\n .options=${[\n { display: i18next.t('label.filter-important'),\n value: 'important'\n },\n { display: i18next.t('label.filter-due'),\n value: 'due'\n },\n { display: i18next.t('label.filter-rejected'),\n value: 'rejected'\n }\n ]}\n @change=${(e: CustomEvent) => { this.filters = (e.currentTarget as any)?.value\n this.grist.fetch()\n }}\n ></ox-input-select-buttons>\n <!-- <ox-filters-form class=\"filter\" autofocus without-search></ox-filters-form> -->\n </div>\n\n <ox-context-page-toolbar class=\"actions\" .context=${this.context}></ox-context-page-toolbar>\n </div>\n </ox-grist>\n `\n }\n\n async pageInitialized(lifecycle) { this.gristConfig = { list: { thumbnail: 'thumbnail',\n fields: ['name', 'description'],\n details: ['createdAt', 'due']\n },\n columns: [\n { type: 'gutter', gutterName: 'sequence', fixed: true },\n { type: 'gutter',\n gutterName: 'button',\n icon: 'pageview',\n iconOnly: false,\n title: i18next.t('button.view'),\n width: 72,\n fixed: true\n },\n { type: 'string',\n name: 'name',\n fixed: true,\n header: i18next.t('field.name'),\n record: { editable: false\n },\n filter: 'search',\n sortable: true,\n width: 225\n },\n { type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: { editable: false\n },\n filter: 'search',\n width: 275\n },\n { type: 'number',\n name: 'round',\n header: i18next.t('field.round'),\n record: { editable: false\n },\n width: 50\n },\n { type: 'string',\n name: 'viewSource',\n header: i18next.t('field.view-source'),\n record: { editable: false,\n renderer: function (value, column, record, rowIndex, field) { const { viewType, viewSource } = record.activity || {}\n var type = viewType !== 'board' ? 'string' : 'board'\n return getRenderer(type)(viewSource, column, record, rowIndex, field)\n }\n },\n width: 140,\n hidden: true\n },\n { type: 'number',\n name: 'priority',\n header: i18next.t('field.priority'),\n record: { editable: false,\n renderer: function (value, column, record, rowIndex, field) { const count = new Array(value > 4 ? 4 : value || 0).fill('')\n return html`${count.map(() => html`<md-icon style=\"color:gray;\">star</md-icon>`)}`\n }\n },\n width: 75\n },\n { type: 'select',\n name: 'judgment',\n header: i18next.t('field.judgment'),\n record: { editable: false,\n align: 'center',\n options: [\n { display: i18next.t('label.activity-state-rejected'), value: 'rejected' },\n { display: i18next.t('label.activity-state-escalated'), value: 'escalated' },\n { display: i18next.t('label.activity-state-delegated'), value: 'delegated' },\n { display: i18next.t('label.activity-state-approved'), value: 'approved' },\n { display: i18next.t('label.activity-state-aborted'), value: 'aborted' }\n ]\n },\n width: 80\n },\n { type: 'string',\n name: 'comment',\n header: i18next.t('field.comment'),\n record: { editable: false\n },\n width: 200\n },\n { type: 'datetime',\n name: 'createdAt',\n header: i18next.t('field.created-at'),\n record: { editable: false\n },\n sortable: true,\n filter: false,\n width: 180\n },\n { type: 'datetime',\n name: 'terminatedAt',\n header: i18next.t('field.terminated-at'),\n record: { editable: false\n },\n sortable: true,\n filter: false,\n width: 180\n },\n { type: 'image',\n name: 'thumbnail',\n header: i18next.t('field.thumbnail'),\n record: { editable: false },\n hidden: true\n }\n ],\n rows: { appendable: false,\n editable: false,\n handlers: { click: (columns, data, column, record, rowIndex) => { this.openActivityApproval(record)\n }\n }\n },\n sorters: [\n { name: 'terminatedAt',\n desc: true\n }\n ]\n }\n }\n\n async pageUpdated(changes, lifecycle, changedBefore) { if (this.active) { this.grist?.fetch()\n }\n }\n\n async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) { if (this.filters?.includes('important')) { filters = adjustFilters(filters, [{ name: 'priority', operator: 'gte', value: 2 }])\n }\n\n if (this.filters?.includes('due')) { let tomorrow = new Date(Date.now() + 24 * 3600 * 1000).toISOString().replace('T', ' ')\n filters = adjustFilters(filters, [{ name: 'dueAt', operator: 'lte', value: tomorrow }])\n }\n\n if (this.filters?.includes('rejected')) { filters = adjustFilters(filters, [{ name: 'judgment', operator: 'eq', value: 'rejected' }])\n }\n\n const response = await client.query({ query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) { responses: approvalDoneList(filters: $filters, pagination: $pagination, sortings: $sortings) { items { id\n round\n judgment\n comment\n createdAt\n terminatedAt\n activityThread { activityInstance { activityId: id\n name\n description\n priority\n input\n refBy\n activityType\n viewType\n viewSource\n thumbnail\n updatedAt\n createdAt\n creator { id\n name\n }\n }\n state\n output\n dueAt\n assignedAt\n }\n }\n total\n }\n }\n `,\n variables: { filters,\n pagination: { page, limit },\n sortings\n }\n })\n\n return { total: response.data.responses.total || 0,\n records: (response.data.responses.items || []).map(item => { let thread = item.activityThread\n return { id: item.id,\n ...thread.activityInstance,\n judgment: item.judgment,\n comment: item.comment,\n round: item.round,\n createdAt: item.createdAt,\n terminatedAt: item.terminatedAt\n }\n })\n }\n }\n\n openActivityApproval(activityApproval) { navigate(`activity-approval/${activityApproval.id}?title=${activityApproval.name}`)\n }\n}\n"]}
@@ -4,12 +4,6 @@ import '@operato/input/ox-input-select-buttons.js';
4
4
  import { DataGrist, FetchOption } from '@operato/data-grist';
5
5
  import { PageView } from '@operato/shell';
6
6
  declare const ApprovalPendingListPage_base: (new (...args: any[]) => {
7
- _storeUnsubscribe: import("redux").Unsubscribe;
8
- connectedCallback(): void;
9
- disconnectedCallback(): void;
10
- stateChanged(_state: unknown): void;
11
- readonly isConnected: boolean;
12
- }) & (new (...args: any[]) => {
13
7
  __preferenceProviders: {
14
8
  [element: string]: import("@operato/p13n").PagePreferenceProvider;
15
9
  };