@acorex-platform/module-project-management-client 0.0.32 → 0.0.37

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 (33) hide show
  1. package/fesm2022/acorex-platform-module-project-management-client-contracts-entities-project-member.mjs +234 -0
  2. package/fesm2022/acorex-platform-module-project-management-client-contracts-entities-project-member.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-project-management-client-contracts-entities-project-type-role-type.mjs +329 -0
  4. package/fesm2022/acorex-platform-module-project-management-client-contracts-entities-project-type-role-type.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-project-management-client-contracts-entities-project-type.mjs +359 -0
  6. package/fesm2022/acorex-platform-module-project-management-client-contracts-entities-project-type.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-project-management-client-contracts-entities-project.mjs +777 -0
  8. package/fesm2022/acorex-platform-module-project-management-client-contracts-entities-project.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog-acorex-platform-module-project-management-client-contracts-entity-catalog-BGnWVgGc.mjs +84 -0
  10. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog-acorex-platform-module-project-management-client-contracts-entity-catalog-BGnWVgGc.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog-project-member.entity-7eUAuCCT.mjs +172 -0
  12. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog-project-member.entity-7eUAuCCT.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog-project-type-role-type.entity-CA2Eu6uU.mjs +267 -0
  14. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog-project-type-role-type.entity-CA2Eu6uU.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog-project-type.entity-CAlaA4AY.mjs +297 -0
  16. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog-project-type.entity-CAlaA4AY.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog-project.entity-CNvGTlk_.mjs +715 -0
  18. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog-project.entity-CNvGTlk_.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog.mjs +2 -0
  20. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-module-project-management-client-contracts.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-module-project-management-client-local-entities.mjs +32 -0
  23. package/fesm2022/acorex-platform-module-project-management-client-local-entities.mjs.map +1 -0
  24. package/fesm2022/acorex-platform-module-project-management-client.mjs +3 -3
  25. package/fesm2022/acorex-platform-module-project-management-client.mjs.map +1 -1
  26. package/package.json +26 -2
  27. package/types/acorex-platform-module-project-management-client-contracts-entities-project-member.d.ts +5 -0
  28. package/types/acorex-platform-module-project-management-client-contracts-entities-project-type-role-type.d.ts +5 -0
  29. package/types/acorex-platform-module-project-management-client-contracts-entities-project-type.d.ts +5 -0
  30. package/types/acorex-platform-module-project-management-client-contracts-entities-project.d.ts +5 -0
  31. package/types/acorex-platform-module-project-management-client-contracts-entity-catalog.d.ts +10 -0
  32. package/types/acorex-platform-module-project-management-client-contracts.d.ts +13 -0
  33. package/types/acorex-platform-module-project-management-client-local-entities.d.ts +12 -0
@@ -0,0 +1,777 @@
1
+ import { AXPWidgetsCatalog, AXPWidgetsList } from '@acorex-platform/framework-shared/core';
2
+ import { createAllQueryView, entityMasterCrudActions, entityMasterRecordActions, AXPEntityCommandScope, entityDetailsCrudActions } from '@acorex-platform/framework-shared/entity';
3
+
4
+ /** Catalog scope for project-management workflows and related catalogs. */
5
+ const PM_CATALOG_SCOPE = 'project-management.pm';
6
+ /** Canonical entity source for {@link AXPEntityReference.type} on project subjects. */
7
+ const PM_PROJECT_ENTITY_SOURCE = 'ProjectManagement.Project';
8
+
9
+ const config = {
10
+ i18n: 'project-management',
11
+ module: 'ProjectManagement',
12
+ };
13
+ const RootConfig = {
14
+ config,
15
+ module: {
16
+ module: 'ProjectManagement',
17
+ name: 'ProjectManagement',
18
+ title: `@${config.i18n}:module.title`,
19
+ icon: 'fa-light fa-clipboard-list-check',
20
+ },
21
+ entities: {
22
+ projectTypeRoleType: {
23
+ name: 'ProjectTypeRoleType',
24
+ title: '@project-management:projects.project-type-role-types.title',
25
+ titlePlural: '@project-management:projects.project-type-role-types.plural',
26
+ icon: 'fa-light fa-user',
27
+ },
28
+ projectMember: {
29
+ name: 'ProjectMember',
30
+ title: '@project-management:projects.project-members.title',
31
+ titlePlural: '@project-management:projects.project-members.plural',
32
+ icon: 'fa-light fa-users',
33
+ },
34
+ projectType: {
35
+ name: 'ProjectType',
36
+ title: `@project-management:projects.project-types.title`,
37
+ titlePlural: `@project-management:projects.project-types.plural`,
38
+ icon: 'fa-light fa-rectangle-vertical-history',
39
+ },
40
+ projectTypeCategory: {
41
+ name: 'ProjectTypeCategory',
42
+ title: '@project-management:projects.project-type-categories.title',
43
+ titlePlural: '@project-management:projects.project-type-categories.plural',
44
+ icon: 'fa-light fa-layer-group',
45
+ },
46
+ project: {
47
+ name: 'Project',
48
+ source: `${config.module}.Project`,
49
+ title: '@project-management:projects.terms.title',
50
+ titlePlural: '@project-management:projects.terms.plural',
51
+ icon: 'fa-light fa-square-kanban',
52
+ },
53
+ },
54
+ queries: {
55
+ dashboard: {
56
+ activeProjectsKpi: `${config.module}:Dashboard:ActiveProjectsKpi`,
57
+ projectsByStatusBar: `${config.module}:Dashboard:ProjectsByStatusBar`,
58
+ projectsTasksCountBar: `${config.module}:Dashboard:ProjectsTasksCountBar`,
59
+ customersProjectsCountBar: `${config.module}:Dashboard:CustomersProjectsCountBar`,
60
+ },
61
+ reports: {
62
+ getProjectsByStatus: `${config.module}:Reports:GetProjectsByStatus`,
63
+ getMemberWorkload: `${config.module}:Reports:GetMemberWorkload`,
64
+ },
65
+ },
66
+ };
67
+
68
+ async function projectFactory() {
69
+ const entityDef = {
70
+ module: RootConfig.module.name,
71
+ name: RootConfig.entities.project.name,
72
+ title: RootConfig.entities.project.title,
73
+ icon: RootConfig.entities.project.icon,
74
+ formats: {
75
+ individual: RootConfig.entities.project.title,
76
+ plural: RootConfig.entities.project.titlePlural,
77
+ searchResult: {
78
+ title: '{{ title }}',
79
+ description: RootConfig.module.title,
80
+ },
81
+ },
82
+ plugins: [
83
+ { name: 'comments', options: { display: 'page' } },
84
+ { name: 'history' },
85
+ { name: 'archive' },
86
+ { name: 'identifier', options: { field: 'code', rule: 'project-code' } },
87
+ {
88
+ name: 'documents',
89
+ options: {
90
+ documentTypeNames: `{{ await ${RootConfig.module.name}.resolveDocumentTypeNames(context.eval("id")) }}`,
91
+ },
92
+ },
93
+ { name: 'unique-fields', options: { fields: 'code', scope: 'global' } },
94
+ {
95
+ name: 'status',
96
+ options: {
97
+ field: 'projectStatusId',
98
+ definition: 'project-management.status.projectStatus',
99
+ generate: {
100
+ actions: {
101
+ enabled: false,
102
+ },
103
+ },
104
+ },
105
+ },
106
+ {
107
+ name: 'meta-data-form',
108
+ options: {
109
+ path: 'projectTypeId',
110
+ title: '@project-management:projects.entities.project.components.meta-data-form.title',
111
+ },
112
+ },
113
+ { name: 'reports' },
114
+ ],
115
+ relatedEntities: [
116
+ {
117
+ entity: `${RootConfig.module.name}.${RootConfig.entities.projectMember.name}`,
118
+ title: RootConfig.entities.projectMember.titlePlural,
119
+ columns: ['employeeId', 'projectTypeRoleTypeId'],
120
+ conditions: [{ name: 'projectId', operator: { type: 'equal' }, value: '{{ context.eval("id") }}' }],
121
+ actions: [
122
+ {
123
+ title: '@general:actions.create.title',
124
+ command: {
125
+ name: 'Entity:Create',
126
+ options: {
127
+ process: {
128
+ redirect: false,
129
+ canCreateNewOne: true,
130
+ data: {
131
+ projectId: '{{ context.eval("id") }}',
132
+ projectTypeId: '{{ context.eval("projectType.id") }}',
133
+ },
134
+ },
135
+ },
136
+ },
137
+ priority: 'primary',
138
+ type: 'create',
139
+ scope: AXPEntityCommandScope.TypeLevel,
140
+ },
141
+ ...entityDetailsCrudActions('projectId', { create: false }),
142
+ ],
143
+ excludeProperties: ['projectId'],
144
+ layout: {
145
+ type: 'page-list',
146
+ },
147
+ },
148
+ {
149
+ entity: 'TaskManagement.Task',
150
+ title: '@task-management:task.plural-title',
151
+ columns: ['title', 'taskTypeId', 'dueDate', 'progress', 'statusId', 'assigneeId'],
152
+ conditions: [
153
+ { name: 'subjectRef.type', operator: { type: 'equal' }, value: PM_PROJECT_ENTITY_SOURCE },
154
+ { name: 'subjectRef.id', operator: { type: 'equal' }, value: '{{ context.eval("id") }}' },
155
+ ],
156
+ excludeProperties: ['subjectRef'],
157
+ actions: [
158
+ {
159
+ title: '@project-management:projects.entities.project.related-entities.task-start.title',
160
+ icon: 'fa-light fa-play',
161
+ command: {
162
+ name: 'Entity:Create',
163
+ options: {
164
+ process: {
165
+ redirect: false,
166
+ canCreateNewOne: true,
167
+ data: {},
168
+ },
169
+ },
170
+ },
171
+ priority: 'primary',
172
+ type: 'create',
173
+ scope: AXPEntityCommandScope.TypeLevel,
174
+ items: `{{ await ${RootConfig.module.name}.AllowedTaskTypes(context.eval("projectType.id")) }}`,
175
+ },
176
+ ...entityDetailsCrudActions('subjectRef.id', { create: false, edit: true, delete: true, view: true }),
177
+ ],
178
+ layout: { type: 'page-list', position: 'after', order: 10 },
179
+ },
180
+ ],
181
+ groups: [
182
+ { id: 'basic-info', title: `@general:terms.interface.basic-info` },
183
+ { id: 'organization-parties', title: `@project-management:projects.groups.organization-parties` },
184
+ { id: 'schedule', title: `@project-management:projects.groups.schedule` },
185
+ ],
186
+ properties: [
187
+ {
188
+ name: 'code',
189
+ title: '@general:terms.common.code',
190
+ groupId: 'basic-info',
191
+ options: {
192
+ sort: {
193
+ enabled: true,
194
+ },
195
+ filter: {
196
+ advance: {
197
+ enabled: true,
198
+ },
199
+ inline: {
200
+ enabled: true,
201
+ },
202
+ },
203
+ },
204
+ schema: {
205
+ dataType: 'string',
206
+ unique: { enabled: true },
207
+ readonly: '{{ !!context.eval("id") }}',
208
+ interface: {
209
+ type: AXPWidgetsCatalog.text,
210
+ },
211
+ },
212
+ validations: [{ rule: 'required' }],
213
+ },
214
+ {
215
+ name: 'title',
216
+ title: '@general:terms.common.title',
217
+ groupId: 'basic-info',
218
+ options: {
219
+ sort: {
220
+ enabled: true,
221
+ },
222
+ filter: {
223
+ advance: {
224
+ enabled: true,
225
+ },
226
+ inline: {
227
+ enabled: true,
228
+ },
229
+ },
230
+ },
231
+ schema: {
232
+ dataType: 'string',
233
+ interface: {
234
+ type: AXPWidgetsCatalog.text,
235
+ },
236
+ },
237
+ validations: [{ rule: 'required' }],
238
+ },
239
+ {
240
+ name: 'projectTypeId',
241
+ title: '@general:terms.common.type',
242
+ groupId: 'basic-info',
243
+ options: {
244
+ sort: {
245
+ enabled: true,
246
+ },
247
+ filter: {
248
+ advance: {
249
+ enabled: true,
250
+ },
251
+ inline: {
252
+ enabled: false,
253
+ },
254
+ },
255
+ },
256
+ schema: {
257
+ dataType: 'string',
258
+ readonly: '{{ context.eval("id") }}',
259
+ defaultValue: "{{ settings.get('ProjectManagementExtension:Setting:DefaultProjectTypeId') }}",
260
+ interface: {
261
+ type: AXPWidgetsCatalog.lookup,
262
+ options: {
263
+ look: 'select',
264
+ entity: `${RootConfig.module.name}.${RootConfig.entities.projectType.name}`,
265
+ expose: [
266
+ { source: 'id', target: 'projectType.id' },
267
+ { source: 'title', target: 'projectType.title' },
268
+ ],
269
+ },
270
+ },
271
+ },
272
+ validations: [{ rule: 'required' }],
273
+ },
274
+ {
275
+ name: 'customerId',
276
+ title: '@project-management:projects.terms.customerId',
277
+ groupId: 'organization-parties',
278
+ options: {
279
+ sort: { enabled: true },
280
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
281
+ },
282
+ schema: {
283
+ dataType: 'string',
284
+ interface: {
285
+ type: AXPWidgetsList.Editors.LookupBox,
286
+ options: {
287
+ entity: 'CustomerManagement.Customer',
288
+ textField: 'party.title',
289
+ valueField: 'id',
290
+ look: 'select',
291
+ columns: ['party.code', 'party.title', { name: 'partyId', visible: false }],
292
+ expose: [
293
+ { source: 'id', target: 'customer.id' },
294
+ { source: 'party.title', target: 'customer.title' },
295
+ { source: 'partyId', target: 'customer.partyId' },
296
+ ],
297
+ },
298
+ },
299
+ },
300
+ },
301
+ {
302
+ name: 'contactAssignmentId',
303
+ title: '@project-management:projects.terms.contactAssignmentId',
304
+ groupId: 'organization-parties',
305
+ options: {
306
+ sort: { enabled: true },
307
+ filter: { advance: { enabled: true }, inline: { enabled: false } },
308
+ },
309
+ schema: {
310
+ dataType: 'string',
311
+ nullable: true,
312
+ interface: {
313
+ type: AXPWidgetsList.Editors.LookupBox,
314
+ options: {
315
+ entity: 'PersonCore.ContactAssignment',
316
+ textField: 'person.fullName',
317
+ valueField: 'id',
318
+ look: 'select',
319
+ disabled: '{{ !context.eval("customerId") }}',
320
+ columns: ['person.fullName', 'role.title'],
321
+ expose: [
322
+ { source: 'id', target: 'contactAssignment.id' },
323
+ { source: 'person.fullName', target: 'contactAssignment.person.fullName' },
324
+ { source: 'role.title', target: 'contactAssignment.role.title' },
325
+ ],
326
+ filter: {
327
+ logic: 'and',
328
+ filters: [
329
+ {
330
+ field: 'partyId',
331
+ operator: { type: 'equal' },
332
+ /**
333
+ * Keep a concrete value so cascade cleanup does not disable the lookup.
334
+ * Falls back to an impossible id until customer.partyId is exposed.
335
+ */
336
+ value: '{{ context.eval("customer.partyId") || "00000000-0000-0000-0000-000000000000" }}',
337
+ },
338
+ ],
339
+ },
340
+ },
341
+ triggers: [
342
+ {
343
+ event: "{{ events.context('customerId') }}",
344
+ action: "{{ widget.setValue(null); context.set('contactAssignmentId', null); context.set('contactAssignment', null); widget.refresh(); }}",
345
+ },
346
+ {
347
+ event: "{{ events.context('customer.partyId') }}",
348
+ action: '{{ widget.refresh(); }}',
349
+ },
350
+ ],
351
+ },
352
+ },
353
+ },
354
+ {
355
+ name: 'locationAssignmentId',
356
+ title: '@project-management:projects.terms.location',
357
+ groupId: 'organization-parties',
358
+ options: {
359
+ sort: { enabled: true },
360
+ filter: { advance: { enabled: true }, inline: { enabled: false } },
361
+ },
362
+ schema: {
363
+ dataType: 'string',
364
+ interface: {
365
+ type: AXPWidgetsList.Editors.LookupBox,
366
+ options: {
367
+ entity: 'LocationManagement.LocationAssignment',
368
+ textField: 'location.title',
369
+ valueField: 'id',
370
+ look: 'select',
371
+ disabled: '{{ !context.eval("customerId") }}',
372
+ columns: ['location.title', 'role.title', 'location.street1', 'location.city.title'],
373
+ expose: [
374
+ { source: 'id', target: 'locationAssignment.id' },
375
+ { source: 'location.title', target: 'locationAssignment.title' },
376
+ { source: 'location.street1', target: 'locationAssignment.location.street1' },
377
+ { source: 'location.city.title', target: 'locationAssignment.location.city.title' },
378
+ ],
379
+ filter: {
380
+ logic: 'and',
381
+ filters: [
382
+ {
383
+ field: 'ownerRef.type',
384
+ operator: { type: 'equal' },
385
+ value: 'CustomerManagement.Customer',
386
+ },
387
+ {
388
+ field: 'ownerRef.id',
389
+ operator: { type: 'equal' },
390
+ value: '{{ context.eval("customerId") }}',
391
+ },
392
+ ],
393
+ },
394
+ },
395
+ triggers: [
396
+ {
397
+ event: "{{ events.context('customerId') }}",
398
+ action: "{{ widget.setValue(null); context.set('locationAssignmentId', null); context.set('locationAssignment', null); widget.refresh(); }}",
399
+ },
400
+ ],
401
+ },
402
+ },
403
+ },
404
+ {
405
+ name: 'description',
406
+ title: '@project-management:projects.terms.description',
407
+ groupId: 'basic-info',
408
+ options: {
409
+ sort: {
410
+ enabled: false,
411
+ },
412
+ filter: {
413
+ advance: {
414
+ enabled: false,
415
+ },
416
+ inline: {
417
+ enabled: false,
418
+ },
419
+ },
420
+ },
421
+ schema: {
422
+ dataType: 'string',
423
+ interface: {
424
+ type: AXPWidgetsCatalog.richText,
425
+ options: {
426
+ height: 200,
427
+ },
428
+ },
429
+ },
430
+ },
431
+ {
432
+ name: 'dueDate',
433
+ title: '@project-management:projects.terms.duedate',
434
+ groupId: 'schedule',
435
+ options: {
436
+ sort: {
437
+ enabled: true,
438
+ },
439
+ filter: {
440
+ advance: {
441
+ enabled: true,
442
+ },
443
+ inline: {
444
+ enabled: true,
445
+ },
446
+ },
447
+ },
448
+ schema: {
449
+ dataType: 'date',
450
+ interface: {
451
+ type: AXPWidgetsCatalog.dateTime,
452
+ options: {
453
+ showTime: false,
454
+ minValue: '{{ context.eval("startDate") }}',
455
+ },
456
+ triggers: [{ event: "{{ events.context('startDate') }}", action: `{{ widget.refresh() }}` }],
457
+ },
458
+ },
459
+ validations: [
460
+ {
461
+ rule: 'greaterThan',
462
+ message: '@project-management:projects.messages.date-on-or-after-start-date',
463
+ options: {
464
+ value: '{{ context.eval("startDate") }}',
465
+ inclusive: true,
466
+ },
467
+ },
468
+ ],
469
+ },
470
+ {
471
+ name: 'startDate',
472
+ title: '@project-management:projects.terms.startDate',
473
+ groupId: 'schedule',
474
+ options: {
475
+ sort: { enabled: true },
476
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
477
+ },
478
+ schema: {
479
+ dataType: 'date',
480
+ interface: {
481
+ type: AXPWidgetsCatalog.dateTime,
482
+ options: { showTime: false },
483
+ },
484
+ },
485
+ },
486
+ {
487
+ name: 'endDate',
488
+ title: '@project-management:projects.terms.endDate',
489
+ groupId: 'schedule',
490
+ options: {
491
+ sort: { enabled: true },
492
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
493
+ },
494
+ schema: {
495
+ dataType: 'date',
496
+ interface: {
497
+ type: AXPWidgetsCatalog.dateTime,
498
+ options: {
499
+ showTime: false,
500
+ minValue: '{{ context.eval("startDate") }}',
501
+ },
502
+ triggers: [{ event: "{{ events.context('startDate') }}", action: `{{ widget.refresh() }}` }],
503
+ },
504
+ },
505
+ validations: [
506
+ {
507
+ rule: 'greaterThan',
508
+ message: '@project-management:projects.messages.date-on-or-after-start-date',
509
+ options: {
510
+ value: '{{ context.eval("startDate") }}',
511
+ inclusive: true,
512
+ },
513
+ },
514
+ ],
515
+ },
516
+ {
517
+ name: 'actualStartDate',
518
+ title: '@project-management:projects.terms.actualStartDate',
519
+ groupId: 'schedule',
520
+ options: {
521
+ sort: { enabled: true },
522
+ filter: { advance: { enabled: true }, inline: { enabled: false } },
523
+ },
524
+ schema: {
525
+ dataType: 'date',
526
+ interface: {
527
+ type: AXPWidgetsCatalog.dateTime,
528
+ options: { showTime: false },
529
+ },
530
+ },
531
+ },
532
+ {
533
+ name: 'actualEndDate',
534
+ title: '@project-management:projects.terms.actualEndDate',
535
+ groupId: 'schedule',
536
+ options: {
537
+ sort: { enabled: true },
538
+ filter: { advance: { enabled: true }, inline: { enabled: false } },
539
+ },
540
+ schema: {
541
+ dataType: 'date',
542
+ interface: {
543
+ type: AXPWidgetsCatalog.dateTime,
544
+ options: {
545
+ showTime: false,
546
+ minValue: '{{ context.eval("actualStartDate") }}',
547
+ },
548
+ triggers: [{ event: "{{ events.context('actualStartDate') }}", action: `{{ widget.refresh() }}` }],
549
+ },
550
+ },
551
+ validations: [
552
+ {
553
+ rule: 'greaterThan',
554
+ message: '@project-management:projects.messages.date-on-or-after-actual-start-date',
555
+ options: {
556
+ value: '{{ context.eval("actualStartDate") }}',
557
+ inclusive: true,
558
+ },
559
+ },
560
+ ],
561
+ },
562
+ {
563
+ name: 'integrationRef',
564
+ title: '@project-management:projects.terms.integrationRef',
565
+ groupId: 'basic-info',
566
+ schema: {
567
+ dataType: 'object',
568
+ visible: false,
569
+ nullable: true,
570
+ readonly: true,
571
+ },
572
+ },
573
+ ],
574
+ columns: [
575
+ { name: 'code' },
576
+ { name: 'title' },
577
+ { name: 'customerId', options: { dataPath: 'customer.party.title' } },
578
+ {
579
+ name: 'contactAssignmentId',
580
+ title: '@project-management:projects.terms.contactAssignmentId',
581
+ options: { dataPath: 'contactAssignment.person.fullName' },
582
+ },
583
+ { name: 'dueDate' },
584
+ { name: 'description' },
585
+ { name: 'projectTypeId', options: { dataPath: 'projectType' } },
586
+ ],
587
+ interfaces: {
588
+ master: {
589
+ create: {
590
+ sections: [
591
+ { id: 'basic-info' },
592
+ { id: 'organization-parties' },
593
+ { id: 'schedule' },
594
+ ],
595
+ properties: [
596
+ {
597
+ name: 'code',
598
+ layout: { positions: { lg: { colSpan: 2, order: 1 } } },
599
+ },
600
+ {
601
+ name: 'title',
602
+ layout: { positions: { lg: { colSpan: 6, order: 2 } } },
603
+ },
604
+ {
605
+ name: 'projectTypeId',
606
+ layout: { positions: { lg: { colSpan: 4, order: 3 } } },
607
+ },
608
+ {
609
+ name: 'description',
610
+ layout: { positions: { lg: { colSpan: 12, order: 4 } } },
611
+ },
612
+ {
613
+ name: 'customerId',
614
+ layout: { order: 1, positions: { lg: { colSpan: 6, colStart: 1, order: 1 } } },
615
+ },
616
+ {
617
+ name: 'contactAssignmentId',
618
+ layout: { order: 2, positions: { lg: { colSpan: 6, colStart: 7, order: 2 } } },
619
+ },
620
+ {
621
+ name: 'locationAssignmentId',
622
+ layout: { order: 3, positions: { lg: { colSpan: 6, colStart: 1, order: 3 } } },
623
+ },
624
+ {
625
+ name: 'dueDate',
626
+ layout: { order: 1, positions: { lg: { colSpan: 4, order: 1 } } },
627
+ },
628
+ {
629
+ name: 'startDate',
630
+ layout: { order: 2, positions: { lg: { colSpan: 4, order: 2 } } },
631
+ },
632
+ {
633
+ name: 'endDate',
634
+ layout: { order: 3, positions: { lg: { colSpan: 4, order: 3 } } },
635
+ },
636
+ {
637
+ name: 'actualStartDate',
638
+ layout: { order: 4, positions: { lg: { colSpan: 4, colStart: 1, order: 4 } } },
639
+ },
640
+ {
641
+ name: 'actualEndDate',
642
+ layout: { order: 5, positions: { lg: { colSpan: 4, colStart: 5, order: 5 } } },
643
+ },
644
+ ],
645
+ },
646
+ update: {
647
+ sections: [
648
+ { id: 'basic-info' },
649
+ { id: 'organization-parties' },
650
+ { id: 'schedule' },
651
+ ],
652
+ properties: [
653
+ {
654
+ name: 'code',
655
+ layout: { positions: { lg: { colSpan: 2, order: 1 } } },
656
+ },
657
+ {
658
+ name: 'title',
659
+ layout: { positions: { lg: { colSpan: 6, order: 2 } } },
660
+ },
661
+ {
662
+ name: 'description',
663
+ layout: { positions: { lg: { colSpan: 12, order: 3 } } },
664
+ },
665
+ {
666
+ name: 'customerId',
667
+ layout: { order: 1, positions: { lg: { colSpan: 6, colStart: 1, order: 1 } } },
668
+ },
669
+ {
670
+ name: 'contactAssignmentId',
671
+ layout: { order: 2, positions: { lg: { colSpan: 6, colStart: 7, order: 2 } } },
672
+ },
673
+ {
674
+ name: 'locationAssignmentId',
675
+ layout: { order: 3, positions: { lg: { colSpan: 6, colStart: 1, order: 3 } } },
676
+ },
677
+ {
678
+ name: 'dueDate',
679
+ layout: { order: 1, positions: { lg: { colSpan: 4, order: 1 } } },
680
+ },
681
+ {
682
+ name: 'startDate',
683
+ layout: { order: 2, positions: { lg: { colSpan: 4, order: 2 } } },
684
+ },
685
+ {
686
+ name: 'endDate',
687
+ layout: { order: 3, positions: { lg: { colSpan: 4, order: 3 } } },
688
+ },
689
+ {
690
+ name: 'actualStartDate',
691
+ layout: { order: 4, positions: { lg: { colSpan: 4, order: 4 } } },
692
+ },
693
+ {
694
+ name: 'actualEndDate',
695
+ layout: { order: 5, positions: { lg: { colSpan: 4, order: 5 } } },
696
+ },
697
+ ],
698
+ },
699
+ single: {
700
+ title: '{{title}}',
701
+ sections: [
702
+ { id: 'basic-info' },
703
+ { id: 'organization-parties' },
704
+ { id: 'schedule' },
705
+ ],
706
+ properties: [
707
+ {
708
+ name: 'code',
709
+ layout: { positions: { lg: { colSpan: 2, order: 1 } } },
710
+ },
711
+ {
712
+ name: 'title',
713
+ layout: { positions: { lg: { colSpan: 6, order: 2 } } },
714
+ },
715
+ {
716
+ name: 'projectTypeId',
717
+ layout: { positions: { lg: { colSpan: 4, order: 3 } } },
718
+ },
719
+ {
720
+ name: 'description',
721
+ layout: { positions: { lg: { colSpan: 12, order: 4 } } },
722
+ },
723
+ {
724
+ name: 'customerId',
725
+ layout: { order: 1, positions: { lg: { colSpan: 6, colStart: 1, order: 1 } } },
726
+ },
727
+ {
728
+ name: 'contactAssignmentId',
729
+ layout: { order: 2, positions: { lg: { colSpan: 6, colStart: 7, order: 2 } } },
730
+ },
731
+ {
732
+ name: 'locationAssignmentId',
733
+ layout: { order: 3, positions: { lg: { colSpan: 6, colStart: 1, order: 3 } } },
734
+ },
735
+ {
736
+ name: 'dueDate',
737
+ layout: { order: 1, positions: { lg: { colSpan: 4, order: 1 } } },
738
+ },
739
+ {
740
+ name: 'startDate',
741
+ layout: { order: 2, positions: { lg: { colSpan: 4, order: 2 } } },
742
+ },
743
+ {
744
+ name: 'endDate',
745
+ layout: { order: 3, positions: { lg: { colSpan: 4, order: 3 } } },
746
+ },
747
+ {
748
+ name: 'actualStartDate',
749
+ layout: { order: 4, positions: { lg: { colSpan: 4, order: 4 } } },
750
+ },
751
+ {
752
+ name: 'actualEndDate',
753
+ layout: { order: 5, positions: { lg: { colSpan: 4, order: 5 } } },
754
+ },
755
+ ],
756
+ actions: [...entityMasterRecordActions()],
757
+ },
758
+ list: {
759
+ actions: [...entityMasterCrudActions()],
760
+ views: [
761
+ createAllQueryView({
762
+ sorts: [{ name: 'title', dir: 'asc' }],
763
+ }),
764
+ ],
765
+ },
766
+ },
767
+ },
768
+ };
769
+ return entityDef;
770
+ }
771
+
772
+ /**
773
+ * Generated bundle index. Do not edit.
774
+ */
775
+
776
+ export { projectFactory };
777
+ //# sourceMappingURL=acorex-platform-module-project-management-client-contracts-entities-project.mjs.map