improve redfish collection progress and robust hardware dedup/serial parsing
This commit is contained in:
@@ -334,9 +334,11 @@ function renderCollectionJob() {
|
||||
const jobIdValue = document.getElementById('job-id-value');
|
||||
const statusValue = document.getElementById('job-status-value');
|
||||
const progressValue = document.getElementById('job-progress-value');
|
||||
const etaValue = document.getElementById('job-eta-value');
|
||||
const progressBar = document.getElementById('job-progress-bar');
|
||||
const logsList = document.getElementById('job-logs-list');
|
||||
const cancelButton = document.getElementById('cancel-job-btn');
|
||||
if (!jobStatusBlock || !jobIdValue || !statusValue || !progressValue || !logsList || !cancelButton) {
|
||||
if (!jobStatusBlock || !jobIdValue || !statusValue || !progressValue || !etaValue || !progressBar || !logsList || !cancelButton) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -356,12 +358,16 @@ function renderCollectionJob() {
|
||||
failed: 'Сбор завершился ошибкой',
|
||||
canceled: 'Сбор отменен'
|
||||
}[collectionJob.status];
|
||||
const progressLabel = isTerminal
|
||||
? terminalMessage
|
||||
: latestCollectionActivityMessage();
|
||||
progressValue.textContent = `${collectionJob.progress}% · ${progressLabel}`;
|
||||
const activity = isTerminal ? terminalMessage : latestCollectionActivityMessage();
|
||||
const eta = isTerminal ? '-' : latestCollectionETA();
|
||||
const progressPercent = Math.max(0, Math.min(100, Number(collectionJob.progress) || 0));
|
||||
|
||||
logsList.innerHTML = collectionJob.logs.map((log) => (
|
||||
progressValue.textContent = activity;
|
||||
etaValue.textContent = eta;
|
||||
progressBar.style.width = `${progressPercent}%`;
|
||||
progressBar.textContent = `${progressPercent}%`;
|
||||
|
||||
logsList.innerHTML = [...collectionJob.logs].reverse().map((log) => (
|
||||
`<li><span class="log-time">${escapeHtml(log.time)}</span><span class="log-message">${escapeHtml(log.message)}</span></li>`
|
||||
)).join('');
|
||||
|
||||
@@ -379,7 +385,27 @@ function latestCollectionActivityMessage() {
|
||||
}
|
||||
// Job logs already contain server timestamp prefix. Show concise step text in progress label.
|
||||
const cleaned = last.replace(/^\d{4}-\d{2}-\d{2}T[^\s]+\s+/, '').trim();
|
||||
return cleaned || 'Сбор данных...';
|
||||
if (!cleaned) {
|
||||
return 'Сбор данных...';
|
||||
}
|
||||
return cleaned.replace(/\s*[,(]?\s*ETA[^,;)]*/i, '').trim() || 'Сбор данных...';
|
||||
}
|
||||
|
||||
function latestCollectionETA() {
|
||||
if (!collectionJob || !Array.isArray(collectionJob.logs) || collectionJob.logs.length === 0) {
|
||||
return '-';
|
||||
}
|
||||
const last = String(collectionJob.logs[collectionJob.logs.length - 1].message || '').trim();
|
||||
const cleaned = last.replace(/^\d{4}-\d{2}-\d{2}T[^\s]+\s+/, '').trim();
|
||||
if (!cleaned) {
|
||||
return '-';
|
||||
}
|
||||
const match = cleaned.match(/ETA[^,;)]*/i);
|
||||
if (!match) {
|
||||
return '-';
|
||||
}
|
||||
const eta = match[0].replace(/^ETA\s*[:=~≈-]?\s*/i, '').trim();
|
||||
return eta || '-';
|
||||
}
|
||||
|
||||
function isCollectionJobTerminal(status) {
|
||||
|
||||
Reference in New Issue
Block a user