@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,199 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "formId": "ddi_static_ip_request",
4
+ "title": "DDI - Static IP Address Request",
5
+ "description": "Request one or more static IPs with DNS, VLAN/VRF, and device location details.",
6
+ "sections": [
7
+ {
8
+ "id": "req",
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": "needed_by",
26
+ "type": "date",
27
+ "label": "Needed By",
28
+ "required": true
29
+ },
30
+ {
31
+ "id": "ticket_id",
32
+ "type": "text",
33
+ "label": "Ticket / Change ID"
34
+ }
35
+ ]
36
+ },
37
+ {
38
+ "id": "location",
39
+ "title": "Location / Network Context",
40
+ "fields": [
41
+ {
42
+ "id": "site_name",
43
+ "type": "text",
44
+ "label": "Site / Facility",
45
+ "required": true
46
+ },
47
+ {
48
+ "id": "building_floor",
49
+ "type": "text",
50
+ "label": "Building / Floor"
51
+ },
52
+ {
53
+ "id": "closet_room",
54
+ "type": "text",
55
+ "label": "Closet / Room"
56
+ },
57
+ {
58
+ "id": "rack_row",
59
+ "type": "text",
60
+ "label": "Rack / Row"
61
+ },
62
+ {
63
+ "id": "vrf_name",
64
+ "type": "text",
65
+ "label": "VRF (if applicable)"
66
+ },
67
+ {
68
+ "id": "vlan_id",
69
+ "type": "number",
70
+ "label": "VLAN ID",
71
+ "min": 1,
72
+ "max": 4094
73
+ },
74
+ {
75
+ "id": "subnet_hint",
76
+ "type": "text",
77
+ "label": "Subnet / Prefix (if known)",
78
+ "placeholder": "e.g., 10.50.10.0/24"
79
+ },
80
+ {
81
+ "id": "gateway_router",
82
+ "type": "text",
83
+ "label": "Gateway Router/SVI",
84
+ "placeholder": "hostname or IP"
85
+ }
86
+ ]
87
+ },
88
+ {
89
+ "id": "device",
90
+ "title": "Device / Host Details",
91
+ "fields": [
92
+ {
93
+ "id": "hostname",
94
+ "type": "text",
95
+ "label": "Hostname",
96
+ "required": true,
97
+ "placeholder": "e.g., app01"
98
+ },
99
+ {
100
+ "id": "fqdn",
101
+ "type": "text",
102
+ "label": "FQDN (if needed)",
103
+ "placeholder": "e.g., app01.corp.example.com"
104
+ },
105
+ {
106
+ "id": "device_type",
107
+ "type": "select",
108
+ "label": "Device Type",
109
+ "required": true,
110
+ "options": [
111
+ "Server",
112
+ "Router/Switch",
113
+ "Firewall",
114
+ "Printer",
115
+ "IoT",
116
+ "Storage",
117
+ "VM",
118
+ "Other"
119
+ ]
120
+ },
121
+ {
122
+ "id": "os_or_platform",
123
+ "type": "text",
124
+ "label": "OS / Platform",
125
+ "placeholder": "e.g., Ubuntu 24, Windows Server, ESXi"
126
+ },
127
+ {
128
+ "id": "quantity",
129
+ "type": "number",
130
+ "label": "How many IPs?",
131
+ "min": 1,
132
+ "max": 50,
133
+ "step": 1,
134
+ "required": true
135
+ }
136
+ ]
137
+ },
138
+ {
139
+ "id": "ip_dns",
140
+ "title": "IP + DNS Requirements",
141
+ "fields": [
142
+ {
143
+ "id": "address_family",
144
+ "type": "select",
145
+ "label": "Address Family",
146
+ "required": true,
147
+ "options": [
148
+ "IPv4",
149
+ "IPv6",
150
+ "Dual-Stack"
151
+ ]
152
+ },
153
+ {
154
+ "id": "requested_ip",
155
+ "type": "text",
156
+ "label": "Requested IP (optional)",
157
+ "placeholder": "Leave blank to auto-assign"
158
+ },
159
+ {
160
+ "id": "dns_required",
161
+ "type": "select",
162
+ "label": "Create DNS Records?",
163
+ "required": true,
164
+ "options": [
165
+ "Yes",
166
+ "No",
167
+ "Unknown"
168
+ ]
169
+ },
170
+ {
171
+ "id": "dns_record_types",
172
+ "type": "textarea",
173
+ "label": "DNS Record Types / Notes",
174
+ "help": "e.g., A/AAAA, PTR, CNAMEs, TTL, aliases",
175
+ "showIf": {
176
+ "field": "dns_required",
177
+ "operator": "equals",
178
+ "value": "Yes"
179
+ }
180
+ },
181
+ {
182
+ "id": "security_notes",
183
+ "type": "textarea",
184
+ "label": "Security / ACL Notes",
185
+ "help": "Any firewall/ACL prerequisites."
186
+ }
187
+ ]
188
+ }
189
+ ],
190
+ "actions": [
191
+ {
192
+ "id": "copy_static_ip_summary",
193
+ "type": "copyBlock",
194
+ "label": "Copy Static IP Summary",
195
+ "template": "Static IP Request\\nHost: {{hostname}}\\nFQDN: {{fqdn}}\\nQty: {{quantity}}\\nSite: {{site_name}} VRF: {{vrf_name}} VLAN: {{vlan_id}}\\nSubnet: {{subnet_hint}}\\nFamily: {{address_family}} Requested IP: {{requested_ip}}\\nDNS: {{dns_required}}\\nNotes: {{dns_record_types}}\\nNeeded By: {{needed_by}}\\nTicket: {{ticket_id}}",
196
+ "successMessage": "Copied static IP summary"
197
+ }
198
+ ]
199
+ }
@@ -0,0 +1,216 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "formId": "ddi_subnet_request",
4
+ "title": "DDI - Subnet Request",
5
+ "description": "Request a new subnet/prefix, expansion, split, or reservation with routing + DHCP details.",
6
+ "sections": [
7
+ {
8
+ "id": "req",
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": "needed_by",
26
+ "type": "date",
27
+ "label": "Needed By",
28
+ "required": true
29
+ },
30
+ {
31
+ "id": "ticket_id",
32
+ "type": "text",
33
+ "label": "Ticket / Change ID"
34
+ }
35
+ ]
36
+ },
37
+ {
38
+ "id": "location",
39
+ "title": "Location / Network Context",
40
+ "fields": [
41
+ {
42
+ "id": "site_name",
43
+ "type": "text",
44
+ "label": "Site / Facility",
45
+ "required": true
46
+ },
47
+ {
48
+ "id": "vrf_name",
49
+ "type": "text",
50
+ "label": "VRF (if applicable)"
51
+ },
52
+ {
53
+ "id": "vlan_id",
54
+ "type": "number",
55
+ "label": "VLAN ID",
56
+ "min": 1,
57
+ "max": 4094
58
+ },
59
+ {
60
+ "id": "router_gw",
61
+ "type": "text",
62
+ "label": "Gateway Router/SVI Hostname",
63
+ "placeholder": "e.g., dist-sw01 VLAN123 SVI"
64
+ }
65
+ ]
66
+ },
67
+ {
68
+ "id": "subnet",
69
+ "title": "Subnet Specifications",
70
+ "fields": [
71
+ {
72
+ "id": "request_type",
73
+ "type": "select",
74
+ "label": "Request Type",
75
+ "required": true,
76
+ "options": [
77
+ "New Subnet",
78
+ "Expand Existing",
79
+ "Split Existing",
80
+ "Reserve (Do Not Use)",
81
+ "Other"
82
+ ]
83
+ },
84
+ {
85
+ "id": "address_family",
86
+ "type": "select",
87
+ "label": "Address Family",
88
+ "required": true,
89
+ "options": [
90
+ "IPv4",
91
+ "IPv6",
92
+ "Dual-Stack"
93
+ ]
94
+ },
95
+ {
96
+ "id": "desired_prefix",
97
+ "type": "text",
98
+ "label": "Desired Prefix (optional)",
99
+ "placeholder": "e.g., 10.12.34.0/24 or 2001:db8:123::/64"
100
+ },
101
+ {
102
+ "id": "requested_size",
103
+ "type": "select",
104
+ "label": "Requested Size",
105
+ "required": true,
106
+ "options": [
107
+ "Small (/28-/27)",
108
+ "Medium (/26-/25)",
109
+ "Standard (/24)",
110
+ "Large (/23-/22)",
111
+ "Custom"
112
+ ]
113
+ },
114
+ {
115
+ "id": "custom_size_notes",
116
+ "type": "textarea",
117
+ "label": "Custom Size Notes",
118
+ "showIf": {
119
+ "field": "requested_size",
120
+ "operator": "equals",
121
+ "value": "Custom"
122
+ }
123
+ },
124
+ {
125
+ "id": "purpose",
126
+ "type": "textarea",
127
+ "label": "Purpose / Usage",
128
+ "required": true
129
+ },
130
+ {
131
+ "id": "dhcp_mode",
132
+ "type": "select",
133
+ "label": "DHCP Mode",
134
+ "required": true,
135
+ "options": [
136
+ "No DHCP (Static only)",
137
+ "DHCP Pool",
138
+ "Mixed",
139
+ "Unknown"
140
+ ]
141
+ },
142
+ {
143
+ "id": "dhcp_range_notes",
144
+ "type": "textarea",
145
+ "label": "DHCP Range / Exclusions",
146
+ "help": "List exclusions (routers, appliances), reserved blocks, etc.",
147
+ "showIf": {
148
+ "field": "dhcp_mode",
149
+ "operator": "neq",
150
+ "value": "No DHCP (Static only)"
151
+ }
152
+ },
153
+ {
154
+ "id": "dns_options",
155
+ "type": "textarea",
156
+ "label": "DHCP DNS Options",
157
+ "help": "DNS servers, search domains, option 6/15, etc."
158
+ },
159
+ {
160
+ "id": "ntp_options",
161
+ "type": "textarea",
162
+ "label": "DHCP NTP / Other Options",
163
+ "help": "Option 42, custom vendor options, PXE, etc."
164
+ }
165
+ ]
166
+ },
167
+ {
168
+ "id": "ipam",
169
+ "title": "IPAM / Notes",
170
+ "fields": [
171
+ {
172
+ "id": "ipam_system",
173
+ "type": "select",
174
+ "label": "IPAM System",
175
+ "options": [
176
+ "Infoblox",
177
+ "NetBox",
178
+ "BlueCat",
179
+ "Other",
180
+ "Unknown"
181
+ ]
182
+ },
183
+ {
184
+ "id": "parent_container",
185
+ "type": "text",
186
+ "label": "Parent Container / Aggregate",
187
+ "placeholder": "e.g., 10.12.0.0/16"
188
+ },
189
+ {
190
+ "id": "existing_prefix",
191
+ "type": "text",
192
+ "label": "Existing Prefix (if expand/split)",
193
+ "showIf": {
194
+ "field": "request_type",
195
+ "operator": "neq",
196
+ "value": "New Subnet"
197
+ }
198
+ },
199
+ {
200
+ "id": "implementation_notes",
201
+ "type": "textarea",
202
+ "label": "Implementation Notes"
203
+ }
204
+ ]
205
+ }
206
+ ],
207
+ "actions": [
208
+ {
209
+ "id": "copy_subnet_summary",
210
+ "type": "copyBlock",
211
+ "label": "Copy Subnet Summary",
212
+ "template": "Subnet Request\\nType: {{request_type}}\\nSite: {{site_name}} VRF: {{vrf_name}} VLAN: {{vlan_id}}\\nFamily: {{address_family}} Size: {{requested_size}}\\nDesired: {{desired_prefix}}\\nDHCP: {{dhcp_mode}}\\nPurpose: {{purpose}}\\nNeeded By: {{needed_by}}\\nTicket: {{ticket_id}}",
213
+ "successMessage": "Copied subnet summary"
214
+ }
215
+ ]
216
+ }
@@ -0,0 +1,176 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "formId": "maintenance_checklist",
4
+ "title": "Equipment Maintenance Checklist",
5
+ "description": "Complete this checklist after performing scheduled maintenance",
6
+ "sections": [
7
+ {
8
+ "id": "equipment",
9
+ "title": "Equipment Information",
10
+ "fields": [
11
+ {
12
+ "id": "equipmentId",
13
+ "label": "Equipment ID",
14
+ "type": "text",
15
+ "required": true,
16
+ "placeholder": "EQ-12345",
17
+ "help": "Enter the equipment serial number or ID"
18
+ },
19
+ {
20
+ "id": "equipmentType",
21
+ "label": "Equipment Type",
22
+ "type": "select",
23
+ "required": true,
24
+ "options": [
25
+ { "value": "", "text": "Select type..." },
26
+ { "value": "pump", "text": "Pump" },
27
+ { "value": "motor", "text": "Motor" },
28
+ { "value": "compressor", "text": "Compressor" },
29
+ { "value": "generator", "text": "Generator" },
30
+ { "value": "other", "text": "Other" }
31
+ ]
32
+ },
33
+ {
34
+ "id": "location",
35
+ "label": "Location",
36
+ "type": "text",
37
+ "required": true,
38
+ "placeholder": "Building A, Room 101"
39
+ },
40
+ {
41
+ "id": "maintenanceDate",
42
+ "label": "Maintenance Date",
43
+ "type": "date",
44
+ "required": true,
45
+ "defaultValue": ""
46
+ },
47
+ {
48
+ "id": "technicianName",
49
+ "label": "Technician Name",
50
+ "type": "text",
51
+ "required": true,
52
+ "placeholder": "John Smith"
53
+ }
54
+ ]
55
+ },
56
+ {
57
+ "id": "inspection",
58
+ "title": "Inspection Items",
59
+ "fields": [
60
+ {
61
+ "id": "visualInspection",
62
+ "label": "Visual Inspection Passed",
63
+ "type": "checkbox",
64
+ "required": true
65
+ },
66
+ {
67
+ "id": "lubrication",
68
+ "label": "Lubrication Completed",
69
+ "type": "checkbox",
70
+ "required": true
71
+ },
72
+ {
73
+ "id": "beltTension",
74
+ "label": "Belt Tension Checked",
75
+ "type": "checkbox",
76
+ "defaultValue": false
77
+ },
78
+ {
79
+ "id": "alignment",
80
+ "label": "Alignment Verified",
81
+ "type": "checkbox",
82
+ "defaultValue": false
83
+ },
84
+ {
85
+ "id": "vibration",
86
+ "label": "Vibration Level (mm/s)",
87
+ "type": "number",
88
+ "min": 0,
89
+ "max": 100,
90
+ "step": 0.1,
91
+ "placeholder": "2.5"
92
+ },
93
+ {
94
+ "id": "temperature",
95
+ "label": "Operating Temperature (°C)",
96
+ "type": "number",
97
+ "min": -50,
98
+ "max": 200,
99
+ "step": 0.1,
100
+ "placeholder": "25"
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "id": "parts",
106
+ "title": "Parts & Materials",
107
+ "fields": [
108
+ {
109
+ "id": "partsReplaced",
110
+ "label": "Parts Replaced",
111
+ "type": "textarea",
112
+ "rows": 3,
113
+ "placeholder": "List any parts that were replaced during maintenance"
114
+ },
115
+ {
116
+ "id": "partsCost",
117
+ "label": "Parts Cost (USD)",
118
+ "type": "number",
119
+ "min": 0,
120
+ "step": 0.01,
121
+ "placeholder": "0.00"
122
+ },
123
+ {
124
+ "id": "laborHours",
125
+ "label": "Labor Hours",
126
+ "type": "number",
127
+ "min": 0,
128
+ "step": 0.25,
129
+ "placeholder": "2.0"
130
+ }
131
+ ]
132
+ },
133
+ {
134
+ "id": "notes",
135
+ "title": "Additional Notes",
136
+ "fields": [
137
+ {
138
+ "id": "issuesFound",
139
+ "label": "Issues Found",
140
+ "type": "textarea",
141
+ "rows": 4,
142
+ "placeholder": "Describe any issues discovered during maintenance"
143
+ },
144
+ {
145
+ "id": "recommendations",
146
+ "label": "Recommendations",
147
+ "type": "textarea",
148
+ "rows": 4,
149
+ "placeholder": "Any recommendations for future maintenance or repairs"
150
+ },
151
+ {
152
+ "id": "nextMaintenance",
153
+ "label": "Next Scheduled Maintenance Date",
154
+ "type": "date"
155
+ },
156
+ {
157
+ "id": "signature",
158
+ "label": "Technician Signature",
159
+ "type": "text",
160
+ "required": true,
161
+ "placeholder": "Full name"
162
+ }
163
+ ]
164
+ }
165
+ ],
166
+ "actions": [
167
+ {
168
+ "id": "copyReport",
169
+ "type": "copyBlock",
170
+ "label": "Copy Maintenance Report",
171
+ "template": "MAINTENANCE REPORT\n\nEquipment: {{equipmentId}} ({{equipmentType}})\nLocation: {{location}}\nDate: {{maintenanceDate}}\nTechnician: {{technicianName}}\n\nInspection:\n- Visual: {{visualInspection}}\n- Lubrication: {{lubrication}}\n- Vibration: {{vibration}} mm/s\n- Temperature: {{temperature}}°C\n\nParts Replaced:\n{{partsReplaced}}\n\nIssues Found:\n{{issuesFound}}\n\nSignature: {{signature}}",
172
+ "successMessage": "Report copied to clipboard"
173
+ }
174
+ ]
175
+ }
176
+