@rxap/schematic-angular 19.1.1-dev.2 → 19.2.0-dev.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.
- package/CHANGELOG.md +13 -0
- package/GUIDES.md +160 -0
- package/README.md +164 -0
- package/package.json +8 -8
- package/src/examples/feature/dashboard/dashboard-accordion/schematics.yaml +226 -0
- package/src/examples/feature/dashboard/dashboard-table/schematic.yml +103 -0
- package/src/examples/feature/dashboard-template/dashboard-template-table/schematic.yml +95 -0
- package/src/examples/feature/machine/machine-accordion/schematic.yaml +83 -0
- package/src/examples/feature/machine/machine-table/schematic.yaml +139 -0
- package/src/examples/feature/machine-definition/machine-definition-details/data-definition-modbus-tcp-table/schematic.yaml +63 -0
- package/src/examples/feature/machine-definition/machine-definition-details/data-definition-opc-ua-table/schematic.yaml +58 -0
- package/src/examples/feature/machine-definition/machine-definition-details/data-definition-open-platform-protocol-table/schematic.yaml +49 -0
- package/src/examples/feature/machine-definition/machine-definition-details/data-definition-s7-iso-on-tcp-table/schematic.yaml +64 -0
- package/src/examples/feature/machine-definition/machine-definition-details/data-trigger-table/schematic.yaml +43 -0
- package/src/examples/feature/machine-definition/machine-definition-details/message-group-table/schematic.yaml +41 -0
- package/src/examples/feature/machine-definition/machine-definition-details/message-trigger-connection-table/schematic.yaml +38 -0
- package/src/examples/feature/machine-definition/machine-definition-details/physical-unit-table/schematic.yaml +41 -0
- package/src/examples/feature/machine-definition/machine-definition-table/schematic.yaml +107 -0
- package/src/examples/feature/node-red/node-red-table/schematic.yaml +114 -0
- package/src/examples/feature/report/report-accordion/schematic.yaml +318 -0
- package/src/examples/feature/report/report-table/schematic.yaml +66 -0
- package/src/examples/feature/service-network/company-accordion/schematic.yaml +119 -0
- package/src/examples/feature/service-network/service-network-accordion/schematic.yml +65 -0
- package/src/examples/feature/thing/thing-table/schematic.yml +115 -0
- package/src/examples/feature/user/user-table/schematic.yaml +99 -0
- package/src/examples/schematics.yaml +18 -0
- package/src/guides/backend.md +49 -0
- package/src/guides/form-component.md +58 -0
- package/src/guides/form-control.md +269 -0
- package/src/guides/header-button.md +57 -0
- package/src/guides/table-action.md +120 -0
- package/src/guides/table-column.md +185 -0
- package/src/guides/table-component.md +51 -0
- package/src/guides/table-filter.md +69 -0
- package/src/guides/table-modifiers.md +22 -0
- package/src/guides/upstream.md +49 -0
- package/src/lib/angular-options.js +0 -1
- package/src/lib/angular-options.js.map +1 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
package: "@rxap/schematic-angular"
|
|
2
|
+
name: table-component
|
|
3
|
+
options:
|
|
4
|
+
name: report
|
|
5
|
+
backend: nestjs
|
|
6
|
+
sortable: true
|
|
7
|
+
rowId:
|
|
8
|
+
name: uuid
|
|
9
|
+
modifiers:
|
|
10
|
+
- show-archived-slide
|
|
11
|
+
headerButton:
|
|
12
|
+
role: form
|
|
13
|
+
permission: report.create
|
|
14
|
+
options:
|
|
15
|
+
customComponent: true
|
|
16
|
+
formComponent: CreateForm
|
|
17
|
+
propertyList:
|
|
18
|
+
- name: __archived
|
|
19
|
+
type: boolean
|
|
20
|
+
columnList:
|
|
21
|
+
- name: __removedAt
|
|
22
|
+
kind: date
|
|
23
|
+
inactive: true
|
|
24
|
+
hidden: true
|
|
25
|
+
- name: resultType
|
|
26
|
+
kind: icon
|
|
27
|
+
- name: name
|
|
28
|
+
type: string
|
|
29
|
+
hasFilter: true
|
|
30
|
+
- name: companyName
|
|
31
|
+
type: string
|
|
32
|
+
hasFilter: true
|
|
33
|
+
- name: locationName
|
|
34
|
+
type: string
|
|
35
|
+
hasFilter: true
|
|
36
|
+
actionList:
|
|
37
|
+
- type: details
|
|
38
|
+
icon: visibility
|
|
39
|
+
permission: report.get
|
|
40
|
+
role: navigation
|
|
41
|
+
checkFunction: "!element.__archived"
|
|
42
|
+
options:
|
|
43
|
+
route: "/report/{{rowId}}/details"
|
|
44
|
+
- type: delete
|
|
45
|
+
icon: delete
|
|
46
|
+
refresh: true
|
|
47
|
+
confirm: true
|
|
48
|
+
inHeader: true
|
|
49
|
+
permission: report.delete
|
|
50
|
+
checkFunction: "!!element.__archived"
|
|
51
|
+
role: operation
|
|
52
|
+
color: warn
|
|
53
|
+
- type: archive
|
|
54
|
+
role: operation
|
|
55
|
+
refresh: true
|
|
56
|
+
confirm: true
|
|
57
|
+
inHeader: true
|
|
58
|
+
permission: report.archive
|
|
59
|
+
checkFunction: "!element.__archived"
|
|
60
|
+
- type: restore
|
|
61
|
+
role: operation
|
|
62
|
+
refresh: true
|
|
63
|
+
inHeader: true
|
|
64
|
+
confirm: true
|
|
65
|
+
permission: report.archive
|
|
66
|
+
checkFunction: "!!element.__archived"
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
package: "@rxap/schematic-angular"
|
|
2
|
+
name: accordion-component
|
|
3
|
+
options:
|
|
4
|
+
name: company
|
|
5
|
+
backend: nestjs
|
|
6
|
+
multiple: true
|
|
7
|
+
header:
|
|
8
|
+
property:
|
|
9
|
+
name: name
|
|
10
|
+
identifier:
|
|
11
|
+
source: route
|
|
12
|
+
property:
|
|
13
|
+
name: uuid
|
|
14
|
+
upstream:
|
|
15
|
+
kind: open-api
|
|
16
|
+
operationId: company-gui-controller-getByUuid@legacy
|
|
17
|
+
itemList:
|
|
18
|
+
- name: servicenetworks
|
|
19
|
+
kind: table
|
|
20
|
+
title: Service Networks
|
|
21
|
+
table:
|
|
22
|
+
sortable: true
|
|
23
|
+
rowId:
|
|
24
|
+
name: uuid
|
|
25
|
+
upstream:
|
|
26
|
+
kind: open-api
|
|
27
|
+
operationId: get_api_companies_inherited_routers@service-server
|
|
28
|
+
mapper:
|
|
29
|
+
kind: paged
|
|
30
|
+
total: meta?.pages
|
|
31
|
+
list: routers
|
|
32
|
+
pageIndex: page
|
|
33
|
+
pageSize: per_page
|
|
34
|
+
sortBy: sort
|
|
35
|
+
sortDirection: order
|
|
36
|
+
filter:
|
|
37
|
+
property: filters
|
|
38
|
+
map:
|
|
39
|
+
filter: value
|
|
40
|
+
sort:
|
|
41
|
+
direction: asc
|
|
42
|
+
active: name
|
|
43
|
+
columnList:
|
|
44
|
+
- name: name
|
|
45
|
+
kind: default
|
|
46
|
+
filterControl:
|
|
47
|
+
kind: input
|
|
48
|
+
- name: vpn-server-ip
|
|
49
|
+
kind: copy-to-clipboard
|
|
50
|
+
isOptional: true
|
|
51
|
+
source: subnet?.server_ip
|
|
52
|
+
filterControl:
|
|
53
|
+
kind: input
|
|
54
|
+
formField:
|
|
55
|
+
cssClass: 'w-[160px]'
|
|
56
|
+
- name: netmask-server
|
|
57
|
+
kind: copy-to-clipboard
|
|
58
|
+
source: subnet?.netmask
|
|
59
|
+
filterControl:
|
|
60
|
+
kind: input
|
|
61
|
+
formField:
|
|
62
|
+
cssClass: 'w-[180px]'
|
|
63
|
+
- name: vpn-router-ip
|
|
64
|
+
isOptional: true
|
|
65
|
+
source: ip
|
|
66
|
+
kind: copy-to-clipboard
|
|
67
|
+
filterControl:
|
|
68
|
+
kind: input
|
|
69
|
+
formField:
|
|
70
|
+
cssClass: 'w-[160px]'
|
|
71
|
+
- name: vpn-port
|
|
72
|
+
kind: default
|
|
73
|
+
source: subnet?.port
|
|
74
|
+
filterControl:
|
|
75
|
+
kind: input
|
|
76
|
+
formField:
|
|
77
|
+
cssClass: 'w-[140px]'
|
|
78
|
+
- name: vpn-proto
|
|
79
|
+
kind: default
|
|
80
|
+
source: subnet?.protocol
|
|
81
|
+
filterControl:
|
|
82
|
+
kind: input
|
|
83
|
+
formField:
|
|
84
|
+
cssClass: 'w-[160px]'
|
|
85
|
+
- name: vpn-dhcp-start
|
|
86
|
+
kind: copy-to-clipboard
|
|
87
|
+
source: subnet?.dhcp_start
|
|
88
|
+
filterControl:
|
|
89
|
+
kind: input
|
|
90
|
+
formField:
|
|
91
|
+
cssClass: 'w-[170px]'
|
|
92
|
+
- name: vpn-dhcp-end
|
|
93
|
+
kind: copy-to-clipboard
|
|
94
|
+
source: subnet?.dhcp_end
|
|
95
|
+
filterControl:
|
|
96
|
+
kind: input
|
|
97
|
+
formField:
|
|
98
|
+
cssClass: 'w-[160px]'
|
|
99
|
+
- name: ip-servicenet
|
|
100
|
+
kind: copy-to-clipboard
|
|
101
|
+
source: subnet?.plantnet_ip
|
|
102
|
+
filterControl:
|
|
103
|
+
kind: input
|
|
104
|
+
formField:
|
|
105
|
+
cssClass: 'w-[160px]'
|
|
106
|
+
- name: netmask-servicenet
|
|
107
|
+
kind: copy-to-clipboard
|
|
108
|
+
isOptional: true
|
|
109
|
+
source: subnet?.plantnet_mask
|
|
110
|
+
filterControl:
|
|
111
|
+
kind: input
|
|
112
|
+
formField:
|
|
113
|
+
cssClass: 'w-[210px]'
|
|
114
|
+
- name: comment
|
|
115
|
+
kind: default
|
|
116
|
+
isOptional: true
|
|
117
|
+
source: subnet?.comment
|
|
118
|
+
filterControl:
|
|
119
|
+
kind: input
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
package: "@rxap/schematic-angular"
|
|
2
|
+
name: accordion-component
|
|
3
|
+
options:
|
|
4
|
+
name: service-network
|
|
5
|
+
backend: nestjs
|
|
6
|
+
multiple: true
|
|
7
|
+
header:
|
|
8
|
+
property:
|
|
9
|
+
name: name
|
|
10
|
+
persistent:
|
|
11
|
+
property:
|
|
12
|
+
name: uuid
|
|
13
|
+
identifier:
|
|
14
|
+
source: route
|
|
15
|
+
property:
|
|
16
|
+
name: uuid
|
|
17
|
+
upstream:
|
|
18
|
+
kind: open-api
|
|
19
|
+
operationId: vpn-router-controller-getByUuid@legacy
|
|
20
|
+
itemList:
|
|
21
|
+
- name: log-viewer
|
|
22
|
+
upstream:
|
|
23
|
+
kind: open-api
|
|
24
|
+
operationId: get_api_logs_retrieve_log@service-server
|
|
25
|
+
- name: connection-log
|
|
26
|
+
kind: table
|
|
27
|
+
table:
|
|
28
|
+
sortable:
|
|
29
|
+
enabled: true
|
|
30
|
+
default:
|
|
31
|
+
active: router
|
|
32
|
+
direction: asc
|
|
33
|
+
upstream:
|
|
34
|
+
kind: open-api
|
|
35
|
+
operationId: get_api_logs_connection_logs_get_connectionlogs_for_subnet@service-server
|
|
36
|
+
mapper:
|
|
37
|
+
kind: paged
|
|
38
|
+
pageIndex: page
|
|
39
|
+
pageSize: per_page
|
|
40
|
+
sortBy: sort
|
|
41
|
+
sortDirection: order
|
|
42
|
+
total: meta.total
|
|
43
|
+
list: connection_logs
|
|
44
|
+
columnList:
|
|
45
|
+
- name: router
|
|
46
|
+
filterControl:
|
|
47
|
+
kind: input
|
|
48
|
+
- name: username
|
|
49
|
+
filterControl:
|
|
50
|
+
kind: input
|
|
51
|
+
- name: clientIp
|
|
52
|
+
filterControl:
|
|
53
|
+
kind: input
|
|
54
|
+
- name: reason
|
|
55
|
+
filterControl:
|
|
56
|
+
kind: input
|
|
57
|
+
- name: begin
|
|
58
|
+
type: string
|
|
59
|
+
kind: date
|
|
60
|
+
- name: end
|
|
61
|
+
type: string
|
|
62
|
+
kind: date
|
|
63
|
+
- name: duration
|
|
64
|
+
- name: bytesSent
|
|
65
|
+
- name: bytesReceived
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
package: "@rxap/schematic-angular"
|
|
2
|
+
name: table-component
|
|
3
|
+
options:
|
|
4
|
+
name: thing
|
|
5
|
+
backend: open-api
|
|
6
|
+
title: Router
|
|
7
|
+
sortable: true
|
|
8
|
+
modifiers:
|
|
9
|
+
- show-archived-slide
|
|
10
|
+
headerButton:
|
|
11
|
+
role: form
|
|
12
|
+
permission: thing.create
|
|
13
|
+
options:
|
|
14
|
+
customComponent: true
|
|
15
|
+
formComponent: ThingCreateForm
|
|
16
|
+
openApi:
|
|
17
|
+
operationId: thing-gui-controller-getByFilter
|
|
18
|
+
adapter:
|
|
19
|
+
name: TableAdapterFactory
|
|
20
|
+
moduleSpecifier: "@digitaix/eurogard-table-system"
|
|
21
|
+
columnList:
|
|
22
|
+
- name: __removedAt
|
|
23
|
+
kind: date
|
|
24
|
+
inactive: true
|
|
25
|
+
hidden: true
|
|
26
|
+
- name: name
|
|
27
|
+
hasFilter: true
|
|
28
|
+
- name: macAddress
|
|
29
|
+
hasFilter: true
|
|
30
|
+
- name: uuid
|
|
31
|
+
kind: copy-to-clipboard
|
|
32
|
+
hasFilter: true
|
|
33
|
+
inactive: true
|
|
34
|
+
- name: accessKey
|
|
35
|
+
kind: copy-to-clipboard
|
|
36
|
+
hasFilter: true
|
|
37
|
+
inactive: true
|
|
38
|
+
- name: locationName
|
|
39
|
+
hasFilter: true
|
|
40
|
+
- name: lastConnection
|
|
41
|
+
kind: date
|
|
42
|
+
- name: online
|
|
43
|
+
kind: boolean
|
|
44
|
+
- name: companyName
|
|
45
|
+
hasFilter: true
|
|
46
|
+
- name: type
|
|
47
|
+
pipeList:
|
|
48
|
+
- name: thingTyp
|
|
49
|
+
namedImport: ThingTypPipe
|
|
50
|
+
moduleSpecifier: "@digitaix/eurogard-pipes"
|
|
51
|
+
actionList:
|
|
52
|
+
- type: edit
|
|
53
|
+
role: form
|
|
54
|
+
permission: thing.update
|
|
55
|
+
checkFunction: "!element.__archived"
|
|
56
|
+
refresh: true
|
|
57
|
+
options:
|
|
58
|
+
customComponent: true
|
|
59
|
+
formComponent: ThingEditForm
|
|
60
|
+
loadFrom:
|
|
61
|
+
operationId: thing-gui-controller-getByUuid
|
|
62
|
+
parameters:
|
|
63
|
+
uuid: rowId
|
|
64
|
+
formInitial:
|
|
65
|
+
name: name
|
|
66
|
+
macAddress: macAddress
|
|
67
|
+
token: token
|
|
68
|
+
onlineInterval: onlineInterval
|
|
69
|
+
location:
|
|
70
|
+
uuid: locationUuid
|
|
71
|
+
name: locationName
|
|
72
|
+
type: type
|
|
73
|
+
nodeRedExist: nodeRedExist
|
|
74
|
+
- type: vpn
|
|
75
|
+
icon: vpn_lock
|
|
76
|
+
checkFunction: "element['subnet'] !== null && !element.__archived"
|
|
77
|
+
role: navigation
|
|
78
|
+
options:
|
|
79
|
+
route: "/vpn/{{uuid}}/details"
|
|
80
|
+
- type: delete
|
|
81
|
+
icon: delete
|
|
82
|
+
refresh: true
|
|
83
|
+
confirm: true
|
|
84
|
+
inHeader: true
|
|
85
|
+
permission: thing.archive
|
|
86
|
+
checkFunction: "!!element.__archived"
|
|
87
|
+
role: open-api
|
|
88
|
+
color: warn
|
|
89
|
+
options:
|
|
90
|
+
operationId: thing-controller-delete
|
|
91
|
+
parameters:
|
|
92
|
+
uuid: rowId
|
|
93
|
+
- type: archive
|
|
94
|
+
role: open-api
|
|
95
|
+
refresh: true
|
|
96
|
+
confirm: true
|
|
97
|
+
inHeader: true
|
|
98
|
+
permission: thing.archive
|
|
99
|
+
checkFunction: "!element.__archived"
|
|
100
|
+
options:
|
|
101
|
+
operationId: thing-controller-archive
|
|
102
|
+
parameters:
|
|
103
|
+
uuid: rowId
|
|
104
|
+
- type: restore
|
|
105
|
+
role: open-api
|
|
106
|
+
refresh: true
|
|
107
|
+
inHeader: true
|
|
108
|
+
confirm: true
|
|
109
|
+
permission: thing.archive
|
|
110
|
+
checkFunction: "!!element.__archived"
|
|
111
|
+
options:
|
|
112
|
+
operationId: thing-controller-unarchive
|
|
113
|
+
parameters:
|
|
114
|
+
uuid: rowId
|
|
115
|
+
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
package: "@rxap/schematic-angular"
|
|
2
|
+
name: table-component
|
|
3
|
+
options:
|
|
4
|
+
name: user
|
|
5
|
+
backend: open-api
|
|
6
|
+
sortable: true
|
|
7
|
+
modifiers:
|
|
8
|
+
- show-archived-slide
|
|
9
|
+
headerButton:
|
|
10
|
+
role: form
|
|
11
|
+
permission: user.create
|
|
12
|
+
options:
|
|
13
|
+
customComponent: true
|
|
14
|
+
formComponent: UserCreateForm
|
|
15
|
+
openApi:
|
|
16
|
+
operationId: user-controller-getByFilter
|
|
17
|
+
adapter:
|
|
18
|
+
name: TableAdapterFactory
|
|
19
|
+
moduleSpecifier: "@digitaix/eurogard-table-system"
|
|
20
|
+
columnList:
|
|
21
|
+
- name: __removedAt
|
|
22
|
+
kind: date
|
|
23
|
+
inactive: true
|
|
24
|
+
hidden: true
|
|
25
|
+
- name: username
|
|
26
|
+
hasFilter: true
|
|
27
|
+
type: string
|
|
28
|
+
- name: firstname
|
|
29
|
+
hasFilter: true
|
|
30
|
+
type: string
|
|
31
|
+
- name: lastname
|
|
32
|
+
hasFilter: true
|
|
33
|
+
type: string
|
|
34
|
+
- name: role
|
|
35
|
+
pipeList:
|
|
36
|
+
- name: toRolesEnumValue
|
|
37
|
+
namedImport: ToRolesEnumValuePipe
|
|
38
|
+
moduleSpecifier: enum
|
|
39
|
+
- async
|
|
40
|
+
- name: lastConnection
|
|
41
|
+
kind: date
|
|
42
|
+
- name: receiveMessages
|
|
43
|
+
kind: boolean
|
|
44
|
+
- name: companyName
|
|
45
|
+
type: string
|
|
46
|
+
hasFilter: true
|
|
47
|
+
actionList:
|
|
48
|
+
- type: edit
|
|
49
|
+
role: form
|
|
50
|
+
permission: user.update
|
|
51
|
+
checkFunction: "!element.__archived"
|
|
52
|
+
refresh: true
|
|
53
|
+
options:
|
|
54
|
+
customComponent: true
|
|
55
|
+
formComponent: UserEditForm
|
|
56
|
+
loadFrom:
|
|
57
|
+
operationId: user-controller-getByUuid
|
|
58
|
+
parameters:
|
|
59
|
+
uuid: rowId
|
|
60
|
+
- type: delete
|
|
61
|
+
icon: delete
|
|
62
|
+
refresh: true
|
|
63
|
+
confirm: true
|
|
64
|
+
inHeader: true
|
|
65
|
+
permission: user.archive
|
|
66
|
+
checkFunction: "!!element.__archived"
|
|
67
|
+
role: open-api
|
|
68
|
+
color: warn
|
|
69
|
+
options:
|
|
70
|
+
operationId: user-controller-delete
|
|
71
|
+
parameters:
|
|
72
|
+
uuid: rowId
|
|
73
|
+
- type: archive
|
|
74
|
+
role: open-api
|
|
75
|
+
refresh: true
|
|
76
|
+
confirm: true
|
|
77
|
+
inHeader: true
|
|
78
|
+
permission: user.archive
|
|
79
|
+
checkFunction: "!element.__archived"
|
|
80
|
+
options:
|
|
81
|
+
operationId: user-controller-archive
|
|
82
|
+
parameters:
|
|
83
|
+
uuid: rowId
|
|
84
|
+
- type: restore
|
|
85
|
+
role: open-api
|
|
86
|
+
refresh: true
|
|
87
|
+
inHeader: true
|
|
88
|
+
confirm: true
|
|
89
|
+
permission: user.archive
|
|
90
|
+
checkFunction: "!!element.__archived"
|
|
91
|
+
options:
|
|
92
|
+
operationId: user-controller-unarchive
|
|
93
|
+
parameters:
|
|
94
|
+
uuid: rowId
|
|
95
|
+
- type: set-password
|
|
96
|
+
permission: user.set-password
|
|
97
|
+
checkFunction: "!element.__archived"
|
|
98
|
+
svgIcon: lock-reset
|
|
99
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
- package: '@rxap/plugin-workspace'
|
|
2
|
+
name: init
|
|
3
|
+
options:
|
|
4
|
+
packages: false
|
|
5
|
+
standalone: false
|
|
6
|
+
skipLicense: true
|
|
7
|
+
- package: '@rxap/plugin-gitlab-ci'
|
|
8
|
+
name: init
|
|
9
|
+
options:
|
|
10
|
+
onlyPackages: false
|
|
11
|
+
dte: true
|
|
12
|
+
skipFormat: false
|
|
13
|
+
- package: '@rxap/plugin-gitlab-ci'
|
|
14
|
+
name: docker
|
|
15
|
+
options:
|
|
16
|
+
tags:
|
|
17
|
+
- kaniko
|
|
18
|
+
skipFormat: false
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Backend Configuration Guide
|
|
2
|
+
|
|
3
|
+
The `backend` property defines how the table component retrieves data and whether a backend controller should be generated.
|
|
4
|
+
|
|
5
|
+
## Backend Kinds
|
|
6
|
+
|
|
7
|
+
| Kind | Description |
|
|
8
|
+
| :--- | :--- |
|
|
9
|
+
| `none` | No backend integration. Uses mock data (default). |
|
|
10
|
+
| `nestjs` | Generates a NestJS controller and connects the table to it. |
|
|
11
|
+
| `open-api` | Connects the table to an existing OpenAPI-generated client. |
|
|
12
|
+
| `local` | Uses local data (static or from a local service). |
|
|
13
|
+
| `data-source` | Uses a custom data source implementation. |
|
|
14
|
+
|
|
15
|
+
## NestJS Backend
|
|
16
|
+
|
|
17
|
+
When using `kind: nestjs`, the schematic will generate a controller in the specified `nestModule`.
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
backend:
|
|
21
|
+
kind: nestjs
|
|
22
|
+
project: api-app # Optional: Backend project name
|
|
23
|
+
nestModule: api-user
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Generated Controller
|
|
27
|
+
The generated controller will include a `getPage` method that handles:
|
|
28
|
+
- Pagination
|
|
29
|
+
- Sorting
|
|
30
|
+
- Filtering
|
|
31
|
+
|
|
32
|
+
## OpenAPI Backend
|
|
33
|
+
|
|
34
|
+
When using `kind: open-api`, you must specify the `operationId` of the API endpoint.
|
|
35
|
+
|
|
36
|
+
```yaml
|
|
37
|
+
backend:
|
|
38
|
+
kind: open-api
|
|
39
|
+
serverId: main # Optional: Server ID from OpenAPI spec
|
|
40
|
+
openApi:
|
|
41
|
+
operationId: listUsers
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Global Backend Options
|
|
45
|
+
|
|
46
|
+
| Property | Type | Description |
|
|
47
|
+
| :--- | :--- | :--- |
|
|
48
|
+
| `project` | `string` | The target project for the backend code. |
|
|
49
|
+
| `serverId` | `string` | The OpenAPI server ID to use. |
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Form Component Guide
|
|
2
|
+
|
|
3
|
+
The `form-component` schematic generates a reactive Angular form component, which can be used as a standalone page, a dialog, or integrated into other components like tables.
|
|
4
|
+
|
|
5
|
+
## Basic Usage
|
|
6
|
+
|
|
7
|
+
To generate a form component, define it in your schematic configuration:
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
- package: "@rxap/schematic-angular"
|
|
11
|
+
name: form-component
|
|
12
|
+
options:
|
|
13
|
+
name: user-edit
|
|
14
|
+
project: admin-panel
|
|
15
|
+
feature: user
|
|
16
|
+
controlList:
|
|
17
|
+
- name: email
|
|
18
|
+
kind: input
|
|
19
|
+
label: Email Address
|
|
20
|
+
required: true
|
|
21
|
+
- name: role
|
|
22
|
+
kind: select
|
|
23
|
+
label: Role
|
|
24
|
+
options:
|
|
25
|
+
- value: admin
|
|
26
|
+
label: Admin
|
|
27
|
+
- value: user
|
|
28
|
+
label: User
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Properties
|
|
32
|
+
|
|
33
|
+
| Property | Type | Description |
|
|
34
|
+
| :--- | :--- | :--- |
|
|
35
|
+
| `name` | `string` | The name of the form component. |
|
|
36
|
+
| `project` | `string` | The target project. |
|
|
37
|
+
| `feature` | `string` | The feature module. |
|
|
38
|
+
| `controlList` | `array` | [Control Definitions](./form-control.md) |
|
|
39
|
+
| `window` | `boolean` | If `true`, the form is designed to open in a window/dialog. |
|
|
40
|
+
| `role` | `string` | The role of the form (e.g., `form`, `search`). |
|
|
41
|
+
| `matFormFieldDefaultOptions` | `object` | Default options for Material form fields (e.g., `appearance`). |
|
|
42
|
+
|
|
43
|
+
## Usage in Tables
|
|
44
|
+
|
|
45
|
+
Forms are often used as actions within a [Table Component](./table-component.md). You can define a form inline using the `formOptions` property in a table action.
|
|
46
|
+
|
|
47
|
+
```yaml
|
|
48
|
+
actionList:
|
|
49
|
+
- type: create
|
|
50
|
+
kind: form
|
|
51
|
+
icon: add
|
|
52
|
+
formOptions:
|
|
53
|
+
controlList:
|
|
54
|
+
- name: title
|
|
55
|
+
required: true
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
For more details on integrating forms with tables, see the [Table Action Guide](./table-action.md#form-actions).
|