@things-factory/process 8.0.6 → 9.0.0-beta.12

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 (62) hide show
  1. package/dist-client/tsconfig.tsbuildinfo +1 -1
  2. package/dist-server/tsconfig.tsbuildinfo +1 -1
  3. package/package.json +14 -14
  4. package/client/actions/main.ts +0 -1
  5. package/client/bootstrap.ts +0 -8
  6. package/client/index.ts +0 -1
  7. package/client/pages/event/event-importer.ts +0 -86
  8. package/client/pages/event/event-list-page.ts +0 -324
  9. package/client/pages/gateway/gateway-importer.ts +0 -87
  10. package/client/pages/gateway/gateway-list-page.ts +0 -323
  11. package/client/pages/main.ts +0 -25
  12. package/client/pages/process/process-importer.ts +0 -87
  13. package/client/pages/process/process-list-page.ts +0 -324
  14. package/client/pages/process-instance/process-instance-importer.ts +0 -87
  15. package/client/pages/process-instance/process-instance-list-page.ts +0 -323
  16. package/client/pages/process-thread/process-thread-importer.ts +0 -87
  17. package/client/pages/process-thread/process-thread-list-page.ts +0 -323
  18. package/client/reducers/main.ts +0 -17
  19. package/client/route.ts +0 -27
  20. package/client/tsconfig.json +0 -13
  21. package/server/controllers/common.ts +0 -90
  22. package/server/controllers/index.ts +0 -0
  23. package/server/controllers/process-instance/abort.ts +0 -75
  24. package/server/controllers/process-instance/end.ts +0 -74
  25. package/server/controllers/process-instance/index.ts +0 -2
  26. package/server/controllers/process-thread/_abort.ts +0 -20
  27. package/server/controllers/process-thread/abort.ts +0 -48
  28. package/server/controllers/process-thread/end.ts +0 -54
  29. package/server/controllers/process-thread/index.ts +0 -3
  30. package/server/controllers/process-thread/start.ts +0 -49
  31. package/server/index.ts +0 -4
  32. package/server/middlewares/index.ts +0 -3
  33. package/server/migrations/index.ts +0 -9
  34. package/server/routes.ts +0 -80
  35. package/server/service/index.ts +0 -44
  36. package/server/service/process/event-subscriber.ts +0 -17
  37. package/server/service/process/index.ts +0 -9
  38. package/server/service/process/process-history.ts +0 -108
  39. package/server/service/process/process-mutation.ts +0 -210
  40. package/server/service/process/process-query.ts +0 -120
  41. package/server/service/process/process-search-key-item-type.ts +0 -16
  42. package/server/service/process/process-type.ts +0 -65
  43. package/server/service/process/process.ts +0 -97
  44. package/server/service/process-instance/event-subscriber.ts +0 -44
  45. package/server/service/process-instance/index.ts +0 -10
  46. package/server/service/process-instance/process-instance-history.ts +0 -154
  47. package/server/service/process-instance/process-instance-mutation.ts +0 -33
  48. package/server/service/process-instance/process-instance-query.ts +0 -141
  49. package/server/service/process-instance/process-instance-subscription.ts +0 -46
  50. package/server/service/process-instance/process-instance-type.ts +0 -71
  51. package/server/service/process-instance/process-instance.ts +0 -147
  52. package/server/service/process-stats/index.ts +0 -3
  53. package/server/service/process-stats/process-stats-query.ts +0 -57
  54. package/server/service/process-stats/process-stats-type.ts +0 -31
  55. package/server/service/process-thread/event-subscriber.ts +0 -31
  56. package/server/service/process-thread/index.ts +0 -9
  57. package/server/service/process-thread/process-thread-mutation.ts +0 -34
  58. package/server/service/process-thread/process-thread-query.ts +0 -61
  59. package/server/service/process-thread/process-thread-subscription.ts +0 -42
  60. package/server/service/process-thread/process-thread-type.ts +0 -15
  61. package/server/service/process-thread/process-thread.ts +0 -90
  62. package/server/tsconfig.json +0 -10
@@ -1,324 +0,0 @@
1
- import '@operato/data-grist'
2
-
3
- import { CommonButtonStyles, CommonHeaderStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles'
4
- import { PageView, store } from '@operato/shell'
5
- import { css, html } from 'lit'
6
- import { customElement, property, query } from 'lit/decorators.js'
7
- import { ScopedElementsMixin } from '@open-wc/scoped-elements'
8
- import { ColumnConfig, DataGrist, FetchOption } from '@operato/data-grist'
9
- import { client } from '@operato/graphql'
10
- import { i18next, localize } from '@operato/i18n'
11
- import { notify, openPopup } from '@operato/layout'
12
- import { OxPopup } from '@operato/popup'
13
- import { isMobileDevice } from '@operato/utils'
14
-
15
- import { connect } from 'pwa-helpers/connect-mixin'
16
- import gql from 'graphql-tag'
17
-
18
- import { ProcessImporter } from './process-importer'
19
-
20
- @customElement('process-list-page')
21
- export class ProcessListPage extends connect(store)(localize(i18next)(ScopedElementsMixin(PageView))) {
22
- static styles = [
23
- ScrollbarStyles,
24
- CommonGristStyles,
25
- CommonHeaderStyles,
26
- css`
27
- :host {
28
- display: flex;
29
-
30
- width: 100%;
31
-
32
- --grid-record-emphasized-background-color: #8b0000;
33
- --grid-record-emphasized-color: #ff6b6b;
34
- }
35
-
36
- ox-grist {
37
- overflow-y: auto;
38
- flex: 1;
39
- }
40
-
41
- ox-filters-form {
42
- flex: 1;
43
- }
44
- `
45
- ]
46
-
47
- static get scopedElements() {
48
- return {
49
- 'process-importer': ProcessImporter
50
- }
51
- }
52
-
53
- @property({ type: Object }) gristConfig: any
54
- @property({ type: String }) mode: 'CARD' | 'GRID' | 'LIST' = isMobileDevice() ? 'CARD' : 'GRID'
55
-
56
- @query('ox-grist') private grist!: DataGrist
57
-
58
- get context() {
59
- return {
60
- title: i18next.t('title.process list'),
61
- search: {
62
- handler: (search: string) => {
63
- this.grist.searchText = search
64
- },
65
- value: this.grist?.searchText || ''
66
- },
67
- filter: {
68
- handler: () => {
69
- this.grist.toggleHeadroom()
70
- }
71
- },
72
- help: 'process/process',
73
- actions: [
74
- {
75
- title: i18next.t('button.save'),
76
- action: this._updateProcess.bind(this),
77
- ...CommonButtonStyles.save
78
- },
79
- {
80
- title: i18next.t('button.delete'),
81
- action: this._deleteProcess.bind(this),
82
- ...CommonButtonStyles.delete
83
- }
84
- ],
85
- exportable: {
86
- name: i18next.t('title.process list'),
87
- data: this.exportHandler.bind(this)
88
- },
89
- importable: {
90
- handler: this.importHandler.bind(this)
91
- }
92
- }
93
- }
94
-
95
- render() {
96
- const mode = this.mode || (isMobileDevice() ? 'CARD' : 'GRID')
97
-
98
- return html`
99
- <ox-grist .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>
100
- <div slot="headroom" class="header">
101
- <div class="filters">
102
- <ox-filters-form autofocus></ox-filters-form>
103
-
104
- <div id="modes">
105
- <md-icon @click=${() => (this.mode = 'GRID')} ?active=${mode == 'GRID'}>grid_on</md-icon>
106
- <md-icon @click=${() => (this.mode = 'LIST')} ?active=${mode == 'LIST'}>format_list_bulleted</md-icon>
107
- <md-icon @click=${() => (this.mode = 'CARD')} ?active=${mode == 'CARD'}>apps</md-icon>
108
- </div>
109
- </div>
110
- </div>
111
- </ox-grist>
112
- `
113
- }
114
-
115
- async pageInitialized(lifecycle: any) {
116
- this.gristConfig = {
117
- list: {
118
- fields: ['name', 'description'],
119
- details: ['active', 'updatedAt']
120
- },
121
- columns: [
122
- { type: 'gutter', gutterName: 'sequence' },
123
- { type: 'gutter', gutterName: 'row-selector', multiple: true },
124
- {
125
- type: 'string',
126
- name: 'name',
127
- header: i18next.t('field.name'),
128
- record: {
129
- editable: true
130
- },
131
- filter: 'search',
132
- sortable: true,
133
- width: 150
134
- },
135
- {
136
- type: 'string',
137
- name: 'description',
138
- header: i18next.t('field.description'),
139
- record: {
140
- editable: true
141
- },
142
- filter: 'search',
143
- width: 360
144
- },
145
- {
146
- type: 'checkbox',
147
- name: 'active',
148
- label: true,
149
- header: i18next.t('field.active'),
150
- record: {
151
- editable: true
152
- },
153
- filter: true,
154
- sortable: true,
155
- width: 60
156
- },
157
- {
158
- type: 'resource-object',
159
- name: 'updater',
160
- header: i18next.t('field.updater'),
161
- record: {
162
- editable: false
163
- },
164
- sortable: true,
165
- width: 120
166
- },
167
- {
168
- type: 'datetime',
169
- name: 'updatedAt',
170
- header: i18next.t('field.updated_at'),
171
- record: {
172
- editable: false
173
- },
174
- sortable: true,
175
- width: 180
176
- }
177
- ],
178
- rows: {
179
- selectable: {
180
- multiple: true
181
- }
182
- },
183
- sorters: [
184
- {
185
- name: 'name'
186
- }
187
- ]
188
- }
189
- }
190
-
191
- async pageUpdated(changes: any, lifecycle: any) {
192
- if (this.active) {
193
- // do something here when this page just became as active
194
- }
195
- }
196
-
197
- async fetchHandler({ page = 1, limit = 100, sortings = [], filters = [] }: FetchOption) {
198
- const response = await client.query({
199
- query: gql`
200
- query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
201
- responses: processes(filters: $filters, pagination: $pagination, sortings: $sortings) {
202
- items {
203
- id
204
- name
205
- description
206
- active
207
- updater {
208
- id
209
- name
210
- }
211
- updatedAt
212
- }
213
- total
214
- }
215
- }
216
- `,
217
- variables: {
218
- filters,
219
- pagination: { page, limit },
220
- sortings
221
- }
222
- })
223
-
224
- return {
225
- total: response.data.responses.total || 0,
226
- records: response.data.responses.items || []
227
- }
228
- }
229
-
230
- async _deleteProcess() {
231
- if (confirm(i18next.t('text.sure_to_x', { x: i18next.t('text.delete') }))) {
232
- const ids = this.grist.selected.map(record => record.id)
233
- if (ids && ids.length > 0) {
234
- const response = await client.mutate({
235
- mutation: gql`
236
- mutation ($ids: [String!]!) {
237
- deleteProcesses(ids: $ids)
238
- }
239
- `,
240
- variables: {
241
- ids
242
- }
243
- })
244
-
245
- if (!response.errors) {
246
- this.grist.fetch()
247
- notify({
248
- message: i18next.t('text.info_x_successfully', { x: i18next.t('text.delete') })
249
- })
250
- }
251
- }
252
- }
253
- }
254
-
255
- async _updateProcess() {
256
- let patches = this.grist.dirtyRecords
257
- if (patches && patches.length) {
258
- patches = patches.map(patch => {
259
- let patchField: any = patch.id ? { id: patch.id } : {}
260
- const dirtyFields = patch.__dirtyfields__
261
- for (let key in dirtyFields) {
262
- patchField[key] = dirtyFields[key].after
263
- }
264
- patchField.cuFlag = patch.__dirty__
265
-
266
- return patchField
267
- })
268
-
269
- const response = await client.mutate({
270
- mutation: gql`
271
- mutation ($patches: [ProcessPatch!]!) {
272
- updateMultipleProcess(patches: $patches) {
273
- name
274
- }
275
- }
276
- `,
277
- variables: {
278
- patches
279
- }
280
- })
281
-
282
- if (!response.errors) {
283
- this.grist.fetch()
284
- }
285
- }
286
- }
287
-
288
- async exportHandler() {
289
- const exportTargets = this.grist.selected.length ? this.grist.selected : this.grist.dirtyData.records
290
- const targetFieldSet = new Set(['id', 'name', 'description', 'active'])
291
-
292
- return exportTargets.map(process => {
293
- let tempObj = {}
294
- for (const field of targetFieldSet) {
295
- tempObj[field] = process[field]
296
- }
297
-
298
- return tempObj
299
- })
300
- }
301
-
302
- async importHandler(records) {
303
- const popup = openPopup(
304
- html`
305
- <process-importer
306
- .processes=${records}
307
- @imported=${() => {
308
- history.back()
309
- this.grist.fetch()
310
- }}
311
- ></process-importer>
312
- `,
313
- {
314
- backdrop: true,
315
- size: 'large',
316
- title: i18next.t('title.import process')
317
- }
318
- )
319
-
320
- popup.onclosed = () => {
321
- this.grist.fetch()
322
- }
323
- }
324
- }
@@ -1,87 +0,0 @@
1
- import '@material/web/icon/icon.js'
2
- import '@operato/data-grist'
3
-
4
- import gql from 'graphql-tag'
5
- import { css, html, LitElement } from 'lit'
6
- import { property } from 'lit/decorators.js'
7
-
8
- import { client } from '@operato/graphql'
9
- import { i18next } from '@operato/i18n'
10
- import { isMobileDevice } from '@operato/utils'
11
- import { CommonHeaderStyles } from '@operato/styles'
12
-
13
- export class ProcessInstanceImporter extends LitElement {
14
- static styles = [
15
- CommonHeaderStyles,
16
- css`
17
- :host {
18
- display: flex;
19
- flex-direction: column;
20
-
21
- background-color: var(--md-sys-color-surface);
22
- }
23
-
24
- ox-grist {
25
- flex: 1;
26
- }
27
- `
28
- ]
29
-
30
- @property({ type: Array }) processInstances: any[] = []
31
- @property({ type: Object }) columns = {
32
- list: { fields: ['name', 'description'] },
33
- pagination: { infinite: true },
34
- columns: [
35
- {
36
- type: 'string',
37
- name: 'name',
38
- header: i18next.t('field.name'),
39
- width: 150
40
- },
41
- {
42
- type: 'string',
43
- name: 'description',
44
- header: i18next.t('field.description'),
45
- width: 200
46
- },
47
- {
48
- type: 'checkbox',
49
- name: 'active',
50
- header: i18next.t('field.active'),
51
- width: 60
52
- }
53
- ]
54
- }
55
-
56
- render() {
57
- return html`
58
- <ox-grist
59
- .mode=${isMobileDevice() ? 'LIST' : 'GRID'}
60
- .config=${this.columns}
61
- .data=${{
62
- records: this.processInstances
63
- }}
64
- ></ox-grist>
65
-
66
- <div class="footer">
67
- <div filler></div>
68
- <button @click=${this.save.bind(this)} done><md-icon>save</md-icon>${i18next.t('button.save')}</button>
69
- </div>
70
- `
71
- }
72
-
73
- async save() {
74
- const response = await client.mutate({
75
- mutation: gql`
76
- mutation importProcessInstances($processInstances: [ProcessInstancePatch!]!) {
77
- importProcessInstances(processInstances: $processInstances)
78
- }
79
- `,
80
- variables: { processInstances: this.processInstances }
81
- })
82
-
83
- if (response.errors?.length) return
84
-
85
- this.dispatchEvent(new CustomEvent('imported'))
86
- }
87
- }