From 32063e3cb25dbfcb03ccd051b8abdb05614f056d Mon Sep 17 00:00:00 2001 From: Skylar Grant Date: Wed, 18 Mar 2026 12:54:42 -0400 Subject: [PATCH 01/10] Fix header space printing even when header not needed --- src/assets/ITThermal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/ITThermal.js b/src/assets/ITThermal.js index d53b0a3..e76f6ae 100644 --- a/src/assets/ITThermal.js +++ b/src/assets/ITThermal.js @@ -225,9 +225,9 @@ function generateFile(lineArray, header, footer) { // Print the header if needed if (header) { doc.addImage(headerImageUri, headerImageType, 0, 0, logoWidthMm, logoHeightMm); + currentPos += logoHeightMm + ( verticalSpacing * 2); } - currentPos += logoHeightMm + ( verticalSpacing * 2); for (const row of lineArray) { doc.setFont(row.fontInfo.name, row.fontInfo.style); -- 2.45.2 From f244957c6eebe6a8ababed7230916270a6d5e004 Mon Sep 17 00:00:00 2001 From: Skylar Grant Date: Wed, 18 Mar 2026 15:03:08 -0400 Subject: [PATCH 02/10] Add imaging checklist, start adding ewaste clist --- src/assets/ITThermal.js | 125 +++++++++++++++++++++++++++++++++++++++- src/index.html | 30 ++++++++++ 2 files changed, 154 insertions(+), 1 deletion(-) diff --git a/src/assets/ITThermal.js b/src/assets/ITThermal.js index e76f6ae..81b9be3 100644 --- a/src/assets/ITThermal.js +++ b/src/assets/ITThermal.js @@ -73,6 +73,54 @@ const strings = { user: {text: 'User:', fontInfo: standard}, serviceType: {text: 'Service Type:', fontInfo: standard}, notes: {text: 'Notes:', fontInfo: standard} + }, + imagingClistStaff: { + title: { text: '(Re)Imaging Checklist', fontInfo: standardBold }, + subtitle: { text: 'Staff', fontInfo: standardBold }, + sol: { text: 'See SOL-411 for procedure details.', fontInfo: standard }, + steps: [ + 'Physically clean device', + 'Create software inventory & identify image/software needs', + 'Verify OneDrive setup & migrate user data', + 'Attach software inventory to ticket & confirm with user', + 'Remove old drive, label with hostname/date, retain; install new drive', + 'PXE boot; enter image code; name machine per SOL-279', + 'Request removal of old hostname', + 'Wait & verify post-deploy status in OS Deployer', + 'Verify post-deployment finished', + 'Verify device assignment in ME/SD Asset module', + 'Record machine SN/ST', + 'Confirm data, printers, drives, LAN login, and wireless access with user', + 'Transfer ticket to Region Manager for stock request', + ] + }, + imagingClistLabs: { + title: { text: '(Re)Imaging Checklist', fontInfo: standardBold }, + subtitle: { text: 'Labs', fontInfo: standardBold }, + sol: { text: 'See SOL-411 for procedure details.', fontInfo: standard }, + steps: [ + 'Physically clean device', + 'Verify Lab Image', + 'PXE boot; enter image code; name machine per SOL-279', + 'Request removal of old hostname', + 'Verify post-deployment finished', + 'Run EC inventory scan', + 'Verify device assignment in ME/SD Asset module', + 'Record machine SN/ST', + 'Confirm data, printers connectivity', + ] + }, + ewasteClist: { + title: { text: 'eWaste Checklist', fontInfo: standardBold }, + sol: { text: 'See SOL-??? for procedure details.', fontInfo: standard }, + steps: [ + 'Verify all peripherals are removed from the device', + 'Remove; label; and retain any storage media', + 'Remove any asset tags from the device', + 'Mark asset Disposed in ME/SD if applicable', + 'Place device in eWaste bin', + 'If bin is full, contact Region Manager to schedule pick-up' + ] } } @@ -135,6 +183,22 @@ function deviceTrackerHandler() { displayPdf(bUrl); } +function imagingClistStaffHandler() { + // Grab the User or Host Name value + const imagingHostname = document.getElementById('imagingClistName').value; + const lineArray = prepImagingClistStaff(imagingHostname); + const bUrl = generateFile(lineArray, false, false); + displayPdf(bUrl); +} + +function imagingClistLabsHandler() { + // Grab the User or Host Name value + const imagingHostname = document.getElementById('imagingClistName').value; + const lineArray = prepImagingClistLabs(imagingHostname); + const bUrl = generateFile(lineArray, false, false); + displayPdf(bUrl); +} + /** * * @param {String} password @@ -204,6 +268,50 @@ function prepDeviceTracker(dtTicketNumber, dtUser, dtService, dtNotes) { return lineArray; }; +function prepImagingClistStaff(hostname) { + const s = strings.imagingClistStaff; + const now = new Date(); + const formattedDate = `Date: ${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}-${now.getFullYear()}`; + /** @type Array */ + const lineArray = new Array(); + lineArray.push(new LineItem(s.title.text, s.title.fontInfo, false)); + lineArray.push(new LineItem(s.subtitle.text, s.subtitle.fontInfo, false)); + lineArray.push(new LineItem(s.sol.text, s.sol.fontInfo, false)); + lineArray.push(new LineItem(formattedDate, standard, false)); + + lineArray.push(new LineItem(`User/Hostname:`, standard, false)); + lineArray.push(new LineItem(hostname, standardBold, true)); + + for (let i = 0; i < s.steps.length; i++) { + const text = s.steps[i]; + const newText = `____ ${text}`; + lineArray.push(new LineItem(newText, standard, false)); + } + return lineArray; +} + +function prepImagingClistLabs(hostname) { + const s = strings.imagingClistLabs; + const now = new Date(); + const formattedDate = `Date: ${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}-${now.getFullYear()}`; + /** @type Array */ + const lineArray = new Array() + lineArray.push(new LineItem(s.title.text, s.title.fontInfo, false)); + lineArray.push(new LineItem(s.subtitle.text, s.subtitle.fontInfo, false)); + lineArray.push(new LineItem(s.sol.text, s.sol.fontInfo, false)); + lineArray.push(new LineItem(formattedDate, standard, false)); + + lineArray.push(new LineItem(`User/Hostname:`, standard, false)); + lineArray.push(new LineItem(hostname, standardBold, true)); + + for (let i = 0; i < s.steps.length; i++) { + const text = s.steps[i]; + const newText = `____ ${text}`; + lineArray.push(new LineItem(newText, standard, false)); + } + return lineArray; +} + /** * * @param {Array} lineArray @@ -226,6 +334,8 @@ function generateFile(lineArray, header, footer) { if (header) { doc.addImage(headerImageUri, headerImageType, 0, 0, logoWidthMm, logoHeightMm); currentPos += logoHeightMm + ( verticalSpacing * 2); + } else { + currentPos =+ verticalSpacing; } @@ -337,7 +447,6 @@ document.getElementById('genPassword').addEventListener('click', () => { alert(`An error occurred while generating the PDF: ${error.message}`); } }); - document.getElementById('deviceTrackerBtn').addEventListener('click', () => { try { deviceTrackerHandler(); @@ -345,6 +454,20 @@ document.getElementById('deviceTrackerBtn').addEventListener('click', () => { alert(`An error occurred while generating the PDF: ${error.message}`); } }); +document.getElementById('imagingClistStaffBtn').addEventListener('click', () => { + try { + imagingClistStaffHandler(); + } catch (error) { + alert(`An error occurred while generating the PDF: ${error.message}`); + } +}); +document.getElementById('imagingClistLabsBtn').addEventListener('click', () => { + try { + imagingClistLabsHandler(); + } catch (error) { + alert(`An error occurred while generating the PDF: ${error.message}`); + } +}); // ############################################################# // Function Calls diff --git a/src/index.html b/src/index.html index d31a3c5..ab422f2 100644 --- a/src/index.html +++ b/src/index.html @@ -153,6 +153,36 @@ + + +
+ +

Imaging Checklists

+ +
+ + +
+ +
+ +
+ + +
+ +
+
-- 2.45.2 From 983724bf08c7c7b217ae87c485722c8806950953 Mon Sep 17 00:00:00 2001 From: Skylar Grant Date: Wed, 18 Mar 2026 15:43:55 -0400 Subject: [PATCH 03/10] All 3 checklists technically function, need final review of verbiage/design still. --- src/assets/ITThermal.js | 39 ++++++++++++++++++++++++++++++++++++++- src/index.html | 12 +++++++++++- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/assets/ITThermal.js b/src/assets/ITThermal.js index 81b9be3..c957baa 100644 --- a/src/assets/ITThermal.js +++ b/src/assets/ITThermal.js @@ -1,7 +1,7 @@ /* ITS Thermal Receipt Printer * Developed by Skylar Grant for MCCS ITS */ -const version = "1.2.9"; +const version = "1.2.10 dev"; // ############################################################# // Variables // ############################################################# @@ -199,6 +199,14 @@ function imagingClistLabsHandler() { displayPdf(bUrl); } +function ewasteClistHandler() { + // Grab the User or Host Name value + const imagingHostname = document.getElementById('imagingClistName').value; + const lineArray = prepEwasteClist(imagingHostname); + const bUrl = generateFile(lineArray, false, false); + displayPdf(bUrl); +} + /** * * @param {String} password @@ -312,6 +320,27 @@ function prepImagingClistLabs(hostname) { return lineArray; } +function prepEwasteClist(hostname) { + const s = strings.ewasteClist; + const now = new Date(); + const formattedDate = `Date: ${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}-${now.getFullYear()}`; + /** @type Array */ + const lineArray = new Array() + lineArray.push(new LineItem(s.title.text, s.title.fontInfo, false)); + lineArray.push(new LineItem(s.sol.text, s.sol.fontInfo, false)); + lineArray.push(new LineItem(formattedDate, standard, false)); + + lineArray.push(new LineItem(`User/Hostname:`, standard, false)); + lineArray.push(new LineItem(hostname, standardBold, true)); + + for (let i = 0; i < s.steps.length; i++) { + const text = s.steps[i]; + const newText = `____ ${text}`; + lineArray.push(new LineItem(newText, standard, false)); + } + return lineArray; +} + /** * * @param {Array} lineArray @@ -468,6 +497,14 @@ document.getElementById('imagingClistLabsBtn').addEventListener('click', () => { alert(`An error occurred while generating the PDF: ${error.message}`); } }); +document.getElementById('ewasteClistBtn').addEventListener('click', () => { + try { + ewasteClistHandler(); + } catch (error) { + alert(`An error occurred while generating the PDF: ${error.message}`); + } +}); + // ############################################################# // Function Calls diff --git a/src/index.html b/src/index.html index ab422f2..480b674 100644 --- a/src/index.html +++ b/src/index.html @@ -157,7 +157,7 @@
-

Imaging Checklists

+

Asset Management

@@ -182,6 +182,16 @@ Labs Imaging Checklist
+ + +
+ +
-- 2.45.2 From 0c69d19f72bd10bcf752da6317c785650a6018fa Mon Sep 17 00:00:00 2001 From: Skylar Grant Date: Wed, 18 Mar 2026 15:56:10 -0400 Subject: [PATCH 04/10] Add an indicator to the page showing dev build --- src/assets/ITThermal.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/assets/ITThermal.js b/src/assets/ITThermal.js index c957baa..a24e15e 100644 --- a/src/assets/ITThermal.js +++ b/src/assets/ITThermal.js @@ -1,7 +1,8 @@ /* ITS Thermal Receipt Printer * Developed by Skylar Grant for MCCS ITS */ -const version = "1.2.10 dev"; +const version = "1.2.10"; +const inDevEnv = true; // Set to true for development environment, false for production // ############################################################# // Variables // ############################################################# @@ -131,6 +132,25 @@ function setVersionNumber() { document.getElementById('versionNumber').innerText = version; } +function setDevBanner() { + if (inDevEnv) { + const body = document.body; + const banner = document.createElement('div'); + banner.innerText = 'DEVELOPMENT BUILD'; + banner.style.position = 'fixed'; + banner.style.top = '0'; + banner.style.left = '0'; + // banner.style.width = '100%'; + banner.style.backgroundColor = 'red'; + banner.style.color = 'white'; + banner.style.textAlign = 'center'; + banner.style.fontSize = '24px'; + banner.style.fontWeight = 'bold'; + banner.style.zIndex = '1000'; + body.appendChild(banner); + } +} + function tempPasswordHandler() { // Grab the form values const username = document.getElementById('tempPwUsername').value; @@ -511,6 +531,7 @@ document.getElementById('ewasteClistBtn').addEventListener('click', () => { // ############################################################# try { setVersionNumber(); + setDevBanner(); } catch (error) { console.error(`An error occurred during initialization: ${error.message}`); } \ No newline at end of file -- 2.45.2 From 560d9f9cb6011537180a04df76dde1dc0e12f9d6 Mon Sep 17 00:00:00 2001 From: Skylar Grant Date: Thu, 19 Mar 2026 13:34:49 -0400 Subject: [PATCH 05/10] Add SOL number to ewaste clist --- src/assets/ITThermal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/ITThermal.js b/src/assets/ITThermal.js index a24e15e..3844af7 100644 --- a/src/assets/ITThermal.js +++ b/src/assets/ITThermal.js @@ -113,7 +113,7 @@ const strings = { }, ewasteClist: { title: { text: 'eWaste Checklist', fontInfo: standardBold }, - sol: { text: 'See SOL-??? for procedure details.', fontInfo: standard }, + sol: { text: 'See SOL-499 for procedure details.', fontInfo: standard }, steps: [ 'Verify all peripherals are removed from the device', 'Remove; label; and retain any storage media', -- 2.45.2 From df9672939643dbcae8578189896e99458b6dd5e5 Mon Sep 17 00:00:00 2001 From: Skylar Grant Date: Thu, 19 Mar 2026 13:52:38 -0400 Subject: [PATCH 06/10] Minor verbiate updates to ewaste CL --- src/assets/ITThermal.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/ITThermal.js b/src/assets/ITThermal.js index 3844af7..30a9e1c 100644 --- a/src/assets/ITThermal.js +++ b/src/assets/ITThermal.js @@ -115,10 +115,10 @@ const strings = { title: { text: 'eWaste Checklist', fontInfo: standardBold }, sol: { text: 'See SOL-499 for procedure details.', fontInfo: standard }, steps: [ - 'Verify all peripherals are removed from the device', + 'Remove all peripherals from the device', 'Remove; label; and retain any storage media', 'Remove any asset tags from the device', - 'Mark asset Disposed in ME/SD if applicable', + 'Change asset status to Disposed in ME/SD', 'Place device in eWaste bin', 'If bin is full, contact Region Manager to schedule pick-up' ] -- 2.45.2 From 142d2b54e1ce960291e2c2e7288462654122358c Mon Sep 17 00:00:00 2001 From: Skylar Grant Date: Thu, 19 Mar 2026 16:14:54 -0400 Subject: [PATCH 07/10] The Return of the Quick Prints! --- src/assets/ITThermal.js | 40 +++++++++++++++++++++++++++++++++++++++- src/index.html | 23 +++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/src/assets/ITThermal.js b/src/assets/ITThermal.js index 30a9e1c..dbf9fdf 100644 --- a/src/assets/ITThermal.js +++ b/src/assets/ITThermal.js @@ -227,6 +227,21 @@ function ewasteClistHandler() { displayPdf(bUrl); } +function quickPrintContactHandler() { + /** @type Array */ + const lineArray = new Array(); + lineArray.push(new LineItem('', standard, false)); + const bUrl = generateFile(lineArray, true, true); + displayPdf(bUrl); +} + +function quickPrintPasswordReqHandler() { + /** @type Array */ + const lineArray = prepPasswordReqs(); + const bUrl = generateFile(lineArray, true, true); + displayPdf(bUrl); +} + /** * * @param {String} password @@ -361,6 +376,16 @@ function prepEwasteClist(hostname) { return lineArray; } +function prepPasswordReqs() { + const s = strings.tempPassword; + const lineArray = []; + + for (const reqLine of s.pwRequirements) { + lineArray.push(new LineItem(reqLine.text, reqLine.fontInfo, false)); + } + return lineArray; +}; + /** * * @param {Array} lineArray @@ -524,7 +549,20 @@ document.getElementById('ewasteClistBtn').addEventListener('click', () => { alert(`An error occurred while generating the PDF: ${error.message}`); } }); - +document.getElementById('quickPrintContactBtn').addEventListener('click', () => { + try { + quickPrintContactHandler(); + } catch (error) { + alert(`An error occurred while generating the PDF: ${error.message}`); + } +}); +document.getElementById('quickPrintPasswordReqBtn').addEventListener('click', () => { + try { + quickPrintPasswordReqHandler(); + } catch (error) { + alert(`An error occurred while generating the PDF: ${error.message}`); + } +}); // ############################################################# // Function Calls diff --git a/src/index.html b/src/index.html index 480b674..000abc1 100644 --- a/src/index.html +++ b/src/index.html @@ -82,6 +82,29 @@ + + +
+ +

Quick Prints

+ +
+ + + + +
+
-- 2.45.2 From 74480a1cc4284610f76509aaf9658c890ba5e11a Mon Sep 17 00:00:00 2001 From: Skylar Grant Date: Thu, 19 Mar 2026 16:50:59 -0400 Subject: [PATCH 08/10] Add Password requirement quick print and fix versioning --- src/assets/ITThermal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/ITThermal.js b/src/assets/ITThermal.js index dbf9fdf..5a68344 100644 --- a/src/assets/ITThermal.js +++ b/src/assets/ITThermal.js @@ -1,7 +1,7 @@ /* ITS Thermal Receipt Printer * Developed by Skylar Grant for MCCS ITS */ -const version = "1.2.10"; +const version = "1.3.0"; const inDevEnv = true; // Set to true for development environment, false for production // ############################################################# // Variables -- 2.45.2 From 4beefa01af4f7e870fe758741eb7b94395fabd9a Mon Sep 17 00:00:00 2001 From: Skylar Grant Date: Thu, 26 Mar 2026 09:11:53 -0400 Subject: [PATCH 09/10] Add disclaimer to checklists --- src/index.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/index.html b/src/index.html index 000abc1..8d2c593 100644 --- a/src/index.html +++ b/src/index.html @@ -181,6 +181,8 @@

Asset Management

+ +

These checklists are still under development and are only here as a proof of concept and for feedback/evaluation. Please do not use these checklists yet.

-- 2.45.2 From 7297d71d4291687088c6628fbc1e6b5ec5be17ba Mon Sep 17 00:00:00 2001 From: Skylar Grant Date: Fri, 27 Mar 2026 14:18:47 -0400 Subject: [PATCH 10/10] v1.3.0 ready --- src/assets/ITThermal.js | 2 +- src/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/ITThermal.js b/src/assets/ITThermal.js index 5a68344..9b72837 100644 --- a/src/assets/ITThermal.js +++ b/src/assets/ITThermal.js @@ -2,7 +2,7 @@ * Developed by Skylar Grant for MCCS ITS */ const version = "1.3.0"; -const inDevEnv = true; // Set to true for development environment, false for production +const inDevEnv = false; // Set to true for development environment, false for production // ############################################################# // Variables // ############################################################# diff --git a/src/index.html b/src/index.html index 8d2c593..b359b72 100644 --- a/src/index.html +++ b/src/index.html @@ -182,7 +182,7 @@

Asset Management

-

These checklists are still under development and are only here as a proof of concept and for feedback/evaluation. Please do not use these checklists yet.

+

Please provide feedback on these checklists to Skylar Grant.

-- 2.45.2