@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.
- package/CHANGELOG.md +33 -0
- package/LICENSE +22 -0
- package/README.md +58 -0
- package/docs/user-guide.html +565 -0
- package/examples/formgen-builder/src/index.html +921 -0
- package/examples/formgen-builder/src/index.js +1338 -0
- package/examples/portalsmith-formgen-example.json +531 -0
- package/examples/schema-builder-integration.json +109 -0
- package/examples/schemas/Banking/banking_fraud_report.json +102 -0
- package/examples/schemas/Banking/banking_kyc_update.json +59 -0
- package/examples/schemas/Banking/banking_loan_application.json +113 -0
- package/examples/schemas/Banking/banking_new_account.json +98 -0
- package/examples/schemas/Banking/banking_wire_transfer_request.json +94 -0
- package/examples/schemas/HR/hr_employee_change_form.json +65 -0
- package/examples/schemas/HR/hr_exit_interview.json +105 -0
- package/examples/schemas/HR/hr_job_application.json +166 -0
- package/examples/schemas/HR/hr_onboarding_request.json +140 -0
- package/examples/schemas/HR/hr_time_off_request.json +95 -0
- package/examples/schemas/HR/hr_training_request.json +70 -0
- package/examples/schemas/Healthcare/health_appointment_request.json +103 -0
- package/examples/schemas/Healthcare/health_incident_report.json +82 -0
- package/examples/schemas/Healthcare/health_lab_order_request.json +72 -0
- package/examples/schemas/Healthcare/health_medication_refill.json +72 -0
- package/examples/schemas/Healthcare/health_patient_intake.json +113 -0
- package/examples/schemas/IT/it_access_request.json +145 -0
- package/examples/schemas/IT/it_dhcp_reservation.json +175 -0
- package/examples/schemas/IT/it_dns_domain_external.json +192 -0
- package/examples/schemas/IT/it_dns_domain_internal.json +171 -0
- package/examples/schemas/IT/it_network_change_request.json +126 -0
- package/examples/schemas/IT/it_network_request-form.json +299 -0
- package/examples/schemas/IT/it_new_hardware_request.json +155 -0
- package/examples/schemas/IT/it_password_reset.json +133 -0
- package/examples/schemas/IT/it_software_license_request.json +93 -0
- package/examples/schemas/IT/it_static_ip_request.json +199 -0
- package/examples/schemas/IT/it_subnet_request_form.json +216 -0
- package/examples/schemas/Maintenance/maint_checklist.json +176 -0
- package/examples/schemas/Maintenance/maint_facility_issue_report.json +127 -0
- package/examples/schemas/Maintenance/maint_incident_intake.json +174 -0
- package/examples/schemas/Maintenance/maint_inventory_restock.json +79 -0
- package/examples/schemas/Maintenance/maint_safety_audit.json +92 -0
- package/examples/schemas/Maintenance/maint_vehicle_inspection.json +112 -0
- package/examples/schemas/Maintenance/maint_work_order.json +134 -0
- package/index.js +12 -0
- package/lib/licensing.js +254 -0
- package/nodes/portalsmith-license.html +40 -0
- package/nodes/portalsmith-license.js +23 -0
- package/nodes/uibuilder-formgen.html +261 -0
- package/nodes/uibuilder-formgen.js +598 -0
- package/package.json +47 -0
- package/scripts/normalize_schema_titles.py +77 -0
- package/templates/index.html.mustache +541 -0
- 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
|
+
|