@acorex/platform-generator 19.2.12 → 19.2.16

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 (46) hide show
  1. package/generators.json +10 -0
  2. package/package.json +4 -1
  3. package/src/bin/interactive-entity-creator.js +448 -0
  4. package/src/bin/test-entity-creator.js +48 -0
  5. package/src/generators/app-module/files/src/app/app.module.ts.template +0 -3
  6. package/src/generators/app-module/files/src/app/modules/root/sample/sample.service.ts.template +1 -1
  7. package/src/generators/app-module/files/src/app/modules/root/sample/sample.types.ts.template +1 -1
  8. package/src/generators/create-app-module/files/__fileName__/src/index.ts__tmpl__ +9 -0
  9. package/src/generators/create-app-module/files/__fileName__/src/lib/__fileName__.module.ts__tmpl__ +44 -0
  10. package/src/generators/create-app-module/files/__fileName__/src/lib/const.ts__tmpl__ +19 -0
  11. package/src/generators/create-app-module/files/__fileName__/src/lib/entity.provider.ts__tmpl__ +33 -0
  12. package/src/generators/create-app-module/files/__fileName__/src/lib/menu.provider.ts__tmpl__ +29 -0
  13. package/src/generators/create-app-module/files/__fileName__/src/lib/permission.provider.ts__tmpl__ +13 -0
  14. package/src/generators/create-app-module/files/__fileName__/src/lib/search-command.provider.ts__tmpl__ +17 -0
  15. package/src/generators/create-app-module/files/__fileName__/src/lib/setting.provider.ts__tmpl__ +29 -0
  16. package/src/generators/create-module-entity/files/__entityFileName__.entity.ts__tmpl__ +150 -0
  17. package/src/generators/create-module-entity/files/__entityFileName__.service.ts__tmpl__ +16 -0
  18. package/src/generators/create-module-entity/files/__entityFileName__.types.ts__tmpl__ +6 -0
  19. package/src/generators/create-module-entity/files/index.ts__tmpl__ +3 -0
  20. package/src/generators/create-module-entity/generator.d.ts +11 -0
  21. package/src/generators/create-module-entity/generator.js +338 -20
  22. package/src/generators/create-module-entity/generator.js.map +1 -1
  23. package/src/generators/create-module-entity/schema.json +85 -2
  24. package/src/generators/create-tag-entity/files/index.ts__tmpl__ +3 -0
  25. package/src/generators/create-tag-entity/files/tag-__entityFileName__.entity.ts__tmpl__ +240 -0
  26. package/src/generators/create-tag-entity/files/tag-__entityFileName__.service.ts__tmpl__ +16 -0
  27. package/src/generators/create-tag-entity/files/tag-__entityFileName__.types.ts__tmpl__ +6 -0
  28. package/src/generators/create-tag-entity/generator.d.ts +7 -0
  29. package/src/generators/create-tag-entity/generator.js +111 -0
  30. package/src/generators/create-tag-entity/generator.js.map +1 -0
  31. package/src/generators/create-tag-entity/schema.json +16 -0
  32. package/src/generators/create-widget/files/__fileName__-widget-column.component.ts__tmpl__ +11 -0
  33. package/src/generators/create-widget/files/__fileName__-widget-edit.component.ts__tmpl__ +35 -0
  34. package/src/generators/create-widget/files/__fileName__-widget-filter.component.ts__tmpl__ +12 -0
  35. package/src/generators/create-widget/files/__fileName__-widget-print.component.ts__tmpl__ +11 -0
  36. package/src/generators/create-widget/files/__fileName__-widget-view.component.ts__tmpl__ +14 -0
  37. package/src/generators/create-widget/files/__fileName__-widget.config.ts__tmpl__ +44 -0
  38. package/src/generators/create-widget/files/index.ts__tmpl__ +6 -0
  39. package/src/generators/create-widget/generator.d.ts +8 -0
  40. package/src/generators/create-widget/generator.js +99 -0
  41. package/src/generators/create-widget/generator.js.map +1 -0
  42. package/src/generators/create-widget/schema.d.ts +6 -0
  43. package/src/generators/create-widget/schema.json +66 -0
  44. package/src/generators/index.d.ts +0 -0
  45. package/src/generators/index.js +1 -0
  46. package/src/generators/index.js.map +1 -0
@@ -0,0 +1,29 @@
1
+ import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';
2
+ import { AXPEntityService } from '@acorex/platform/layout/entity';
3
+ import { inject } from '@angular/core';
4
+ import { RootConfig } from './const';
5
+
6
+ export class AXMMenuProvider implements AXPMenuProvider {
7
+ private entityService = inject(AXPEntityService);
8
+
9
+ async provide(context: AXPMenuProviderContext): Promise<void> {
10
+ const scope = RootConfig.config.i18n;
11
+ const module = RootConfig.module;
12
+
13
+ // context.addItems([
14
+ // {
15
+ // priority: 9001,
16
+ // text: `t('module-name', {scope:"${scope}"})`,
17
+ // icon: module.icon,
18
+ // children: [
19
+ // {
20
+ // text: `t("entity-name", { scope: "common" })`,
21
+ // path: this.entityService.createPath(module.name, RootConfig.entities.category.name),
22
+ // icon: RootConfig.entities.category.icon,
23
+ // priority: 1,
24
+ // }
25
+ // ],
26
+ // },
27
+ // ]);
28
+ }
29
+ }
@@ -0,0 +1,13 @@
1
+ import { AXPPermissionProvider, AXPPermissionProviderContext } from '@acorex/platform/auth';
2
+
3
+ export class AXMPermissionProvider implements AXPPermissionProvider {
4
+ async provide(context: AXPPermissionProviderContext): Promise<void> {
5
+ // context.addPermissions([
6
+ // {
7
+ // name: 'view_templates',
8
+ // title: 'Permission to view templates',
9
+ // isArchived: false,
10
+ // },
11
+ // ]);
12
+ }
13
+ }
@@ -0,0 +1,17 @@
1
+ import { AXPSearchCommandProvider, AXPSearchResult } from '@acorex/platform/common';
2
+
3
+ export class AXMSearchCommandProvider extends AXPSearchCommandProvider {
4
+ commands: AXPSearchResult[] = [
5
+ // {
6
+ // group: 'command',
7
+ // title: 'New Form Template',
8
+ // icon: RootConfig.entities.template.icon,
9
+ // description: 'Create a new form template for designing reusable forms.', // Added description
10
+ // commands: {
11
+ // 'create-entity': {
12
+ // entity: `${RootConfig.module.name}.${RootConfig.entities.template.name}`,
13
+ // },
14
+ // },
15
+ // }
16
+ ];
17
+ }
@@ -0,0 +1,29 @@
1
+ import { AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex/platform/common';
2
+
3
+ export class AXMSettingProvider implements AXPSettingDefinitionProvider {
4
+ async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {
5
+ // context
6
+ // // Add Form Template Group
7
+ // .addGroup('form-template', 'Form Template', 'Settings related to form templates.', RootConfig.module.icon)
8
+ // // Start Interface Section
9
+ // .addSection('interface', 'UI Interface', 'Customize the user interface for forms.')
10
+ // .addSetting({
11
+ // key: 'history-panel',
12
+ // title: 'Show History Panel',
13
+ // scope: 'U',
14
+ // isInherited: true,
15
+ // defaultValue: false,
16
+ // widget: {
17
+ // type: AXPWidgetsCatalog.toggle,
18
+ // },
19
+ // description: 'Enable or disable the history panel for forms.',
20
+ // validationRules: [
21
+ // {
22
+ // rule: 'required',
23
+ // },
24
+ // ],
25
+ // })
26
+ // .endSection()
27
+ // .endGroup();
28
+ }
29
+ }
@@ -0,0 +1,150 @@
1
+ import { AXPEntity, AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';
2
+ import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
3
+ import { Injector } from '@angular/core';
4
+ import { RootConfig } from '../../const';
5
+ import { AXM<%= entityClassName %>Service } from './<%= entityFileName %>.service';
6
+
7
+ export async function <%= entityPropertyName %>Factory(injector: Injector): Promise<AXPEntity | null> {
8
+ const dataService = injector.get(AXM<%= entityClassName %>Service);
9
+ const i18n = RootConfig.config.i18n;
10
+
11
+ const entityDef: AXPEntity = {
12
+ module: RootConfig.module.name,
13
+ name: RootConfig.entities.<%= entityPropertyName %>.name,
14
+ source: '',
15
+ title: RootConfig.entities.<%= entityPropertyName %>.title,
16
+ formats: {
17
+ individual: RootConfig.entities.<%= entityPropertyName %>.title,
18
+ plural: RootConfig.entities.<%= entityPropertyName %>.titlePlural,
19
+ searchResult: {
20
+ title: '{{ title }}',
21
+ description: RootConfig.module.title,
22
+ },
23
+ },
24
+ relatedEntities: [],
25
+ groups: [
26
+ {
27
+ id: 'section',
28
+ title: RootConfig.entities.<%= entityPropertyName %>.title,
29
+ },
30
+ ],
31
+ properties: [
32
+ <%- entityPropertiesCode -%>
33
+ ],
34
+ columns: [<%- entityColumnsCode -%>],
35
+ commands: {
36
+ create: {
37
+ execute: async (data: any) => {
38
+ const res = await dataService.insertOne(data);
39
+ return { id: res };
40
+ },
41
+ },
42
+ delete: {
43
+ execute: async (id: any) => {
44
+ return await dataService.deleteOne(id);
45
+ },
46
+ },
47
+ update: {
48
+ execute: async (data: any) => {
49
+ return await dataService.updateOne(data.id, data);
50
+ },
51
+ },
52
+ },
53
+ queries: {
54
+ byKey: {
55
+ execute: async (id: string) => {
56
+ return await dataService.getOne(id);
57
+ },
58
+ type: AXPEntityQueryType.Single,
59
+ },
60
+ list: {
61
+ execute: async (e: any) => {
62
+ return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });
63
+ },
64
+ type: AXPEntityQueryType.List,
65
+ },
66
+ },
67
+ interfaces: {
68
+ master: {
69
+ create: {
70
+ sections: [
71
+ {
72
+ id: 'section',
73
+ },
74
+ ],
75
+ properties: [
76
+ <%- layoutPropertiesCode -%>
77
+ ],
78
+ },
79
+ update: {
80
+ sections: [
81
+ {
82
+ id: 'section',
83
+ },
84
+ ],
85
+ properties: [
86
+ <%- layoutPropertiesCode -%>
87
+ ],
88
+ },
89
+ single: {
90
+ title: '{{title}}',
91
+ sections: [
92
+ {
93
+ id: 'section',
94
+ layout: {
95
+ positions: {
96
+ lg: {
97
+ colSpan: 12,
98
+ },
99
+ },
100
+ },
101
+ },
102
+ ],
103
+ properties: [
104
+ <%- layoutPropertiesCode -%>
105
+ ],
106
+ actions: [],
107
+ },
108
+ list: {
109
+ actions: [
110
+ {
111
+ title: `t("create", { scope: "common" })`,
112
+ command: 'create-entity',
113
+ priority: 'primary',
114
+ type: 'create',
115
+ scope: AXPEntityCommandScope.TypeLevel,
116
+ },
117
+ {
118
+ title: 't("deleteItems", { scope: "common" })',
119
+ command: 'delete-entity',
120
+ priority: 'primary',
121
+ type: 'delete',
122
+ scope: AXPEntityCommandScope.Selected,
123
+ },
124
+ {
125
+ title: 't("detail", { scope: "common" })',
126
+ command: 'open-entity',
127
+ priority: 'secondary',
128
+ type: 'view',
129
+ scope: AXPEntityCommandScope.Individual,
130
+ },
131
+ {
132
+ title: 't("delete", { scope: "common" })',
133
+ command: 'delete-entity',
134
+ priority: 'secondary',
135
+ type: 'delete',
136
+ scope: AXPEntityCommandScope.Individual,
137
+ },
138
+ ],
139
+ views: [
140
+ createAllQueryView({
141
+ sorts: [{ name: '<%= firstPropertyName %>', dir: 'asc' }]
142
+ }),
143
+ ],
144
+ },
145
+ },
146
+ },
147
+ };
148
+
149
+ return entityDef;
150
+ }
@@ -0,0 +1,16 @@
1
+ import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
2
+ import { Injectable } from '@angular/core';
3
+ import { RootConfig } from '../../const';
4
+ import { AXM<%= moduleClassName %><%= entityClassName %>EntityModel } from './<%= entityFileName %>.types';
5
+
6
+ export abstract class AXM<%= entityClassName %>Service extends AXMEntityCrudServiceImpl<
7
+ string,
8
+ AXM<%= moduleClassName %><%= entityClassName %>EntityModel
9
+ > {}
10
+
11
+ @Injectable()
12
+ export class AXM<%= entityClassName %>ServiceImpl extends AXM<%= entityClassName %>Service {
13
+ constructor() {
14
+ super(`${RootConfig.module.name}.${RootConfig.entities.<%= entityPropertyName %>.name}`);
15
+ }
16
+ }
@@ -0,0 +1,6 @@
1
+ import { AXPEntityModel } from '@acorex/platform/layout/entity';
2
+
3
+ export interface AXM<%= moduleClassName %><%= entityClassName %>EntityModel extends AXPEntityModel<string> {
4
+
5
+ <%= modelPropertiesCode %>
6
+ }
@@ -0,0 +1,3 @@
1
+ export * from './<%= entityFileName %>.entity';
2
+ export * from './<%= entityFileName %>.service';
3
+ export * from './<%= entityFileName %>.types';
@@ -2,6 +2,17 @@ import { Tree } from '@nx/devkit';
2
2
  interface Schema {
3
3
  moduleName: string;
4
4
  name: string;
5
+ properties?: string[] | string;
6
+ dataTypes?: string[] | string;
7
+ required?: string[] | string;
8
+ colSpans?: string[] | string;
9
+ orders?: string[] | string;
10
+ icon?: string;
11
+ enableSorts?: string[] | string;
12
+ enableFilters?: string[] | string;
13
+ enableInlineFilters?: string[] | string;
14
+ inColumns?: string[] | string;
15
+ entity?: boolean;
5
16
  }
6
17
  export default function (tree: Tree, schema: Schema): Promise<void>;
7
18
  export {};