Auto-populate printer name and FQDN on add printer form

- Printer name auto-generates from CSF name, machine/location, vendor, model
- Format: CSFName-Location-VendorDescription (e.g., CSF21-7701-HP-LaserJet)
- FQDN auto-generates from IP: Printer-10-80-92-69.printer.geaerospace.net
- Added data attributes to model and machine dropdowns for JS access

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
cproudlock
2025-12-08 14:49:20 -05:00
parent 0887f8df45
commit 3ca48469fc

View File

@@ -54,7 +54,7 @@
"ORDER BY vendors.vendor ASC, models.modelnumber ASC"
Set rsModels = objconn.Execute(strSQL)
While Not rsModels.EOF
Response.Write("<option value='" & rsModels("modelnumberid") & "'>" & Server.HTMLEncode(rsModels("vendor") & " - " & rsModels("modelnumber")) & "</option>")
Response.Write("<option value='" & rsModels("modelnumberid") & "' data-vendor='" & Server.HTMLEncode(rsModels("vendor")) & "' data-model='" & Server.HTMLEncode(rsModels("modelnumber")) & "'>" & Server.HTMLEncode(rsModels("vendor") & " - " & rsModels("modelnumber")) & "</option>")
rsModels.MoveNext
Wend
rsModels.Close
@@ -205,7 +205,10 @@
' Only output if we have display text
If displayText <> "" Then
Response.Write("<option value='" & rsMachines("machineid") & "'>" & Server.HTMLEncode(displayText) & "</option>")
Dim machineAlias, machineNum
machineAlias = Trim(rsMachines("alias") & "")
machineNum = Trim(rsMachines("machinenumber") & "")
Response.Write("<option value='" & rsMachines("machineid") & "' data-alias='" & Server.HTMLEncode(machineAlias) & "' data-number='" & Server.HTMLEncode(machineNum) & "'>" & Server.HTMLEncode(displayText) & "</option>")
End If
rsMachines.MoveNext
@@ -319,6 +322,66 @@
$('#newvendorname').val('').prop('required', false);
});
// Auto-populate printer name and FQDN
function generatePrinterName() {
var csfName = $('#printercsfname').val().trim();
var machineOption = $('#machineid option:selected');
var modelOption = $('#modelid option:selected');
var vendor = modelOption.data('vendor') || '';
var model = modelOption.data('model') || '';
var machineAlias = machineOption.data('alias') || '';
var machineNumber = machineOption.data('number') || '';
// Use alias if available, otherwise machine number
var location = machineAlias || machineNumber;
location = location.replace(/\s+/g, '').replace('Machine', '');
// Extract short description from model
var shortDesc = '';
var cleanModel = model.replace(/\s+/g, '');
if (cleanModel.indexOf('ColorLaserJet') >= 0) shortDesc = 'ColorLaserJet';
else if (cleanModel.indexOf('LaserJetPro') >= 0) shortDesc = 'LaserJetPro';
else if (cleanModel.indexOf('LaserJet') >= 0) shortDesc = 'LaserJet';
else if (cleanModel.indexOf('Altalink') >= 0) shortDesc = 'Altalink';
else if (cleanModel.indexOf('Versalink') >= 0) shortDesc = 'Versalink';
else if (cleanModel.indexOf('DesignJet') >= 0) shortDesc = 'DesignJet';
else if (cleanModel.indexOf('DTC') >= 0) shortDesc = 'DTC';
else {
// Extract letters before first number
var match = cleanModel.match(/^([A-Za-z]+)/);
shortDesc = match ? match[1] : cleanModel;
}
// Build name: CSFName-Location-Vendor-Description or Location-Vendor-Description
var parts = [];
if (csfName && csfName !== 'NONE') parts.push(csfName);
if (location && location.toLowerCase() !== csfName.toLowerCase()) parts.push(location);
if (vendor) parts.push(vendor + shortDesc);
var printerName = parts.join('-');
if (printerName) {
$('#printerwindowsname').val(printerName);
}
}
function generateFQDN() {
var ip = $('#ipaddress').val().trim();
if (ip && /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ip)) {
var fqdn = 'Printer-' + ip.replace(/\./g, '-') + '.printer.geaerospace.net';
$('#fqdn').val(fqdn);
}
}
// Trigger auto-populate on field changes
$('#printercsfname, #machineid, #modelid').on('change keyup', function() {
generatePrinterName();
});
$('#ipaddress').on('change keyup blur', function() {
generateFQDN();
});
// Form validation
$('form').on('submit', function(e) {
// If adding new model, make sure fields are filled