From d3dbbe48421cc7eab0c6b35bfe3260c7b2649906 Mon Sep 17 00:00:00 2001 From: Benedikt Seeger <benedikt.seeger@ptb.de> Date: Tue, 18 Mar 2025 17:47:27 +0100 Subject: [PATCH] added colored UUID --- package.json | 2 +- src/renderers/AdminRenderer.js | 61 ++++++++++++++++++++++++++++------ 2 files changed, 52 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index b27d2da..61e981a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dccviewer-js", - "version": "0.1.3", + "version": "0.1.4", "description": "A JS application for displaying digital calibration certificates.", "main": "dist/dccviewer-js.bundle.js", "files": [ diff --git a/src/renderers/AdminRenderer.js b/src/renderers/AdminRenderer.js index 95b5263..815fab4 100644 --- a/src/renderers/AdminRenderer.js +++ b/src/renderers/AdminRenderer.js @@ -1,4 +1,28 @@ // src/renderers/AdminRenderer.js +export function renderUUID(uuid) { + let output = ''; + // Loop through each character of the uuid string. + for (let i = 0; i < uuid.length; i++) { + let ch = uuid[i]; + if (ch === '-') { + // If the character is a hyphen, add it unstyled. + output += ch; + } else { + // Convert hex digit to a number (0-15) + let value = parseInt(ch, 16); + if (isNaN(value)) { + // If not a valid hex digit, add it unstyled. + output += ch; + } else { + // Compute hue: linear interpolation from 0 (red) for 0 to ~270 (violet) for F. + let hue = (value / 15) * 270; + // Adjust saturation and lightness as needed. + output += `<span style="color: hsl(${hue}, 100%, 40%)">${ch}</span>`; + } + } + } + return output; +} export function renderAdminData(adminData, language) { const container = document.getElementById('adminData'); @@ -6,7 +30,7 @@ export function renderAdminData(adminData, language) { // Title const title = document.createElement('h2'); - title.textContent = `Administrative Data (${language})`; + title.textContent = `Administrative Data`; container.appendChild(title); // ----- CORE DATA SECTION ----- @@ -17,11 +41,19 @@ export function renderAdminData(adminData, language) { coreContainer.style.border = '1px solid #ccc'; coreContainer.style.padding = '8px'; - // Unique Identifier - const uuidDiv = document.createElement('div'); - uuidDiv.innerHTML = `<strong>Unique Identifier:</strong> ${coreData['dcc:uniqueIdentifier'] || 'N/A'}`; - uuidDiv.style.marginBottom = '10px'; - coreContainer.appendChild(uuidDiv); +// Get the UUID from coreData. + const uuid = coreData['dcc:uniqueIdentifier']; +// If a UUID exists, format it using renderUUID; otherwise use 'N/A' + const formattedUUID = uuid ? renderUUID(uuid) : 'N/A'; + + const uuidDivText = document.createElement('div'); + uuidDivText.innerHTML = `<strong>UUID:</strong> ${formattedUUID}`; +// Increase font size and boldness + uuidDivText.style.marginBottom = '10px'; + uuidDivText.style.fontSize = '24px'; + uuidDivText.style.fontWeight = 'bold'; + + coreContainer.appendChild(uuidDivText); // Identifications table if (coreData['dcc:identifications'] && coreData['dcc:identifications']['dcc:identification']) { @@ -155,15 +187,24 @@ export function renderAdminData(adminData, language) { } detailsDiv.innerHTML += `<strong>Item:</strong> ${itemName}<br>`; - // Manufacturer details +// Manufacturer details if (item['dcc:manufacturer']) { const manu = item['dcc:manufacturer']; let manuName = ''; if (manu['dcc:name'] && manu['dcc:name']['dcc:content']) { const content = manu['dcc:name']['dcc:content']; - manuName = Array.isArray(content) - ? (content.find(c => c.$ && c.$.lang === language) || content[0])._ || '' - : content._ || ''; + if (Array.isArray(content)) { + // Try to find an element matching the desired language. + let found = content.find(c => c.$ && c.$.lang === language); + // If not found, look for an element without a language attribute. + if (!found) { + found = content.find(c => !c.$ || !c.$.lang); + } + manuName = found ? (typeof found === 'string' ? found : found._ || '') : ''; + } else { + // Handle the case where content is a plain string or an object. + manuName = typeof content === 'string' ? content : content._ || ''; + } } detailsDiv.innerHTML += `<strong>Manufacturer:</strong> ${manuName}<br>`; if (manu['dcc:location']) { -- GitLab