@cyprnet/node-red-contrib-uibuilder-formgen 0.4.11

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 (52) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +22 -0
  3. package/README.md +58 -0
  4. package/docs/user-guide.html +565 -0
  5. package/examples/formgen-builder/src/index.html +921 -0
  6. package/examples/formgen-builder/src/index.js +1338 -0
  7. package/examples/portalsmith-formgen-example.json +531 -0
  8. package/examples/schema-builder-integration.json +109 -0
  9. package/examples/schemas/Banking/banking_fraud_report.json +102 -0
  10. package/examples/schemas/Banking/banking_kyc_update.json +59 -0
  11. package/examples/schemas/Banking/banking_loan_application.json +113 -0
  12. package/examples/schemas/Banking/banking_new_account.json +98 -0
  13. package/examples/schemas/Banking/banking_wire_transfer_request.json +94 -0
  14. package/examples/schemas/HR/hr_employee_change_form.json +65 -0
  15. package/examples/schemas/HR/hr_exit_interview.json +105 -0
  16. package/examples/schemas/HR/hr_job_application.json +166 -0
  17. package/examples/schemas/HR/hr_onboarding_request.json +140 -0
  18. package/examples/schemas/HR/hr_time_off_request.json +95 -0
  19. package/examples/schemas/HR/hr_training_request.json +70 -0
  20. package/examples/schemas/Healthcare/health_appointment_request.json +103 -0
  21. package/examples/schemas/Healthcare/health_incident_report.json +82 -0
  22. package/examples/schemas/Healthcare/health_lab_order_request.json +72 -0
  23. package/examples/schemas/Healthcare/health_medication_refill.json +72 -0
  24. package/examples/schemas/Healthcare/health_patient_intake.json +113 -0
  25. package/examples/schemas/IT/it_access_request.json +145 -0
  26. package/examples/schemas/IT/it_dhcp_reservation.json +175 -0
  27. package/examples/schemas/IT/it_dns_domain_external.json +192 -0
  28. package/examples/schemas/IT/it_dns_domain_internal.json +171 -0
  29. package/examples/schemas/IT/it_network_change_request.json +126 -0
  30. package/examples/schemas/IT/it_network_request-form.json +299 -0
  31. package/examples/schemas/IT/it_new_hardware_request.json +155 -0
  32. package/examples/schemas/IT/it_password_reset.json +133 -0
  33. package/examples/schemas/IT/it_software_license_request.json +93 -0
  34. package/examples/schemas/IT/it_static_ip_request.json +199 -0
  35. package/examples/schemas/IT/it_subnet_request_form.json +216 -0
  36. package/examples/schemas/Maintenance/maint_checklist.json +176 -0
  37. package/examples/schemas/Maintenance/maint_facility_issue_report.json +127 -0
  38. package/examples/schemas/Maintenance/maint_incident_intake.json +174 -0
  39. package/examples/schemas/Maintenance/maint_inventory_restock.json +79 -0
  40. package/examples/schemas/Maintenance/maint_safety_audit.json +92 -0
  41. package/examples/schemas/Maintenance/maint_vehicle_inspection.json +112 -0
  42. package/examples/schemas/Maintenance/maint_work_order.json +134 -0
  43. package/index.js +12 -0
  44. package/lib/licensing.js +254 -0
  45. package/nodes/portalsmith-license.html +40 -0
  46. package/nodes/portalsmith-license.js +23 -0
  47. package/nodes/uibuilder-formgen.html +261 -0
  48. package/nodes/uibuilder-formgen.js +598 -0
  49. package/package.json +47 -0
  50. package/scripts/normalize_schema_titles.py +77 -0
  51. package/templates/index.html.mustache +541 -0
  52. package/templates/index.js.mustache +1135 -0
@@ -0,0 +1,299 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "formId": "ddi_network_request",
4
+ "title": "DDI - Network Request",
5
+ "description": "Request a new network segment, VLAN/VRF, routing and ACL details, and location context.",
6
+ "sections": [
7
+ {
8
+ "id": "request_meta",
9
+ "title": "Request Details",
10
+ "fields": [
11
+ {
12
+ "id": "requestor_name",
13
+ "type": "text",
14
+ "label": "Requestor Name",
15
+ "required": true
16
+ },
17
+ {
18
+ "id": "requestor_email",
19
+ "type": "text",
20
+ "label": "Requestor Email",
21
+ "validate": "email",
22
+ "required": true
23
+ },
24
+ {
25
+ "id": "priority",
26
+ "type": "select",
27
+ "label": "Priority",
28
+ "required": true,
29
+ "options": [
30
+ "Low",
31
+ "Normal",
32
+ "High",
33
+ "Critical"
34
+ ]
35
+ },
36
+ {
37
+ "id": "needed_by",
38
+ "type": "date",
39
+ "label": "Needed By (Target Date)",
40
+ "required": true
41
+ },
42
+ {
43
+ "id": "change_window",
44
+ "type": "select",
45
+ "label": "Preferred Change Window",
46
+ "options": [
47
+ "Business Hours",
48
+ "After Hours",
49
+ "Weekend",
50
+ "Any"
51
+ ]
52
+ }
53
+ ]
54
+ },
55
+ {
56
+ "id": "location",
57
+ "title": "Network Location",
58
+ "description": "Provide physical/logical location details so routing and implementation are accurate.",
59
+ "fields": [
60
+ {
61
+ "id": "site_name",
62
+ "type": "text",
63
+ "label": "Site / Facility Name",
64
+ "required": true,
65
+ "placeholder": "e.g., NYC-DC1 / ATL-Office"
66
+ },
67
+ {
68
+ "id": "building_floor",
69
+ "type": "text",
70
+ "label": "Building / Floor (if applicable)"
71
+ },
72
+ {
73
+ "id": "closet_room",
74
+ "type": "text",
75
+ "label": "Closet / Room (if applicable)"
76
+ },
77
+ {
78
+ "id": "rack_row",
79
+ "type": "text",
80
+ "label": "Rack / Row (if applicable)"
81
+ },
82
+ {
83
+ "id": "datacenter_region",
84
+ "type": "select",
85
+ "label": "Region",
86
+ "options": [
87
+ "NA-East",
88
+ "NA-West",
89
+ "EU",
90
+ "APAC",
91
+ "Other"
92
+ ]
93
+ },
94
+ {
95
+ "id": "vrf_name",
96
+ "type": "text",
97
+ "label": "VRF Name (if applicable)",
98
+ "placeholder": "e.g., CORP, GUEST, PROD"
99
+ },
100
+ {
101
+ "id": "vlan_id",
102
+ "type": "number",
103
+ "label": "VLAN ID (if applicable)",
104
+ "min": 1,
105
+ "max": 4094
106
+ },
107
+ {
108
+ "id": "router_pair",
109
+ "type": "text",
110
+ "label": "Router / Switch Pair (hostname)",
111
+ "placeholder": "e.g., rtr01/rtr02 or dist-sw01/sw02"
112
+ },
113
+ {
114
+ "id": "routing_domain",
115
+ "type": "select",
116
+ "label": "Routing Domain",
117
+ "options": [
118
+ "Campus",
119
+ "Datacenter",
120
+ "Cloud",
121
+ "Hybrid",
122
+ "Unknown"
123
+ ]
124
+ }
125
+ ]
126
+ },
127
+ {
128
+ "id": "network_specs",
129
+ "title": "Network Specifications",
130
+ "fields": [
131
+ {
132
+ "id": "environment",
133
+ "type": "select",
134
+ "label": "Environment",
135
+ "required": true,
136
+ "options": [
137
+ "Prod",
138
+ "Non-Prod",
139
+ "Dev",
140
+ "QA",
141
+ "Lab",
142
+ "Shared Services"
143
+ ]
144
+ },
145
+ {
146
+ "id": "purpose",
147
+ "type": "textarea",
148
+ "label": "Purpose / Business Justification",
149
+ "required": true
150
+ },
151
+ {
152
+ "id": "network_type",
153
+ "type": "select",
154
+ "label": "Network Type",
155
+ "required": true,
156
+ "options": [
157
+ "User LAN",
158
+ "Server LAN",
159
+ "Management",
160
+ "Storage",
161
+ "DMZ",
162
+ "IoT",
163
+ "Guest",
164
+ "Other"
165
+ ]
166
+ },
167
+ {
168
+ "id": "addressing_preference",
169
+ "type": "select",
170
+ "label": "Addressing Preference",
171
+ "options": [
172
+ "IPv4 Only",
173
+ "Dual-Stack",
174
+ "IPv6 Only"
175
+ ]
176
+ },
177
+ {
178
+ "id": "dhcp_required",
179
+ "type": "select",
180
+ "label": "DHCP Needed?",
181
+ "required": true,
182
+ "options": [
183
+ "Yes",
184
+ "No",
185
+ "Unknown"
186
+ ]
187
+ },
188
+ {
189
+ "id": "dhcp_scope_size",
190
+ "type": "select",
191
+ "label": "DHCP Scope Size (estimate)",
192
+ "options": [
193
+ "/24 (~250)",
194
+ "/23 (~500)",
195
+ "/22 (~1000)",
196
+ "Custom"
197
+ ],
198
+ "showIf": {
199
+ "field": "dhcp_required",
200
+ "operator": "equals",
201
+ "value": "Yes"
202
+ }
203
+ },
204
+ {
205
+ "id": "dhcp_custom_notes",
206
+ "type": "textarea",
207
+ "label": "DHCP Custom Notes",
208
+ "showIf": {
209
+ "field": "dhcp_scope_size",
210
+ "operator": "equals",
211
+ "value": "Custom"
212
+ }
213
+ },
214
+ {
215
+ "id": "gateway_required",
216
+ "type": "select",
217
+ "label": "Default Gateway Required?",
218
+ "options": [
219
+ "Yes",
220
+ "No",
221
+ "Unknown"
222
+ ],
223
+ "required": true
224
+ },
225
+ {
226
+ "id": "gateway_notes",
227
+ "type": "textarea",
228
+ "label": "Gateway / HSRP / VRRP Notes"
229
+ },
230
+ {
231
+ "id": "acl_required",
232
+ "type": "select",
233
+ "label": "Firewall/ACL Rules Needed?",
234
+ "options": [
235
+ "Yes",
236
+ "No",
237
+ "Unknown"
238
+ ],
239
+ "required": true
240
+ },
241
+ {
242
+ "id": "acl_details",
243
+ "type": "textarea",
244
+ "label": "ACL / Firewall Requirements",
245
+ "help": "List source/destination, ports/protocols, and any compliance notes.",
246
+ "showIf": {
247
+ "field": "acl_required",
248
+ "operator": "equals",
249
+ "value": "Yes"
250
+ }
251
+ }
252
+ ]
253
+ },
254
+ {
255
+ "id": "ddi_systems",
256
+ "title": "DDI Systems / Tracking",
257
+ "fields": [
258
+ {
259
+ "id": "ipam_system",
260
+ "type": "select",
261
+ "label": "IPAM System",
262
+ "options": [
263
+ "IPControl",
264
+ "NetBox",
265
+ "BlueCat",
266
+ "Other",
267
+ "Unknown"
268
+ ]
269
+ },
270
+ {
271
+ "id": "ipam_reference",
272
+ "type": "text",
273
+ "label": "IPAM Reference / Object Name",
274
+ "placeholder": "e.g., NetBox prefix ID, Infoblox network object"
275
+ },
276
+ {
277
+ "id": "ticket_id",
278
+ "type": "text",
279
+ "label": "Ticket / Change ID",
280
+ "placeholder": "e.g., CHG000123 / INC000456"
281
+ },
282
+ {
283
+ "id": "approver",
284
+ "type": "text",
285
+ "label": "Approver / Owner"
286
+ }
287
+ ]
288
+ }
289
+ ],
290
+ "actions": [
291
+ {
292
+ "id": "copy_ticket_summary",
293
+ "type": "copyBlock",
294
+ "label": "Copy Ticket Summary",
295
+ "template": "DDI Network Request\\nSite: {{site_name}}\\nEnv: {{environment}}\\nType: {{network_type}}\\nVRF: {{vrf_name}} VLAN: {{vlan_id}}\\nRouter Pair: {{router_pair}}\\nDHCP: {{dhcp_required}} ({{dhcp_scope_size}})\\nACL: {{acl_required}}\\nPurpose: {{purpose}}\\nNeeded By: {{needed_by}}\\nTicket: {{ticket_id}}",
296
+ "successMessage": "Copied summary"
297
+ }
298
+ ]
299
+ }
@@ -0,0 +1,155 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "formId": "it_new_hardware_request",
4
+ "title": "IT - New Hardware Request",
5
+ "description": "Request a laptop/desktop/peripheral for a user.",
6
+ "sections": [
7
+ {
8
+ "id": "request",
9
+ "title": "Request",
10
+ "fields": [
11
+ {
12
+ "id": "requestor_name",
13
+ "type": "text",
14
+ "label": "Requester Name",
15
+ "required": true
16
+ },
17
+ {
18
+ "id": "requestor_email",
19
+ "type": "text",
20
+ "label": "Requester Email",
21
+ "required": true,
22
+ "validate": "email"
23
+ },
24
+ {
25
+ "id": "needed_by",
26
+ "type": "date",
27
+ "label": "Needed By",
28
+ "required": true
29
+ }
30
+ ]
31
+ },
32
+ {
33
+ "id": "recipient",
34
+ "title": "Recipient",
35
+ "fields": [
36
+ {
37
+ "id": "recipient_name",
38
+ "type": "text",
39
+ "label": "Recipient Name",
40
+ "required": true
41
+ },
42
+ {
43
+ "id": "recipient_email",
44
+ "type": "text",
45
+ "label": "Recipient Email",
46
+ "validate": "email",
47
+ "required": true
48
+ },
49
+ {
50
+ "id": "shipping_location",
51
+ "type": "textarea",
52
+ "label": "Shipping Location",
53
+ "rows": 2,
54
+ "required": true
55
+ }
56
+ ]
57
+ },
58
+ {
59
+ "id": "hardware",
60
+ "title": "Hardware",
61
+ "fields": [
62
+ {
63
+ "id": "hardware_type",
64
+ "type": "select",
65
+ "label": "Hardware Type",
66
+ "required": true,
67
+ "options": [
68
+ {
69
+ "value": "",
70
+ "text": "Select..."
71
+ },
72
+ {
73
+ "value": "laptop",
74
+ "text": "Laptop"
75
+ },
76
+ {
77
+ "value": "desktop",
78
+ "text": "Desktop"
79
+ },
80
+ {
81
+ "value": "monitor",
82
+ "text": "Monitor"
83
+ },
84
+ {
85
+ "value": "dock",
86
+ "text": "Docking station"
87
+ },
88
+ {
89
+ "value": "peripheral",
90
+ "text": "Peripheral"
91
+ }
92
+ ]
93
+ },
94
+ {
95
+ "id": "quantity",
96
+ "type": "number",
97
+ "label": "Quantity",
98
+ "required": true,
99
+ "min": 1,
100
+ "max": 20,
101
+ "step": 1,
102
+ "defaultValue": 1
103
+ },
104
+ {
105
+ "id": "requires_admin_rights",
106
+ "type": "checkbox",
107
+ "label": "Admin rights required",
108
+ "defaultValue": false
109
+ },
110
+ {
111
+ "id": "os_preference",
112
+ "type": "radio",
113
+ "label": "OS Preference",
114
+ "required": true,
115
+ "options": [
116
+ {
117
+ "value": "windows",
118
+ "text": "Windows"
119
+ },
120
+ {
121
+ "value": "macos",
122
+ "text": "macOS"
123
+ },
124
+ {
125
+ "value": "linux",
126
+ "text": "Linux"
127
+ }
128
+ ]
129
+ },
130
+ {
131
+ "id": "specs",
132
+ "type": "keyvalue",
133
+ "label": "Specs (pairs)",
134
+ "help": "Example: ram=16GB, storage=512GB, cpu=i7",
135
+ "required": false,
136
+ "keyvalueMode": "pairs",
137
+ "pairs": [
138
+ {
139
+ "key": "ram",
140
+ "value": "16GB"
141
+ }
142
+ ]
143
+ },
144
+ {
145
+ "id": "notes",
146
+ "type": "textarea",
147
+ "label": "Notes / Justification",
148
+ "rows": 4,
149
+ "required": true
150
+ }
151
+ ]
152
+ }
153
+ ],
154
+ "actions": []
155
+ }
@@ -0,0 +1,133 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "formId": "it_password_reset",
4
+ "title": "IT - Password Reset / MFA Help",
5
+ "description": "Request a password reset or MFA assistance.",
6
+ "sections": [
7
+ {
8
+ "id": "identity",
9
+ "title": "Identity",
10
+ "fields": [
11
+ {
12
+ "id": "full_name",
13
+ "type": "text",
14
+ "label": "Full Name",
15
+ "required": true
16
+ },
17
+ {
18
+ "id": "username",
19
+ "type": "text",
20
+ "label": "Username",
21
+ "required": true,
22
+ "placeholder": "jdoe"
23
+ },
24
+ {
25
+ "id": "contact_email",
26
+ "type": "text",
27
+ "label": "Contact Email",
28
+ "required": true,
29
+ "validate": "email"
30
+ },
31
+ {
32
+ "id": "contact_phone",
33
+ "type": "text",
34
+ "label": "Contact Phone",
35
+ "validate": "phone",
36
+ "placeholder": "+1 555-123-4567"
37
+ }
38
+ ]
39
+ },
40
+ {
41
+ "id": "request",
42
+ "title": "Request Details",
43
+ "fields": [
44
+ {
45
+ "id": "request_type",
46
+ "type": "select",
47
+ "label": "Request Type",
48
+ "required": true,
49
+ "options": [
50
+ {
51
+ "value": "",
52
+ "text": "Select..."
53
+ },
54
+ {
55
+ "value": "password_reset",
56
+ "text": "Password reset"
57
+ },
58
+ {
59
+ "value": "mfa_reset",
60
+ "text": "MFA reset"
61
+ },
62
+ {
63
+ "value": "unlock",
64
+ "text": "Unlock account"
65
+ }
66
+ ]
67
+ },
68
+ {
69
+ "id": "system",
70
+ "type": "select",
71
+ "label": "System",
72
+ "required": true,
73
+ "options": [
74
+ {
75
+ "value": "",
76
+ "text": "Select..."
77
+ },
78
+ {
79
+ "value": "ad",
80
+ "text": "Active Directory"
81
+ },
82
+ {
83
+ "value": "o365",
84
+ "text": "Microsoft 365"
85
+ },
86
+ {
87
+ "value": "vpn",
88
+ "text": "VPN"
89
+ },
90
+ {
91
+ "value": "other",
92
+ "text": "Other"
93
+ }
94
+ ]
95
+ },
96
+ {
97
+ "id": "is_locked_out",
98
+ "type": "checkbox",
99
+ "label": "User is locked out",
100
+ "defaultValue": false
101
+ },
102
+ {
103
+ "id": "impact",
104
+ "type": "radio",
105
+ "label": "Impact",
106
+ "required": true,
107
+ "options": [
108
+ {
109
+ "value": "low",
110
+ "text": "Low"
111
+ },
112
+ {
113
+ "value": "medium",
114
+ "text": "Medium"
115
+ },
116
+ {
117
+ "value": "high",
118
+ "text": "High"
119
+ }
120
+ ]
121
+ },
122
+ {
123
+ "id": "notes",
124
+ "type": "textarea",
125
+ "label": "Notes",
126
+ "rows": 4,
127
+ "placeholder": "Any additional details..."
128
+ }
129
+ ]
130
+ }
131
+ ],
132
+ "actions": []
133
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "formId": "it_software_license_request",
4
+ "title": "IT - Software / License Request",
5
+ "description": "Request new software, license seats, or renewals.",
6
+ "sections": [
7
+ {
8
+ "id": "request",
9
+ "title": "Request",
10
+ "fields": [
11
+ {
12
+ "id": "requestor_name",
13
+ "type": "text",
14
+ "label": "Requester Name",
15
+ "required": true
16
+ },
17
+ {
18
+ "id": "requestor_email",
19
+ "type": "text",
20
+ "label": "Requester Email",
21
+ "required": true,
22
+ "validate": "email"
23
+ },
24
+ {
25
+ "id": "needed_by",
26
+ "type": "date",
27
+ "label": "Needed By",
28
+ "required": true
29
+ }
30
+ ]
31
+ },
32
+ {
33
+ "id": "software",
34
+ "title": "Software",
35
+ "fields": [
36
+ {
37
+ "id": "software_name",
38
+ "type": "text",
39
+ "label": "Software Name",
40
+ "required": true
41
+ },
42
+ {
43
+ "id": "vendor",
44
+ "type": "text",
45
+ "label": "Vendor"
46
+ },
47
+ {
48
+ "id": "request_kind",
49
+ "type": "radio",
50
+ "label": "Request Type",
51
+ "required": true,
52
+ "options": [
53
+ {
54
+ "value": "new",
55
+ "text": "New purchase"
56
+ },
57
+ {
58
+ "value": "add_seats",
59
+ "text": "Add seats"
60
+ },
61
+ {
62
+ "value": "renew",
63
+ "text": "Renewal"
64
+ }
65
+ ]
66
+ },
67
+ {
68
+ "id": "seat_count",
69
+ "type": "number",
70
+ "label": "Seats Needed",
71
+ "min": 1,
72
+ "max": 500,
73
+ "step": 1,
74
+ "required": true
75
+ },
76
+ {
77
+ "id": "budget_code",
78
+ "type": "text",
79
+ "label": "Budget/Cost Center",
80
+ "required": true
81
+ },
82
+ {
83
+ "id": "justification",
84
+ "type": "textarea",
85
+ "label": "Justification",
86
+ "rows": 4,
87
+ "required": true
88
+ }
89
+ ]
90
+ }
91
+ ],
92
+ "actions": []
93
+ }