From 3ca48469fc77625b8d8cc3d450e9cdc90a73dafe Mon Sep 17 00:00:00 2001 From: cproudlock Date: Mon, 8 Dec 2025 14:49:20 -0500 Subject: [PATCH] Auto-populate printer name and FQDN on add printer form MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- addprinter.asp | 67 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/addprinter.asp b/addprinter.asp index c04f0d3..9f2eb70 100644 --- a/addprinter.asp +++ b/addprinter.asp @@ -54,7 +54,7 @@ "ORDER BY vendors.vendor ASC, models.modelnumber ASC" Set rsModels = objconn.Execute(strSQL) While Not rsModels.EOF - Response.Write("") + Response.Write("") rsModels.MoveNext Wend rsModels.Close @@ -205,7 +205,10 @@ ' Only output if we have display text If displayText <> "" Then - Response.Write("") + Dim machineAlias, machineNum + machineAlias = Trim(rsMachines("alias") & "") + machineNum = Trim(rsMachines("machinenumber") & "") + Response.Write("") 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