@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,192 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "formId": "ddi_dns_domain_external",
4
+ "title": "DDI - DNS Domain (External)",
5
+ "description": "Request creation or change of an external/public DNS zone and records (registrar + delegation + DNSSEC).",
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": "domain",
39
+ "title": "Domain / Registrar",
40
+ "fields": [
41
+ {
42
+ "id": "domain_name",
43
+ "type": "text",
44
+ "label": "Domain Name",
45
+ "required": true,
46
+ "placeholder": "e.g., example.com"
47
+ },
48
+ {
49
+ "id": "request_type",
50
+ "type": "select",
51
+ "label": "Request Type",
52
+ "required": true,
53
+ "options": [
54
+ "New Zone",
55
+ "Update Records",
56
+ "Delegation Change",
57
+ "Transfer Registrar",
58
+ "DNSSEC Change",
59
+ "Other"
60
+ ]
61
+ },
62
+ {
63
+ "id": "registrar",
64
+ "type": "text",
65
+ "label": "Registrar",
66
+ "placeholder": "e.g., MarkMonitor, GoDaddy, Route53 Registrar"
67
+ },
68
+ {
69
+ "id": "registrar_account",
70
+ "type": "text",
71
+ "label": "Registrar Account / Tenant"
72
+ }
73
+ ]
74
+ },
75
+ {
76
+ "id": "external_dns_platform",
77
+ "title": "External DNS Platform / Location",
78
+ "description": "Where external DNS is hosted and the expected authoritative nameservers.",
79
+ "fields": [
80
+ {
81
+ "id": "dns_provider",
82
+ "type": "select",
83
+ "label": "DNS Provider",
84
+ "required": true,
85
+ "options": [
86
+ "Cloudflare",
87
+ "Route 53",
88
+ "Akamai",
89
+ "NS1",
90
+ "Infoblox (External)",
91
+ "Other"
92
+ ]
93
+ },
94
+ {
95
+ "id": "provider_account",
96
+ "type": "text",
97
+ "label": "Provider Account / Zone ID (if known)"
98
+ },
99
+ {
100
+ "id": "authoritative_ns",
101
+ "type": "textarea",
102
+ "label": "Authoritative Nameservers",
103
+ "help": "One per line, if already known."
104
+ },
105
+ {
106
+ "id": "geography_notes",
107
+ "type": "textarea",
108
+ "label": "Geo / Routing Notes",
109
+ "help": "Anycast, geo-steering, failover policies, etc."
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "id": "dnssec",
115
+ "title": "DNSSEC",
116
+ "fields": [
117
+ {
118
+ "id": "dnssec_required",
119
+ "type": "select",
120
+ "label": "Enable DNSSEC?",
121
+ "required": true,
122
+ "options": [
123
+ "Yes",
124
+ "No",
125
+ "Unknown"
126
+ ]
127
+ },
128
+ {
129
+ "id": "ds_publish_method",
130
+ "type": "select",
131
+ "label": "DS Publication Method",
132
+ "options": [
133
+ "Registrar DS Update",
134
+ "Provider Managed",
135
+ "N/A"
136
+ ],
137
+ "showIf": {
138
+ "field": "dnssec_required",
139
+ "operator": "equals",
140
+ "value": "Yes"
141
+ }
142
+ },
143
+ {
144
+ "id": "ksk_rollover_window",
145
+ "type": "textarea",
146
+ "label": "KSK Rollover / Maintenance Notes",
147
+ "showIf": {
148
+ "field": "dnssec_required",
149
+ "operator": "equals",
150
+ "value": "Yes"
151
+ }
152
+ }
153
+ ]
154
+ },
155
+ {
156
+ "id": "records",
157
+ "title": "Requested DNS Records",
158
+ "fields": [
159
+ {
160
+ "id": "record_change_summary",
161
+ "type": "textarea",
162
+ "label": "Record Requirements",
163
+ "required": true,
164
+ "help": "List A/AAAA/CNAME/TXT/MX/SRV, TTLs, and any validation targets."
165
+ },
166
+ {
167
+ "id": "ttl_default",
168
+ "type": "number",
169
+ "label": "Default TTL (seconds)",
170
+ "min": 60,
171
+ "max": 86400,
172
+ "step": 60
173
+ },
174
+ {
175
+ "id": "validation_notes",
176
+ "type": "textarea",
177
+ "label": "Validation / Ownership Proof",
178
+ "help": "e.g., ACME DNS-01 TXT, domain verification strings."
179
+ }
180
+ ]
181
+ }
182
+ ],
183
+ "actions": [
184
+ {
185
+ "id": "copy_external_dns_summary",
186
+ "type": "copyBlock",
187
+ "label": "Copy External DNS Summary",
188
+ "template": "External DNS Domain Request\\nDomain: {{domain_name}}\\nType: {{request_type}}\\nProvider: {{dns_provider}}\\nDNSSEC: {{dnssec_required}}\\nRecords: {{record_change_summary}}\\nNeeded By: {{needed_by}}\\nTicket: {{ticket_id}}",
189
+ "successMessage": "Copied external DNS summary"
190
+ }
191
+ ]
192
+ }
@@ -0,0 +1,171 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "formId": "ddi_dns_domain_internal",
4
+ "title": "DDI - DNS Domain (Internal)",
5
+ "description": "Request an internal DNS zone or changes, including DNS view, forwarders, and resolver scope.",
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": "zone",
39
+ "title": "Zone Details",
40
+ "fields": [
41
+ {
42
+ "id": "zone_name",
43
+ "type": "text",
44
+ "label": "Zone Name",
45
+ "required": true,
46
+ "placeholder": "e.g., corp.example.local"
47
+ },
48
+ {
49
+ "id": "request_type",
50
+ "type": "select",
51
+ "label": "Request Type",
52
+ "required": true,
53
+ "options": [
54
+ "New Zone",
55
+ "Update Records",
56
+ "Delegation Change",
57
+ "Conditional Forward",
58
+ "Reverse Zone",
59
+ "Other"
60
+ ]
61
+ },
62
+ {
63
+ "id": "dns_view",
64
+ "type": "select",
65
+ "label": "DNS View / Split-Horizon",
66
+ "required": true,
67
+ "options": [
68
+ "Internal",
69
+ "Corp",
70
+ "Prod",
71
+ "Non-Prod",
72
+ "Guest",
73
+ "Custom"
74
+ ]
75
+ },
76
+ {
77
+ "id": "dns_view_custom",
78
+ "type": "text",
79
+ "label": "Custom DNS View Name",
80
+ "showIf": {
81
+ "field": "dns_view",
82
+ "operator": "equals",
83
+ "value": "Custom"
84
+ }
85
+ },
86
+ {
87
+ "id": "soa_contact",
88
+ "type": "text",
89
+ "label": "SOA Contact / Owner",
90
+ "placeholder": "e.g., noc.example.com"
91
+ }
92
+ ]
93
+ },
94
+ {
95
+ "id": "location",
96
+ "title": "Resolver Scope / Location",
97
+ "fields": [
98
+ {
99
+ "id": "site_name",
100
+ "type": "text",
101
+ "label": "Site / Region Scope",
102
+ "required": true,
103
+ "placeholder": "e.g., All Sites, NYC only, EU only"
104
+ },
105
+ {
106
+ "id": "resolver_groups",
107
+ "type": "textarea",
108
+ "label": "Resolver Groups / DNS Servers",
109
+ "help": "Hostnames/IPs of resolvers or groups that should serve this zone."
110
+ },
111
+ {
112
+ "id": "forwarders",
113
+ "type": "textarea",
114
+ "label": "Forwarders (if applicable)",
115
+ "help": "One per line. Used for conditional forwarding."
116
+ }
117
+ ]
118
+ },
119
+ {
120
+ "id": "records",
121
+ "title": "Records / Policies",
122
+ "fields": [
123
+ {
124
+ "id": "record_change_summary",
125
+ "type": "textarea",
126
+ "label": "Record Requirements",
127
+ "required": true
128
+ },
129
+ {
130
+ "id": "ttl_default",
131
+ "type": "number",
132
+ "label": "Default TTL (seconds)",
133
+ "min": 60,
134
+ "max": 86400,
135
+ "step": 60
136
+ },
137
+ {
138
+ "id": "dynamic_updates",
139
+ "type": "select",
140
+ "label": "Allow Dynamic Updates?",
141
+ "required": true,
142
+ "options": [
143
+ "No",
144
+ "Yes (Restricted)",
145
+ "Yes (Unrestricted)",
146
+ "Unknown"
147
+ ]
148
+ },
149
+ {
150
+ "id": "update_restrictions",
151
+ "type": "textarea",
152
+ "label": "Dynamic Update Restrictions",
153
+ "showIf": {
154
+ "field": "dynamic_updates",
155
+ "operator": "neq",
156
+ "value": "No"
157
+ }
158
+ }
159
+ ]
160
+ }
161
+ ],
162
+ "actions": [
163
+ {
164
+ "id": "copy_internal_dns_summary",
165
+ "type": "copyBlock",
166
+ "label": "Copy Internal DNS Summary",
167
+ "template": "Internal DNS Domain Request\\nZone: {{zone_name}}\\nType: {{request_type}}\\nView: {{dns_view}} {{dns_view_custom}}\\nScope: {{site_name}}\\nResolvers: {{resolver_groups}}\\nRecords: {{record_change_summary}}\\nNeeded By: {{needed_by}}\\nTicket: {{ticket_id}}",
168
+ "successMessage": "Copied internal DNS summary"
169
+ }
170
+ ]
171
+ }
@@ -0,0 +1,126 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "formId": "it_network_change_request",
4
+ "title": "IT - Network Change Request",
5
+ "description": "Request a network change (firewall rule, VLAN, DNS, routing).",
6
+ "sections": [
7
+ {
8
+ "id": "request",
9
+ "title": "Request",
10
+ "fields": [
11
+ {
12
+ "id": "requestor",
13
+ "type": "text",
14
+ "label": "Requester",
15
+ "required": true
16
+ },
17
+ {
18
+ "id": "email",
19
+ "type": "text",
20
+ "label": "Email",
21
+ "required": true,
22
+ "validate": "email"
23
+ },
24
+ {
25
+ "id": "change_window",
26
+ "type": "date",
27
+ "label": "Change Date",
28
+ "required": true
29
+ },
30
+ {
31
+ "id": "ticket",
32
+ "type": "text",
33
+ "label": "Ticket/Change ID"
34
+ }
35
+ ]
36
+ },
37
+ {
38
+ "id": "change",
39
+ "title": "Change Details",
40
+ "fields": [
41
+ {
42
+ "id": "change_type",
43
+ "type": "select",
44
+ "label": "Change Type",
45
+ "required": true,
46
+ "options": [
47
+ {
48
+ "value": "",
49
+ "text": "Select..."
50
+ },
51
+ {
52
+ "value": "firewall",
53
+ "text": "Firewall rule"
54
+ },
55
+ {
56
+ "value": "vlan",
57
+ "text": "VLAN change"
58
+ },
59
+ {
60
+ "value": "dns",
61
+ "text": "DNS update"
62
+ },
63
+ {
64
+ "value": "routing",
65
+ "text": "Routing change"
66
+ }
67
+ ]
68
+ },
69
+ {
70
+ "id": "risk",
71
+ "type": "radio",
72
+ "label": "Risk Level",
73
+ "required": true,
74
+ "options": [
75
+ {
76
+ "value": "low",
77
+ "text": "Low"
78
+ },
79
+ {
80
+ "value": "medium",
81
+ "text": "Medium"
82
+ },
83
+ {
84
+ "value": "high",
85
+ "text": "High"
86
+ }
87
+ ]
88
+ },
89
+ {
90
+ "id": "firewall_rules",
91
+ "type": "keyvalue",
92
+ "label": "Firewall Rules (delimiter)",
93
+ "help": "One per line, e.g., src=10.0.0.0/24 dst=10.1.0.5 port=443",
94
+ "keyvalueMode": "delimiter",
95
+ "keyvalueDelimiter": "=",
96
+ "showIf": {
97
+ "field": "change_type",
98
+ "operator": "equals",
99
+ "value": "firewall"
100
+ }
101
+ },
102
+ {
103
+ "id": "vlan_lines",
104
+ "type": "keyvalue",
105
+ "label": "VLAN Entries (delimiter)",
106
+ "help": "One per line, e.g., vlan_id=101",
107
+ "keyvalueMode": "delimiter",
108
+ "keyvalueDelimiter": "=",
109
+ "showIf": {
110
+ "field": "change_type",
111
+ "operator": "equals",
112
+ "value": "vlan"
113
+ }
114
+ },
115
+ {
116
+ "id": "details",
117
+ "type": "textarea",
118
+ "label": "Details",
119
+ "rows": 5,
120
+ "required": true
121
+ }
122
+ ]
123
+ }
124
+ ],
125
+ "actions": []
126
+ }