@acorex/platform-generator 20.3.0-next.8 → 20.4.0

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 (135) hide show
  1. package/package.json +2 -2
  2. package/src/bin/interactive-entity-creator.js +84 -90
  3. package/src/generators/app-module/files/src/app/app.config.ts.template +63 -13
  4. package/src/generators/app-module/files/src/app/basic-interceptor.interceptor.ts.template +4 -4
  5. package/src/generators/app-module/files/src/app/modules/auth/auth-root.module.ts.template +13 -34
  6. package/src/generators/app-module/files/src/app/{app-version.provider.ts.template → modules/common/app-version.provider.ts.template} +4 -2
  7. package/src/generators/app-module/files/src/app/modules/common/default-settings.providers.ts.template +38 -0
  8. package/src/generators/app-module/files/src/app/modules/common/translation-root.module.ts.template +4 -3
  9. package/src/generators/app-module/files/src/app/modules/layout/entity.loader.ts.template +26 -9
  10. package/src/generators/app-module/files/src/app/modules/layout/layout-root.module.ts.template +15 -17
  11. package/src/generators/app-module/files/src/app/modules/layout/menu.provider.ts.template +1 -15
  12. package/src/generators/app-module/files/src/app/modules/layout/theme-palette.provider.ts.template +57 -0
  13. package/src/generators/app-module/files/src/app/modules/root/const.ts.template +25 -5
  14. package/src/generators/app-module/files/src/app/modules/root/menu.keys.ts.template +9 -0
  15. package/src/generators/app-module/files/src/app/modules/root/menu.provider.ts.template +61 -0
  16. package/src/generators/app-module/files/src/app/modules/root/mock.data.ts.template +13 -37
  17. package/src/generators/app-module/files/src/app/modules/root/permission-definition.provider.ts.template +51 -0
  18. package/src/generators/app-module/files/src/app/modules/root/permission.keys.ts.template +17 -0
  19. package/src/generators/app-module/files/src/app/modules/root/root.module.ts.template +39 -10
  20. package/src/generators/app-module/files/src/app/modules/root/sample/index.ts.template +9 -0
  21. package/src/generators/app-module/files/src/app/modules/root/sample/sample.entity.ts.template +146 -225
  22. package/src/generators/app-module/files/src/app/modules/root/sample/sample.module.ts.template +13 -5
  23. package/src/generators/app-module/files/src/app/modules/root/sample/sample.service.ts.template +26 -6
  24. package/src/generators/app-module/files/src/app/modules/root/sample/sample.types.ts.template +49 -11
  25. package/src/generators/app-module/files/src/app/modules/root/search-command.provider.ts.template +37 -0
  26. package/src/generators/app-module/files/src/assets/i18n/en-US/acorex.json +285 -0
  27. package/src/generators/app-module/files/src/assets/i18n/en-US/activity-log.json +31 -0
  28. package/src/generators/app-module/files/src/assets/i18n/en-US/application-management.json +112 -0
  29. package/src/generators/app-module/files/src/assets/i18n/en-US/auth.json +38 -3
  30. package/src/generators/app-module/files/src/assets/i18n/en-US/calendar-management.json +170 -0
  31. package/src/generators/app-module/files/src/assets/i18n/en-US/contact-management.json +182 -0
  32. package/src/generators/app-module/files/src/assets/i18n/en-US/content-management.json +23 -0
  33. package/src/generators/app-module/files/src/assets/i18n/en-US/conversation.json +120 -0
  34. package/src/generators/app-module/files/src/assets/i18n/en-US/customer-management.json +130 -0
  35. package/src/generators/app-module/files/src/assets/i18n/en-US/dashboard.json +231 -5
  36. package/src/generators/app-module/files/src/assets/i18n/en-US/data-management.json +93 -0
  37. package/src/generators/app-module/files/src/assets/i18n/en-US/document-management.json +321 -22
  38. package/src/generators/app-module/files/src/assets/i18n/en-US/dynamic-form-designer.json +58 -0
  39. package/src/generators/app-module/files/src/assets/i18n/en-US/extra-properties.json +39 -0
  40. package/src/generators/app-module/files/src/assets/i18n/en-US/form-template-management.json +61 -0
  41. package/src/generators/app-module/files/src/assets/i18n/en-US/general-old.json +800 -0
  42. package/src/generators/app-module/files/src/assets/i18n/en-US/general.json +993 -4
  43. package/src/generators/app-module/files/src/assets/i18n/en-US/help-desk.json +55 -0
  44. package/src/generators/app-module/files/src/assets/i18n/en-US/human-capital-management.json +144 -0
  45. package/src/generators/app-module/files/src/assets/i18n/en-US/layout-designer.json +19 -0
  46. package/src/generators/app-module/files/src/assets/i18n/en-US/locale-management.json +30 -0
  47. package/src/generators/app-module/files/src/assets/i18n/en-US/location-management.json +46 -0
  48. package/src/generators/app-module/files/src/assets/i18n/en-US/lock-system.json +40 -0
  49. package/src/generators/app-module/files/src/assets/i18n/en-US/log-management.json +29 -21
  50. package/src/generators/app-module/files/src/assets/i18n/en-US/meeting-management.json +69 -0
  51. package/src/generators/app-module/files/src/assets/i18n/en-US/module.json.template +45 -0
  52. package/src/generators/app-module/files/src/assets/i18n/en-US/notification-management.json +37 -0
  53. package/src/generators/app-module/files/src/assets/i18n/en-US/organization-management.json +59 -138
  54. package/src/generators/app-module/files/src/assets/i18n/en-US/party-management.json +300 -0
  55. package/src/generators/app-module/files/src/assets/i18n/en-US/platform-management.json +20 -79
  56. package/src/generators/app-module/files/src/assets/i18n/en-US/project-management.json +157 -0
  57. package/src/generators/app-module/files/src/assets/i18n/en-US/questionnaire.json +118 -0
  58. package/src/generators/app-module/files/src/assets/i18n/en-US/regional.json +41 -8
  59. package/src/generators/app-module/files/src/assets/i18n/en-US/report-management.json +76 -0
  60. package/src/generators/app-module/files/src/assets/i18n/en-US/security-management.json +42 -3
  61. package/src/generators/app-module/files/src/assets/i18n/en-US/settings.json +17 -0
  62. package/src/generators/app-module/files/src/assets/i18n/en-US/task-management.json +151 -0
  63. package/src/generators/app-module/files/src/assets/i18n/en-US/text-template-management.json +3 -1
  64. package/src/generators/app-module/files/src/assets/i18n/en-US/training-management.json +50 -0
  65. package/src/generators/app-module/files/src/assets/i18n/en-US/workflow-management.json +21 -0
  66. package/src/generators/app-module/files/src/assets/i18n/fa-IR/acorex.json +285 -0
  67. package/src/generators/app-module/files/src/assets/i18n/fa-IR/activity-log.json +31 -0
  68. package/src/generators/app-module/files/src/assets/i18n/fa-IR/application-management.json +112 -0
  69. package/src/generators/app-module/files/src/assets/i18n/fa-IR/auth.json +74 -38
  70. package/src/generators/app-module/files/src/assets/i18n/fa-IR/calendar-management.json +170 -0
  71. package/src/generators/app-module/files/src/assets/i18n/fa-IR/contact-management.json +182 -0
  72. package/src/generators/app-module/files/src/assets/i18n/fa-IR/content-management.json +23 -0
  73. package/src/generators/app-module/files/src/assets/i18n/fa-IR/conversation.json +80 -0
  74. package/src/generators/app-module/files/src/assets/i18n/fa-IR/customer-management.json +130 -0
  75. package/src/generators/app-module/files/src/assets/i18n/fa-IR/dashboard.json +231 -5
  76. package/src/generators/app-module/files/src/assets/i18n/fa-IR/data-management.json +93 -0
  77. package/src/generators/app-module/files/src/assets/i18n/fa-IR/document-management.json +333 -29
  78. package/src/generators/app-module/files/src/assets/i18n/fa-IR/dynamic-form-designer.json +39 -0
  79. package/src/generators/app-module/files/src/assets/i18n/fa-IR/extra-properties.json +39 -0
  80. package/src/generators/app-module/files/src/assets/i18n/fa-IR/form-template-management.json +82 -21
  81. package/src/generators/app-module/files/src/assets/i18n/fa-IR/general-old.json +800 -0
  82. package/src/generators/app-module/files/src/assets/i18n/fa-IR/general.json +987 -9
  83. package/src/generators/app-module/files/src/assets/i18n/fa-IR/global-search.json +5 -5
  84. package/src/generators/app-module/files/src/assets/i18n/fa-IR/help-desk.json +55 -0
  85. package/src/generators/app-module/files/src/assets/i18n/fa-IR/human-capital-management.json +144 -0
  86. package/src/generators/app-module/files/src/assets/i18n/fa-IR/layout-designer.json +19 -0
  87. package/src/generators/app-module/files/src/assets/i18n/fa-IR/layout.json +14 -14
  88. package/src/generators/app-module/files/src/assets/i18n/fa-IR/locale-management.json +30 -0
  89. package/src/generators/app-module/files/src/assets/i18n/fa-IR/location-management.json +46 -0
  90. package/src/generators/app-module/files/src/assets/i18n/fa-IR/lock-system.json +40 -0
  91. package/src/generators/app-module/files/src/assets/i18n/fa-IR/log-management.json +99 -47
  92. package/src/generators/app-module/files/src/assets/i18n/fa-IR/meeting-management.json +69 -0
  93. package/src/generators/app-module/files/src/assets/i18n/fa-IR/module.json.template +45 -0
  94. package/src/generators/app-module/files/src/assets/i18n/fa-IR/notification-management.json +59 -22
  95. package/src/generators/app-module/files/src/assets/i18n/fa-IR/organization-management.json +74 -152
  96. package/src/generators/app-module/files/src/assets/i18n/fa-IR/party-management.json +300 -0
  97. package/src/generators/app-module/files/src/assets/i18n/fa-IR/platform-management.json +38 -93
  98. package/src/generators/app-module/files/src/assets/i18n/fa-IR/project-management.json +157 -0
  99. package/src/generators/app-module/files/src/assets/i18n/fa-IR/questionnaire.json +118 -0
  100. package/src/generators/app-module/files/src/assets/i18n/fa-IR/regional.json +71 -38
  101. package/src/generators/app-module/files/src/assets/i18n/fa-IR/report-management.json +76 -0
  102. package/src/generators/app-module/files/src/assets/i18n/fa-IR/scheduler-job-management.json +4 -4
  103. package/src/generators/app-module/files/src/assets/i18n/fa-IR/security-management.json +43 -4
  104. package/src/generators/app-module/files/src/assets/i18n/fa-IR/settings.json +33 -16
  105. package/src/generators/app-module/files/src/assets/i18n/fa-IR/task-management.json +151 -0
  106. package/src/generators/app-module/files/src/assets/i18n/fa-IR/text-template-management.json +8 -5
  107. package/src/generators/app-module/files/src/assets/i18n/fa-IR/training-management.json +50 -0
  108. package/src/generators/app-module/files/src/assets/i18n/fa-IR/workflow-management.json +20 -0
  109. package/src/generators/app-module/files/src/environments/environment.dev.ts.template +1 -0
  110. package/src/generators/app-module/files/src/environments/environment.ts.template +1 -0
  111. package/src/generators/app-module/generator.js +3 -0
  112. package/src/generators/app-module/generator.js.map +1 -1
  113. package/src/generators/create-module-entity/files/__entityFileName__.entity.ts__tmpl__ +1 -1
  114. package/src/generators/create-tag-entity/files/tag-__entityFileName__.entity.ts__tmpl__ +1 -1
  115. package/src/generators/create-widget/files/__fileName__-widget-column.component.ts__tmpl__ +1 -1
  116. package/src/generators/create-widget/files/__fileName__-widget-edit.component.ts__tmpl__ +1 -1
  117. package/src/generators/create-widget/files/__fileName__-widget-filter.component.ts__tmpl__ +1 -1
  118. package/src/generators/create-widget/files/__fileName__-widget-print.component.ts__tmpl__ +1 -1
  119. package/src/generators/create-widget/files/__fileName__-widget-view.component.ts__tmpl__ +1 -1
  120. package/src/generators/create-widget/files/__fileName__-widget.config.ts__tmpl__ +2 -2
  121. package/src/generators/app-module/files/src/app/app.config.api.ts.template +0 -105
  122. package/src/generators/app-module/files/src/app/app.module.api.ts.template +0 -108
  123. package/src/generators/app-module/files/src/app/app.module.ts.template +0 -113
  124. package/src/generators/app-module/files/src/app/modules/auth/application.loader.ts.template +0 -34
  125. package/src/generators/app-module/files/src/app/modules/auth/auth.strategy.ts.template +0 -93
  126. package/src/generators/app-module/files/src/app/modules/auth/feature.loader.ts.template +0 -17
  127. package/src/generators/app-module/files/src/app/modules/auth/permission.loader.ts.template +0 -20
  128. package/src/generators/app-module/files/src/app/modules/auth/tenant.loader.ts.template +0 -26
  129. package/src/generators/app-module/files/src/app/modules/root/sample/sample.component.html.template +0 -15
  130. package/src/generators/app-module/files/src/app/modules/root/sample/sample.component.scss.template +0 -10
  131. package/src/generators/app-module/files/src/app/modules/root/sample/sample.component.ts.template +0 -20
  132. package/src/generators/app-module/files/src/assets/i18n/en-US/common.json +0 -404
  133. package/src/generators/app-module/files/src/assets/i18n/en-US/vehicle-management.json +0 -146
  134. package/src/generators/app-module/files/src/assets/i18n/fa-IR/common.json +0 -386
  135. package/src/generators/app-module/files/src/assets/i18n/fa-IR/vehicle-management.json +0 -144
@@ -0,0 +1,9 @@
1
+ //#region ---- Exports ----
2
+
3
+ export * from './sample.entity';
4
+ export * from './sample.module';
5
+ export * from './sample.service';
6
+ export * from './sample.types';
7
+
8
+ //#endregion
9
+
@@ -1,34 +1,68 @@
1
- import { AXPEntity, AXPEntityCommandScope, AXPEntityQueryType } from '@acorex/platform/common';
2
- import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
1
+ //#region ---- Imports ----
2
+
3
+ import { AXPEntity, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';
4
+ import { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';
5
+ import { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';
3
6
  import { Injector } from '@angular/core';
4
- import { AXMSampleModuleConst } from '../const';
7
+ import { RootConfig } from '../const';
5
8
  import { AXMSampleEntityService } from './sample.service';
6
9
 
10
+ //#endregion
11
+
12
+ //#region ---- Sample Entity Factory ----
13
+
14
+ /**
15
+ * Factory function to create Sample entity definition
16
+ */
7
17
  export async function sampleFactory(injector: Injector): Promise<AXPEntity | null> {
18
+
19
+ //#region ---- Services ----
20
+
8
21
  const dataService = injector.get(AXMSampleEntityService);
22
+
23
+ //#endregion
9
24
 
10
- const moduleName = AXMSampleModuleConst.moduleName;
25
+ //#region ---- Entity Definition ----
26
+
27
+ const i18n = RootConfig.config.i18n;
11
28
 
12
29
  const entityDef: AXPEntity = {
13
- module: moduleName,
14
- name: AXMSampleModuleConst.categoryEntity,
15
- source: '',
16
- title: 'Sample Entity',
30
+ module: RootConfig.module.name,
31
+ name: RootConfig.entities.sample.name,
32
+ title: RootConfig.entities.sample.title,
33
+ icon: RootConfig.entities.sample.icon,
34
+
17
35
  formats: {
18
- individual: 'Sample',
19
- plural: 'Samples',
36
+ individual: `@${i18n}:sample.individual-title`,
37
+ plural: `@${i18n}:sample.plural-title`,
38
+ displayName: '{{firstname}} {{lastname}}',
39
+ searchResult: {
40
+ title: '{{firstname}} {{lastname}}',
41
+ description: RootConfig.module.title,
42
+ },
20
43
  },
44
+
45
+ plugins: [
46
+ { name: 'history' },
47
+ { name: 'lock' },
48
+ { name: 'compare' },
49
+ { name: 'archive' },
50
+ { name: 'extra-properties' },
51
+ ],
52
+
21
53
  relatedEntities: [],
54
+
22
55
  groups: [
23
56
  {
24
- id: 'personal',
25
- title: 'Personal',
57
+ id: 'personal-info',
58
+ title: `@${i18n}:sample.groups.personal-info`,
26
59
  },
27
60
  {
28
- id: 'address',
29
- title: 'Address',
61
+ id: 'contact-info',
62
+ title: `@${i18n}:sample.groups.contact-info`,
30
63
  },
31
64
  ],
65
+
32
66
  properties: [
33
67
  {
34
68
  name: 'id',
@@ -38,15 +72,13 @@ export async function sampleFactory(injector: Injector): Promise<AXPEntity | nul
38
72
  hidden: true,
39
73
  nullable: false,
40
74
  readonly: true,
41
- unique: {
42
- enabled: true,
43
- },
75
+ unique: { enabled: true },
44
76
  },
45
77
  },
46
78
  {
47
79
  name: 'firstname',
48
- title: 'First Name',
49
- groupId: 'personal',
80
+ title: `@${i18n}:sample.properties.firstname`,
81
+ groupId: 'personal-info',
50
82
  schema: {
51
83
  dataType: 'string',
52
84
  interface: {
@@ -55,24 +87,20 @@ export async function sampleFactory(injector: Injector): Promise<AXPEntity | nul
55
87
  },
56
88
  options: {
57
89
  filter: {
58
- inline: {
59
- enabled: true,
60
- },
61
- },
62
- sort: {
63
- enabled: true,
90
+ inline: { enabled: true },
91
+ advance: { enabled: true },
64
92
  },
93
+ sort: { enabled: true },
65
94
  },
66
95
  validations: [
67
- {
68
- rule: 'required',
69
- },
96
+ { rule: 'required' },
97
+ { rule: 'minLength', options: { value: 2 } },
70
98
  ],
71
99
  },
72
100
  {
73
101
  name: 'lastname',
74
- title: 'Last Name',
75
- groupId: 'personal',
102
+ title: `@${i18n}:sample.properties.lastname`,
103
+ groupId: 'personal-info',
76
104
  schema: {
77
105
  dataType: 'string',
78
106
  interface: {
@@ -81,73 +109,94 @@ export async function sampleFactory(injector: Injector): Promise<AXPEntity | nul
81
109
  },
82
110
  options: {
83
111
  filter: {
84
- inline: {
85
- enabled: true,
86
- },
87
- },
88
- sort: {
89
- enabled: true,
112
+ inline: { enabled: true },
113
+ advance: { enabled: true },
90
114
  },
115
+ sort: { enabled: true },
91
116
  },
92
117
  validations: [
93
- {
94
- rule: 'required',
118
+ { rule: 'required' },
119
+ { rule: 'minLength', options: { value: 2 } },
120
+ ],
121
+ },
122
+ {
123
+ name: 'email',
124
+ title: `@${i18n}:sample.properties.email`,
125
+ groupId: 'contact-info',
126
+ schema: {
127
+ dataType: 'string',
128
+ interface: {
129
+ type: AXPWidgetsCatalog.text,
130
+ },
131
+ },
132
+ options: {
133
+ filter: {
134
+ inline: { enabled: true },
135
+ advance: { enabled: true },
95
136
  },
137
+ sort: { enabled: true },
138
+ },
139
+ validations: [
140
+ { rule: 'required' },
141
+ { rule: 'email' },
96
142
  ],
97
143
  },
98
144
  {
99
- name: 'address',
100
- title: 'Address',
101
- groupId: 'address',
145
+ name: 'phone',
146
+ title: `@${i18n}:sample.properties.phone`,
147
+ groupId: 'contact-info',
102
148
  schema: {
103
149
  dataType: 'string',
104
150
  interface: {
105
151
  type: AXPWidgetsCatalog.text,
152
+ },
153
+ },
154
+ options: {
155
+ filter: {
156
+ inline: { enabled: true },
157
+ advance: { enabled: true },
158
+ },
159
+ },
160
+ },
161
+ {
162
+ name: 'address',
163
+ title: `@${i18n}:sample.properties.address`,
164
+ groupId: 'contact-info',
165
+ schema: {
166
+ dataType: 'string',
167
+ interface: {
168
+ type: AXPWidgetsCatalog.largeText,
106
169
  options: {
107
- multiple: false,
108
- hasLabel: false,
170
+ rows: 3,
109
171
  },
110
172
  },
111
173
  },
112
174
  },
113
175
  ],
114
- columns: [{ name: 'firstname' }, { name: 'lastname' }, { name: 'address' }],
176
+ columns: [
177
+ { name: 'firstname' },
178
+ { name: 'lastname' },
179
+ { name: 'email' },
180
+ { name: 'phone' },
181
+ ],
182
+
115
183
  commands: {
116
184
  create: {
117
- execute: async (data: any) => {
118
- console.log('CREATE', data);
119
- const res = await dataService.insertOne(data);
120
- return { id: res };
121
- },
185
+ execute: async (data: any) => ({ id: await dataService.insertOne(data) }),
122
186
  },
123
187
  delete: {
124
- execute: async (id: any) => {
125
- console.log('DELETE', id);
126
- return await dataService.deleteOne(id);
127
- },
188
+ execute: async (id: any) => await dataService.deleteOne(id),
128
189
  },
129
190
  update: {
130
- execute: async (data: any) => {
131
- console.log('UPDATE', data);
132
- return new Promise((resolve) => {
133
- setTimeout(async () => {
134
- await dataService.updateOne(data.id, data);
135
- resolve(data);
136
- }, 1000);
137
- });
138
- },
191
+ execute: async (data: any) => await dataService.updateOne(data.id, data),
139
192
  },
140
193
  },
194
+
141
195
  queries: {
142
196
  byKey: {
143
197
  execute: async (id: string) => {
144
- console.log('users=>byKey', id);
145
- return new Promise((resolve) => {
146
- setTimeout(async () => {
147
- const entity = await dataService.getOne(id);
148
- resolve(entity);
149
- }, 500);
150
- });
198
+ const item = await dataService.getOne(id);
199
+ return item;
151
200
  },
152
201
  type: AXPEntityQueryType.Single,
153
202
  },
@@ -162,184 +211,56 @@ export async function sampleFactory(injector: Injector): Promise<AXPEntity | nul
162
211
  master: {
163
212
  create: {
164
213
  sections: [
165
- {
166
- id: 'personal',
167
- },
168
- {
169
- id: 'address',
170
- },
214
+ { id: 'personal-info' },
215
+ { id: 'contact-info' },
171
216
  ],
172
217
  properties: [
173
- {
174
- name: 'firstname',
175
- layout: {
176
- positions: {
177
- lg: {
178
- colSpan: 6,
179
- },
180
- },
181
- },
182
- },
183
- {
184
- name: 'lastname',
185
- layout: {
186
- positions: {
187
- lg: {
188
- colSpan: 6,
189
- },
190
- },
191
- },
192
- },
193
- {
194
- name: 'address',
195
- layout: {
196
- positions: {
197
- lg: {
198
- colSpan: 12,
199
- },
200
- },
201
- },
202
- },
218
+ { name: 'firstname', layout: { positions: { lg: { colSpan: 6 } } } },
219
+ { name: 'lastname', layout: { positions: { lg: { colSpan: 6 } } } },
220
+ { name: 'email', layout: { positions: { lg: { colSpan: 6 } } } },
221
+ { name: 'phone', layout: { positions: { lg: { colSpan: 6 } } } },
222
+ { name: 'address', layout: { positions: { lg: { colSpan: 12 } } } },
203
223
  ],
204
224
  },
205
225
  update: {
206
226
  sections: [
207
- {
208
- id: 'personal',
209
- },
210
- {
211
- id: 'address',
212
- },
227
+ { id: 'personal-info' },
228
+ { id: 'contact-info' },
213
229
  ],
214
230
  properties: [
215
- {
216
- name: 'firstname',
217
- layout: {
218
- positions: {
219
- lg: {
220
- colSpan: 6,
221
- },
222
- },
223
- },
224
- },
225
- {
226
- name: 'lastname',
227
- layout: {
228
- positions: {
229
- lg: {
230
- colSpan: 6,
231
- },
232
- },
233
- },
234
- },
235
- {
236
- name: 'address',
237
- layout: {
238
- positions: {
239
- lg: {
240
- colSpan: 12,
241
- },
242
- },
243
- },
244
- },
231
+ { name: 'firstname', layout: { positions: { lg: { colSpan: 6 } } } },
232
+ { name: 'lastname', layout: { positions: { lg: { colSpan: 6 } } } },
233
+ { name: 'email', layout: { positions: { lg: { colSpan: 6 } } } },
234
+ { name: 'phone', layout: { positions: { lg: { colSpan: 6 } } } },
235
+ { name: 'address', layout: { positions: { lg: { colSpan: 12 } } } },
245
236
  ],
246
237
  },
247
238
  single: {
248
239
  title: '{{firstname}} {{lastname}}',
249
240
  sections: [
250
- {
251
- id: 'personal',
252
- layout: {
253
- positions: {
254
- lg: {
255
- colSpan: 12,
256
- },
257
- },
258
- },
259
- },
260
- {
261
- id: 'address',
262
- },
241
+ { id: 'personal-info', layout: { positions: { lg: { colSpan: 12 } } } },
242
+ { id: 'contact-info', layout: { positions: { lg: { colSpan: 12 } } } },
263
243
  ],
264
244
  properties: [
265
- {
266
- name: 'firstname',
267
- layout: {
268
- positions: {
269
- lg: {
270
- colSpan: 6,
271
- },
272
- },
273
- },
274
- },
275
- {
276
- name: 'lastname',
277
- layout: {
278
- positions: {
279
- lg: {
280
- colSpan: 6,
281
- },
282
- },
283
- },
284
- },
285
- {
286
- name: 'address',
287
- layout: {
288
- positions: {
289
- lg: {
290
- colSpan: 12,
291
- },
292
- },
293
- },
294
- },
245
+ { name: 'firstname', layout: { positions: { lg: { colSpan: 6 } } } },
246
+ { name: 'lastname', layout: { positions: { lg: { colSpan: 6 } } } },
247
+ { name: 'email', layout: { positions: { lg: { colSpan: 6 } } } },
248
+ { name: 'phone', layout: { positions: { lg: { colSpan: 6 } } } },
249
+ { name: 'address', layout: { positions: { lg: { colSpan: 12 } } } },
295
250
  ],
296
- actions: [],
251
+ actions: [...entityMasterRecordActions()],
297
252
  },
298
253
  list: {
299
- actions: [
300
- {
301
- title: 'Create New',
302
- command: 'create-entity',
303
- priority: 'primary',
304
- type: 'create',
305
- scope: AXPEntityCommandScope.TypeLevel,
306
- },
307
- {
308
- title: 'Delete Items',
309
- command: 'delete-entity',
310
- priority: 'primary',
311
- type: 'delete',
312
- scope: AXPEntityCommandScope.Selected,
313
- },
314
- {
315
- title: 'Details',
316
- command: 'open-entity',
317
- priority: 'secondary',
318
- type: 'view',
319
- scope: AXPEntityCommandScope.Individual,
320
- },
321
- {
322
- title: 'Delete',
323
- command: 'delete-entity',
324
- priority: 'secondary',
325
- type: 'delete',
326
- scope: AXPEntityCommandScope.Individual,
327
- },
328
- ],
329
- views: [
330
- {
331
- name: 'all',
332
- title: 'All Items',
333
- fixed: true,
334
- columns: [],
335
- conditions: [],
336
- sorts: [{ name: 'firstname', dir: 'asc' }],
337
- },
338
- ],
254
+ actions: [...entityMasterCrudActions()],
255
+ views: [createAllQueryView({ sorts: [{ name: 'firstname', dir: 'asc' }] })],
339
256
  },
340
257
  },
341
258
  },
342
259
  };
343
260
 
261
+ //#endregion
262
+
344
263
  return entityDef;
345
264
  }
265
+
266
+ //#endregion
@@ -1,9 +1,15 @@
1
+ //#region ---- Imports ----
2
+
1
3
  import { NgModule } from '@angular/core';
2
- import {
3
- AXMSampleEntityService,
4
- AXMSampleEntityServiceImpl
5
- } from './sample.service';
4
+ import { AXMSampleEntityService, AXMSampleEntityServiceImpl } from './sample.service';
5
+
6
+ //#endregion
6
7
 
8
+ //#region ---- Sample Entity Module ----
9
+
10
+ /**
11
+ * Sample entity module - provides entity service
12
+ */
7
13
  @NgModule({
8
14
  imports: [],
9
15
  exports: [],
@@ -15,4 +21,6 @@ import {
15
21
  },
16
22
  ],
17
23
  })
18
- export class AXMSampleEntityModule {}
24
+ export class AXMSampleEntityModule {}
25
+
26
+ //#endregion
@@ -1,18 +1,38 @@
1
+ //#region ---- Imports ----
2
+
1
3
  import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
2
4
  import { Injectable } from '@angular/core';
3
- import { AXMSampleModuleConst } from '../const';
4
- import { AXMSampleEntityModel } from './sample.types';
5
- import { AXMSampleCreateEntityModel } from './sample.types';
5
+ import { RootConfig } from '../const';
6
+ import {
7
+ AXMSampleCreateDto,
8
+ AXMSampleDetailDto,
9
+ AXMSampleListItemDto,
10
+ AXMSampleUpdateDto,
11
+ } from './sample.types';
12
+
13
+ //#endregion
6
14
 
15
+ //#region ---- Sample Entity Service ----
16
+
17
+ /**
18
+ * Abstract service for Sample entity CRUD operations
19
+ */
7
20
  export abstract class AXMSampleEntityService extends AXMEntityCrudServiceImpl<
8
21
  string,
9
- AXMSampleEntityModel,
10
- AXMSampleCreateEntityModel
22
+ AXMSampleDetailDto,
23
+ AXMSampleListItemDto,
24
+ AXMSampleCreateDto,
25
+ AXMSampleUpdateDto
11
26
  > {}
12
27
 
28
+ /**
29
+ * Implementation of Sample entity service
30
+ */
13
31
  @Injectable()
14
32
  export class AXMSampleEntityServiceImpl extends AXMSampleEntityService {
15
33
  constructor() {
16
- super(`${AXMSampleModuleConst.moduleName}.${AXMSampleModuleConst.categoryEntity}`);
34
+ super(`${RootConfig.module.name}.${RootConfig.entities.sample.name}`);
17
35
  }
18
36
  }
37
+
38
+ //#endregion
@@ -1,15 +1,53 @@
1
+ //#region ---- Imports ----
2
+
1
3
  import { AXPEntityModel } from '@acorex/platform/layout/entity';
2
4
 
3
- export interface AXMSampleEntityModel extends AXPEntityModel<string> {
4
- firstname?: string;
5
- lastname?: string;
6
- phone?: string;
7
- email?: string;
8
- address?: string;
5
+ //#endregion
6
+
7
+ //#region ---- Sample Entity Types ----
8
+
9
+ /**
10
+ * Sample entity detail model
11
+ */
12
+ export interface AXMSampleDetailDto extends AXPEntityModel<string> {
13
+ firstname?: string;
14
+ lastname?: string;
15
+ email?: string;
16
+ phone?: string;
17
+ address?: string;
9
18
  }
10
- export interface AXMSampleCreateEntityModel extends AXPEntityModel<string> {
11
- firstname?: string;
12
- lastname?: string;
13
- phone?: string;
14
- email?: string;
19
+
20
+ /**
21
+ * Sample entity list item model
22
+ */
23
+ export interface AXMSampleListItemDto extends AXPEntityModel<string> {
24
+ firstname?: string;
25
+ lastname?: string;
26
+ email?: string;
27
+ phone?: string;
15
28
  }
29
+
30
+ /**
31
+ * Sample entity create model
32
+ */
33
+ export interface AXMSampleCreateDto {
34
+ firstname?: string;
35
+ lastname?: string;
36
+ email?: string;
37
+ phone?: string;
38
+ address?: string;
39
+ }
40
+
41
+ /**
42
+ * Sample entity update model
43
+ */
44
+ export interface AXMSampleUpdateDto {
45
+ id: string;
46
+ firstname?: string;
47
+ lastname?: string;
48
+ email?: string;
49
+ phone?: string;
50
+ address?: string;
51
+ }
52
+
53
+ //#endregion
@@ -0,0 +1,37 @@
1
+ //#region ---- Imports ----
2
+
3
+ import { AXPSearchCommandProvider, AXPSearchResult } from '@acorex/platform/common';
4
+ import { RootConfig } from './const';
5
+
6
+ //#endregion
7
+
8
+ //#region ---- Search Command Provider ----
9
+
10
+ /**
11
+ * Search command provider for <%= className %> module
12
+ * Provides search commands for global search
13
+ */
14
+ export class <%= className %>ModuleSearchCommandProvider extends AXPSearchCommandProvider {
15
+
16
+ //#region ---- Commands ----
17
+
18
+ commands: AXPSearchResult[] = [
19
+ {
20
+ group: 'command',
21
+ title: 'New Sample',
22
+ icon: RootConfig.entities.sample.icon,
23
+ description: 'Create a new sample record',
24
+ command: {
25
+ name: 'create-entity',
26
+ options: {
27
+ entity: `${RootConfig.module.name}.${RootConfig.entities.sample.name}`,
28
+ },
29
+ },
30
+ },
31
+ ];
32
+
33
+ //#endregion
34
+ }
35
+
36
+ //#endregion
37
+