Add branding, license, and firmware table improvements

- Add mchus.pro branding to header and footer
- Add author info and git repository link
- Add proprietary license (Mike Chus)
- Firmware table: replace count column with separate component/model columns
- Add branding to TXT export reports

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-25 09:39:52 +03:00
parent 83378fa761
commit e52eb909f7
7 changed files with 208 additions and 15 deletions

View File

@@ -27,6 +27,12 @@ header p {
opacity: 0.8;
}
.header-domain {
font-size: 0.9rem;
font-weight: 400;
opacity: 0.7;
}
main {
max-width: 1400px;
margin: 2rem auto;
@@ -248,6 +254,10 @@ code {
background: #9b59b6;
}
.category-badge.firmware {
background: #34495e;
}
/* Toolbar label */
.toolbar-label {
font-size: 0.875rem;
@@ -365,6 +375,21 @@ footer {
padding: 2rem;
}
.footer-info {
margin-top: 1rem;
font-size: 0.8rem;
color: #666;
}
.footer-info a {
color: #3498db;
text-decoration: none;
}
.footer-info a:hover {
text-decoration: underline;
}
#clear-btn {
background: #e74c3c;
color: white;

View File

@@ -155,6 +155,7 @@ function renderConfig(data) {
<button class="config-tab" data-config-tab="gpu">GPU</button>
<button class="config-tab" data-config-tab="network">Network</button>
<button class="config-tab" data-config-tab="pcie">Device Inventory</button>
<button class="config-tab" data-config-tab="fw">Firmware</button>
</div>`;
// Specification tab
@@ -340,6 +341,9 @@ function renderConfig(data) {
}
html += '</div>';
// Firmware tab (content will be populated after firmware loads)
html += '<div class="config-tab-content" id="config-fw"><div id="config-fw-content"><p class="no-data">Загрузка...</p></div></div>';
container.innerHTML = html;
// Initialize config sub-tabs
@@ -368,24 +372,47 @@ async function loadFirmware() {
}
}
let allFirmware = [];
function renderFirmware(firmware) {
allFirmware = firmware || [];
// Render in Firmware tab
const tbody = document.querySelector('#firmware-table tbody');
tbody.innerHTML = '';
if (!firmware || firmware.length === 0) {
tbody.innerHTML = '<tr><td colspan="3" class="no-data">Нет данных о прошивках</td></tr>';
return;
} else {
firmware.forEach(fw => {
const row = document.createElement('tr');
row.innerHTML = `
<td>${escapeHtml(fw.component)}</td>
<td>${escapeHtml(fw.model)}</td>
<td><code>${escapeHtml(fw.version)}</code></td>
`;
tbody.appendChild(row);
});
}
firmware.forEach(fw => {
const row = document.createElement('tr');
row.innerHTML = `
<td>${escapeHtml(fw.device_name)}</td>
<td><code>${escapeHtml(fw.version)}</code></td>
<td>${escapeHtml(fw.build_date || '-')}</td>
`;
tbody.appendChild(row);
});
// Render in Config -> Firmware tab
const configFwContent = document.getElementById('config-fw-content');
if (configFwContent) {
if (!firmware || firmware.length === 0) {
configFwContent.innerHTML = '<p class="no-data">Нет данных о прошивках</p>';
} else {
let html = '<h3>Прошивки компонентов</h3><table class="config-table"><thead><tr><th>Компонент</th><th>Модель</th><th>Версия</th></tr></thead><tbody>';
firmware.forEach(fw => {
html += `<tr>
<td>${escapeHtml(fw.component)}</td>
<td>${escapeHtml(fw.model)}</td>
<td><code>${escapeHtml(fw.version)}</code></td>
</tr>`;
});
html += '</tbody></table>';
configFwContent.innerHTML = html;
}
}
}
async function loadSensors() {
@@ -491,6 +518,7 @@ function renderSerials(serials) {
'PCIe': 'PCIe',
'Network': 'Сеть',
'PSU': 'БП',
'Firmware': 'Прошивка',
'FRU': 'FRU'
};