@things-factory/organization 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 (28) hide show
  1. package/dist-client/pages/approval-line/common-approval-line-templates-page.d.ts +1 -7
  2. package/dist-client/pages/approval-line/common-approval-line-templates-page.js +69 -128
  3. package/dist-client/pages/approval-line/common-approval-line-templates-page.js.map +1 -1
  4. package/dist-client/pages/approval-line/my-approval-line-templates-page.d.ts +1 -7
  5. package/dist-client/pages/approval-line/my-approval-line-templates-page.js +71 -132
  6. package/dist-client/pages/approval-line/my-approval-line-templates-page.js.map +1 -1
  7. package/dist-client/pages/department/department-list-page.d.ts +1 -7
  8. package/dist-client/pages/department/department-list-page.js +88 -157
  9. package/dist-client/pages/department/department-list-page.js.map +1 -1
  10. package/dist-client/pages/department/department-tree-page.d.ts +1 -7
  11. package/dist-client/pages/department/department-tree-page.js +68 -114
  12. package/dist-client/pages/department/department-tree-page.js.map +1 -1
  13. package/dist-client/pages/employee/employee-list-page.d.ts +0 -6
  14. package/dist-client/pages/employee/employee-list-page.js +124 -234
  15. package/dist-client/pages/employee/employee-list-page.js.map +1 -1
  16. package/dist-client/pages/employee/employees-by-department.d.ts +1 -7
  17. package/dist-client/pages/employee/employees-by-department.js +105 -188
  18. package/dist-client/pages/employee/employees-by-department.js.map +1 -1
  19. package/dist-client/route.d.ts +1 -1
  20. package/dist-client/tsconfig.tsbuildinfo +1 -1
  21. package/dist-server/service/employee/employee-mutation.js +1 -1
  22. package/dist-server/service/employee/employee-mutation.js.map +1 -1
  23. package/dist-server/service/index.d.ts +2 -2
  24. package/dist-server/tsconfig.tsbuildinfo +1 -1
  25. package/package.json +12 -12
  26. package/spec/unit/approval-line.spec.ts +329 -0
  27. package/spec/unit/department.spec.ts +253 -0
  28. package/spec/unit/employee.spec.ts +271 -0
@@ -1,77 +1,67 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import '@operato/data-tree';
3
3
  import { CommonHeaderStyles, CommonGristStyles, ScrollbarStyles } from '@operato/styles';
4
- import { PageView, store } from '@operato/shell';
4
+ import { PageView } from '@operato/shell';
5
5
  import { css, html } from 'lit';
6
6
  import { customElement, property, query, state } from 'lit/decorators.js';
7
7
  import { ScopedElementsMixin } from '@open-wc/scoped-elements';
8
8
  import { client } from '@operato/graphql';
9
9
  import { i18next, localize } from '@operato/i18n';
10
10
  import { DataGrist } from '@operato/data-grist';
11
- import { connect } from 'pwa-helpers/connect-mixin';
12
11
  import gql from 'graphql-tag';
13
12
  import { DepartmentImporter } from '../department/department-importer';
14
13
  import { Department } from '../../types/department';
15
14
  import { EmployeeListPage } from './employee-list-page';
16
15
  const departmentFragment = gql `
17
- fragment SubDepartmentFragment on Department {
18
- id
16
+ fragment SubDepartmentFragment on Department { id
19
17
  controlNo
20
18
  name
21
19
  description
22
20
 
23
- manager {
24
- id
21
+ manager { id
25
22
  name
26
23
  controlNo
27
24
  photo
28
25
  email
29
- }
26
+ }
30
27
  active
31
28
  state
32
29
  picture
33
30
 
34
- updater {
35
- id
31
+ updater { id
36
32
  name
37
- }
33
+ }
38
34
  updatedAt
39
- }
35
+ }
40
36
  `;
41
- let EmployeesByDepartment = class EmployeesByDepartment extends connect(store)(localize(i18next)(ScopedElementsMixin(PageView))) {
37
+ let EmployeesByDepartment = class EmployeesByDepartment extends localize(i18next)(ScopedElementsMixin(PageView)) {
42
38
  static { this.styles = [
43
39
  ScrollbarStyles,
44
40
  CommonGristStyles,
45
41
  CommonHeaderStyles,
46
42
  css `
47
- :host {
48
- display: flex;
43
+ :host { display: flex;
49
44
  flex-direction: row;
50
45
  overflow: auto;
51
- }
46
+ }
52
47
 
53
- ox-tree {
54
- flex: 1;
48
+ ox-tree { flex: 1;
55
49
  overflow: auto;
56
- }
50
+ }
57
51
 
58
- ox-grist {
59
- flex: 4;
60
- }
52
+ ox-grist { flex: 4;
53
+ }
61
54
 
62
- ox-filters-form {
63
- flex: 1;
64
- }
55
+ ox-filters-form { flex: 1;
56
+ }
65
57
  `
66
58
  ]; }
67
59
  static get scopedElements() {
68
- return {
69
- 'department-importer': DepartmentImporter
60
+ return { 'department-importer': DepartmentImporter
70
61
  };
71
62
  }
72
63
  get context() {
73
- return {
74
- title: i18next.t('title.employees-by-department'),
64
+ return { title: i18next.t('title.employees-by-department'),
75
65
  actions: []
76
66
  };
77
67
  }
@@ -94,56 +84,45 @@ let EmployeesByDepartment = class EmployeesByDepartment extends connect(store)(l
94
84
  `;
95
85
  }
96
86
  async pageInitialized(lifecycle) {
97
- this.gristConfig = {
98
- pagination: { pages: [100] },
99
- list: {
100
- thumbnail: 'profile',
87
+ this.gristConfig = { pagination: { pages: [100] },
88
+ list: { thumbnail: 'profile',
101
89
  fields: ['controlNo', 'name'],
102
90
  details: ['email', 'department', 'hiredOn', 'updatedAt']
103
91
  },
104
92
  columns: [
105
93
  { type: 'gutter', gutterName: 'sequence' },
106
- {
107
- type: 'string',
94
+ { type: 'string',
108
95
  name: 'controlNo',
109
96
  header: i18next.t('field.control-no'),
110
- record: {
111
- editable: true
97
+ record: { editable: true
112
98
  },
113
99
  filter: 'search',
114
100
  sortable: true,
115
101
  width: 105
116
102
  },
117
- {
118
- type: 'string',
103
+ { type: 'string',
119
104
  name: 'name',
120
105
  header: i18next.t('field.name'),
121
- record: {
122
- editable: true
106
+ record: { editable: true
123
107
  },
124
108
  filter: 'search',
125
109
  sortable: true,
126
110
  width: 100
127
111
  },
128
- {
129
- type: 'string',
112
+ { type: 'string',
130
113
  name: 'alias',
131
114
  header: i18next.t('label.alias'),
132
- record: {
133
- editable: true
115
+ record: { editable: true
134
116
  },
135
117
  filter: 'search',
136
118
  sortable: true,
137
119
  width: 110
138
120
  },
139
- {
140
- type: 'resource-object',
121
+ { type: 'resource-object',
141
122
  name: 'user',
142
123
  header: i18next.t('field.user'),
143
- record: {
144
- editable: true,
145
- options: {
146
- title: i18next.t('title.lookup user'),
124
+ record: { editable: true,
125
+ options: { title: i18next.t('title.lookup user'),
147
126
  queryName: 'users',
148
127
  basicArgs: { filters: [{ name: 'userType', operator: 'eq', value: 'user' }] },
149
128
  descriptionField: 'email',
@@ -159,43 +138,34 @@ let EmployeesByDepartment = class EmployeesByDepartment extends connect(store)(l
159
138
  filter: false,
160
139
  width: 100
161
140
  },
162
- {
163
- type: 'code',
141
+ { type: 'code',
164
142
  name: 'type',
165
143
  header: i18next.t('field.type'),
166
144
  width: 115,
167
145
  sortable: false,
168
146
  filter: false,
169
- record: {
170
- editable: true,
147
+ record: { editable: true,
171
148
  codeName: 'EMPLOYEE_TYPE'
172
149
  }
173
150
  },
174
- {
175
- type: 'department-object',
151
+ { type: 'department-object',
176
152
  name: 'department',
177
153
  header: i18next.t('field.department'),
178
- record: {
179
- editable: true
154
+ record: { editable: true
180
155
  },
181
156
  sortable: true,
182
157
  filter: false,
183
158
  width: 130
184
159
  },
185
- {
186
- type: 'resource-object',
160
+ { type: 'resource-object',
187
161
  name: 'supervisor',
188
162
  header: i18next.t('field.supervisor'),
189
- record: {
190
- editable: true,
191
- options: {
192
- title: i18next.t('title.employee list'),
163
+ record: { editable: true,
164
+ options: { title: i18next.t('title.employee list'),
193
165
  queryName: 'employees',
194
166
  pagination: { pages: [50, 100, 200] },
195
- basicArgs: {
196
- filters: [
197
- {
198
- name: 'active',
167
+ basicArgs: { filters: [
168
+ { name: 'active',
199
169
  operator: 'eq',
200
170
  value: true
201
171
  }
@@ -204,59 +174,49 @@ let EmployeesByDepartment = class EmployeesByDepartment extends connect(store)(l
204
174
  list: { fields: ['controlNo', 'name', 'alias', 'hiredOn'] },
205
175
  columns: [
206
176
  { name: 'id', hidden: true },
207
- {
208
- name: 'controlNo',
177
+ { name: 'controlNo',
209
178
  width: 120,
210
179
  header: { renderer: () => i18next.t('field.control-no') },
211
180
  filter: 'search',
212
181
  sortable: true
213
182
  },
214
- {
215
- name: 'name',
183
+ { name: 'name',
216
184
  width: 120,
217
185
  header: { renderer: () => i18next.t('field.name') },
218
186
  filter: 'search',
219
187
  sortable: true
220
188
  },
221
- {
222
- name: 'alias',
189
+ { name: 'alias',
223
190
  width: 150,
224
191
  header: { renderer: () => i18next.t('label.alias') },
225
192
  filter: 'search',
226
193
  sortable: true
227
194
  },
228
- {
229
- type: 'code',
195
+ { type: 'code',
230
196
  name: 'type',
231
197
  width: 110,
232
198
  header: { renderer: () => i18next.t('label.type') },
233
- record: {
234
- editable: false,
199
+ record: { editable: false,
235
200
  codeName: 'EMPLOYEE_TYPE'
236
201
  }
237
202
  },
238
- {
239
- type: 'code',
203
+ { type: 'code',
240
204
  name: 'jobPosition',
241
205
  width: 110,
242
206
  header: { renderer: () => i18next.t('label.job-position') },
243
- record: {
244
- editable: false,
207
+ record: { editable: false,
245
208
  codeName: 'JOB_POSITION'
246
209
  }
247
210
  },
248
- {
249
- type: 'code',
211
+ { type: 'code',
250
212
  name: 'jobResponsibility',
251
213
  width: 200,
252
214
  header: { renderer: () => i18next.t('label.job-responsibility') },
253
- record: {
254
- editable: false,
215
+ record: { editable: false,
255
216
  codeName: 'JOB_RESPONSIBILITY'
256
217
  }
257
218
  },
258
- {
259
- type: 'date',
219
+ { type: 'date',
260
220
  name: 'hiredOn',
261
221
  header: { renderer: () => i18next.t('field.hired-on') },
262
222
  width: 100
@@ -270,111 +230,91 @@ let EmployeesByDepartment = class EmployeesByDepartment extends connect(store)(l
270
230
  sortable: true,
271
231
  width: 120
272
232
  },
273
- {
274
- type: 'string',
233
+ { type: 'string',
275
234
  name: 'email',
276
235
  header: i18next.t('field.email'),
277
236
  width: 200,
278
- record: {
279
- editable: false,
237
+ record: { editable: false,
280
238
  renderer: function (value, column, record, rowIndex, field) {
281
239
  return record.contact ? record.contact.email : '';
282
240
  }
283
241
  },
284
242
  sortable: true
285
243
  },
286
- {
287
- type: 'string',
244
+ { type: 'string',
288
245
  name: 'phone',
289
246
  header: i18next.t('field.phone'),
290
247
  width: 110,
291
- record: {
292
- editable: false,
248
+ record: { editable: false,
293
249
  renderer: function (value, column, record, rowIndex, field) {
294
250
  return record.contact ? record.contact.phone : '';
295
251
  }
296
252
  },
297
253
  sortable: true
298
254
  },
299
- {
300
- type: 'code',
255
+ { type: 'code',
301
256
  name: 'jobResponsibility',
302
257
  header: i18next.t('label.job-responsibility'),
303
258
  width: 175,
304
- record: {
305
- editable: true,
259
+ record: { editable: true,
306
260
  codeName: 'JOB_RESPONSIBILITY'
307
261
  }
308
262
  },
309
- {
310
- type: 'code',
263
+ { type: 'code',
311
264
  name: 'jobPosition',
312
265
  header: i18next.t('label.job-position'),
313
266
  width: 100,
314
- record: {
315
- editable: true,
267
+ record: { editable: true,
316
268
  codeName: 'JOB_POSITION'
317
269
  }
318
270
  },
319
- {
320
- type: 'date',
271
+ { type: 'date',
321
272
  name: 'hiredOn',
322
273
  header: i18next.t('field.hired-on'),
323
274
  width: 100,
324
- record: {
325
- editable: true
275
+ record: { editable: true
326
276
  },
327
277
  sortable: true
328
278
  },
329
- {
330
- type: 'date',
279
+ { type: 'date',
331
280
  name: 'retiredOn',
332
281
  header: i18next.t('label.retired-at'),
333
282
  width: 100,
334
- record: {
335
- editable: true
283
+ record: { editable: true
336
284
  }
337
285
  },
338
- {
339
- type: 'checkbox',
286
+ { type: 'checkbox',
340
287
  name: 'active',
341
288
  label: true,
342
289
  header: i18next.t('field.active'),
343
290
  width: 70,
344
- record: {
345
- align: 'center',
291
+ record: { align: 'center',
346
292
  editable: true
347
293
  },
348
294
  filter: true,
349
295
  sortable: true
350
296
  },
351
- {
352
- type: 'string',
297
+ { type: 'string',
353
298
  name: 'note',
354
299
  header: i18next.t('field.note'),
355
300
  width: 200,
356
- record: {
357
- editable: true
301
+ record: { editable: true
358
302
  },
359
303
  filter: 'search'
360
304
  }
361
305
  ],
362
- rows: {
363
- selectable: {
364
- multiple: false
306
+ rows: { selectable: { multiple: false
365
307
  }
366
308
  },
367
309
  sorters: [
368
- {
369
- name: 'controlNo'
310
+ { name: 'controlNo'
370
311
  }
371
312
  ]
372
313
  };
373
314
  this.fetchDepartments();
374
315
  }
375
316
  async pageUpdated(changes, lifecycle) {
376
- if (this.active) {
377
- }
317
+ if (this.active) { }
378
318
  }
379
319
  async onSelect(e) {
380
320
  this.selected = e.detail;
@@ -383,18 +323,13 @@ let EmployeesByDepartment = class EmployeesByDepartment extends connect(store)(l
383
323
  }
384
324
  async fetchEmployees({ page = 1, limit = 100, sortings = [], filters = [] }) {
385
325
  if (this.selected) {
386
- filters.push({
387
- name: 'departmentId',
326
+ filters.push({ name: 'departmentId',
388
327
  operator: 'eq',
389
328
  value: this.selected.id
390
329
  });
391
330
  }
392
- const response = await client.query({
393
- query: gql `
394
- query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
395
- responses: employees(filters: $filters, pagination: $pagination, sortings: $sortings) {
396
- items {
397
- id
331
+ const response = await client.query({ query: gql `
332
+ query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) { responses: employees(filters: $filters, pagination: $pagination, sortings: $sortings) { items { id
398
333
  controlNo
399
334
  name
400
335
  alias
@@ -404,86 +339,68 @@ let EmployeesByDepartment = class EmployeesByDepartment extends connect(store)(l
404
339
  active
405
340
  email
406
341
  phone
407
- user {
408
- id
342
+ user { id
409
343
  name
410
- }
411
- department {
412
- id
344
+ }
345
+ department { id
413
346
  name
414
347
  description
415
- }
416
- supervisor {
417
- id
348
+ }
349
+ supervisor { id
418
350
  name
419
351
  controlNo
420
- }
352
+ }
421
353
  note
422
354
  hiredOn
423
355
  retiredOn
424
- contact {
425
- id
356
+ contact { id
426
357
  email
427
358
  phone
428
359
  address
429
- }
430
- profile {
431
- left
360
+ }
361
+ profile { left
432
362
  top
433
363
  zoom
434
364
  picture
435
- }
436
- updater {
437
- id
365
+ }
366
+ updater { id
438
367
  name
439
- }
368
+ }
440
369
  updatedAt
441
- }
370
+ }
442
371
  total
443
- }
444
- }
372
+ }
373
+ }
445
374
  `,
446
- variables: {
447
- filters,
375
+ variables: { filters,
448
376
  pagination: { page, limit },
449
377
  sortings
450
378
  }
451
379
  });
452
380
  const records = response.data.responses.items;
453
- return {
454
- total: response.data.responses.total || 0,
381
+ return { total: response.data.responses.total || 0,
455
382
  records
456
383
  };
457
384
  }
458
385
  async fetchDepartments() {
459
- const response = await client.query({
460
- query: gql `
461
- query {
462
- responses: departmentRoots {
463
- ...SubDepartmentFragment
464
- children {
465
- ...SubDepartmentFragment
466
- children {
467
- ...SubDepartmentFragment
468
- children {
469
- ...SubDepartmentFragment
470
- children {
471
- ...SubDepartmentFragment
472
- children {
473
- ...SubDepartmentFragment
474
- children {
475
- ...SubDepartmentFragment
476
- children {
477
- ...SubDepartmentFragment
478
- }
479
- }
480
- }
481
- }
482
- }
483
- }
484
- }
485
- }
486
- }
386
+ const response = await client.query({ query: gql `
387
+ query { responses: departmentRoots { ...SubDepartmentFragment
388
+ children { ...SubDepartmentFragment
389
+ children { ...SubDepartmentFragment
390
+ children { ...SubDepartmentFragment
391
+ children { ...SubDepartmentFragment
392
+ children { ...SubDepartmentFragment
393
+ children { ...SubDepartmentFragment
394
+ children { ...SubDepartmentFragment
395
+ }
396
+ }
397
+ }
398
+ }
399
+ }
400
+ }
401
+ }
402
+ }
403
+ }
487
404
 
488
405
  ${departmentFragment}
489
406
  `