Auto-commit local changes before build (2026-01-09 09:55:24) #76
@ -1 +1 @@
|
||||
v20260109-01-veeam-m365-overall-message
|
||||
v20260109-02-object-list-sorting
|
||||
|
||||
@ -235,6 +235,33 @@
|
||||
if (el) el.textContent = value || '';
|
||||
}
|
||||
|
||||
function objectSeverityRank(o) {
|
||||
var st = String((o && o.status) || '').trim().toLowerCase();
|
||||
var err = String((o && o.error_message) || '').trim();
|
||||
if (st === 'error' || st === 'failed' || st === 'failure' || err) return 0;
|
||||
if (st === 'warning') return 1;
|
||||
return 2;
|
||||
}
|
||||
|
||||
function sortObjects(objects) {
|
||||
return (objects || []).slice().sort(function (a, b) {
|
||||
var ra = objectSeverityRank(a);
|
||||
var rb = objectSeverityRank(b);
|
||||
if (ra !== rb) return ra - rb;
|
||||
|
||||
var na = String((a && a.name) || '').toLowerCase();
|
||||
var nb = String((b && b.name) || '').toLowerCase();
|
||||
if (na < nb) return -1;
|
||||
if (na > nb) return 1;
|
||||
|
||||
var ta = String((a && a.type) || '').toLowerCase();
|
||||
var tb = String((b && b.type) || '').toLowerCase();
|
||||
if (ta < tb) return -1;
|
||||
if (ta > tb) return 1;
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
|
||||
function renderObjects(objects) {
|
||||
var container = document.getElementById('msg_objects_container');
|
||||
if (!container) return;
|
||||
@ -248,8 +275,10 @@
|
||||
var tableHtml = '<div class="table-responsive"><table class="table table-sm table-hover align-middle">' +
|
||||
'<thead class="table-light"><tr><th>Name</th><th>Type</th><th>Status</th><th>Error</th></tr></thead><tbody>';
|
||||
|
||||
for (var i = 0; i < objects.length; i++) {
|
||||
var o = objects[i] || {};
|
||||
var sorted = sortObjects(objects);
|
||||
|
||||
for (var i = 0; i < sorted.length; i++) {
|
||||
var o = sorted[i] || {};
|
||||
tableHtml += '<tr>' +
|
||||
'<td>' + (o.name || '') + '</td>' +
|
||||
'<td>' + (o.type || '') + '</td>' +
|
||||
|
||||
@ -293,6 +293,33 @@
|
||||
return "";
|
||||
}
|
||||
|
||||
function objectSeverityRank(o) {
|
||||
var st = String((o && o.status) || '').trim().toLowerCase();
|
||||
var err = String((o && o.error_message) || '').trim();
|
||||
if (st === 'error' || st === 'failed' || st === 'failure' || err) return 0;
|
||||
if (st === 'warning') return 1;
|
||||
return 2;
|
||||
}
|
||||
|
||||
function sortObjects(objects) {
|
||||
return (objects || []).slice().sort(function (a, b) {
|
||||
var ra = objectSeverityRank(a);
|
||||
var rb = objectSeverityRank(b);
|
||||
if (ra !== rb) return ra - rb;
|
||||
|
||||
var na = String((a && a.name) || '').toLowerCase();
|
||||
var nb = String((b && b.name) || '').toLowerCase();
|
||||
if (na < nb) return -1;
|
||||
if (na > nb) return 1;
|
||||
|
||||
var ta = String((a && a.type) || '').toLowerCase();
|
||||
var tb = String((b && b.type) || '').toLowerCase();
|
||||
if (ta < tb) return -1;
|
||||
if (ta > tb) return 1;
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
function wrapMailHtml(html) {
|
||||
@ -606,7 +633,7 @@ if (tStatus) tStatus.textContent = '';
|
||||
|
||||
var tbody = document.querySelector("#dj_objects_table tbody");
|
||||
tbody.innerHTML = "";
|
||||
(run.objects || []).forEach(function (obj) {
|
||||
sortObjects(run.objects || []).forEach(function (obj) {
|
||||
var tr = document.createElement("tr");
|
||||
|
||||
var tdName = document.createElement("td");
|
||||
|
||||
@ -369,10 +369,39 @@ function findCustomerIdByName(name) {
|
||||
return;
|
||||
}
|
||||
|
||||
function objectSeverityRank(o) {
|
||||
var st = String((o && o.status) || "").trim().toLowerCase();
|
||||
var err = String((o && o.error_message) || "").trim();
|
||||
if (st === "error" || st === "failed" || st === "failure" || err) return 0;
|
||||
if (st === "warning") return 1;
|
||||
return 2;
|
||||
}
|
||||
|
||||
function sortObjects(list) {
|
||||
return (list || []).slice().sort(function (a, b) {
|
||||
var ra = objectSeverityRank(a);
|
||||
var rb = objectSeverityRank(b);
|
||||
if (ra !== rb) return ra - rb;
|
||||
|
||||
var na = String((a && a.name) || "").toLowerCase();
|
||||
var nb = String((b && b.name) || "").toLowerCase();
|
||||
if (na < nb) return -1;
|
||||
if (na > nb) return 1;
|
||||
|
||||
var ta = String((a && a.type) || "").toLowerCase();
|
||||
var tb = String((b && b.type) || "").toLowerCase();
|
||||
if (ta < tb) return -1;
|
||||
if (ta > tb) return 1;
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
|
||||
var sorted = sortObjects(objects);
|
||||
|
||||
var html = "<div class=\"table-responsive\"><table class=\"table table-sm table-bordered mb-0\">";
|
||||
html += "<thead><tr><th>Object</th><th>Type</th><th>Status</th><th>Error</th></tr></thead><tbody>";
|
||||
for (var i = 0; i < objects.length; i++) {
|
||||
var o = objects[i] || {};
|
||||
for (var i = 0; i < sorted.length; i++) {
|
||||
var o = sorted[i] || {};
|
||||
html += "<tr>";
|
||||
html += "<td>" + (o.name || "") + "</td>";
|
||||
html += "<td>" + (o.type || "") + "</td>";
|
||||
|
||||
@ -497,18 +497,29 @@
|
||||
return;
|
||||
}
|
||||
|
||||
// Sort: objects with an error_message first (alphabetically by name), then the rest (also by name).
|
||||
var sorted = (objects || []).slice().sort(function (a, b) {
|
||||
a = a || {};
|
||||
b = b || {};
|
||||
var aHasErr = !!(a.error_message && a.error_message.toString().trim());
|
||||
var bHasErr = !!(b.error_message && b.error_message.toString().trim());
|
||||
if (aHasErr !== bHasErr) return aHasErr ? -1 : 1;
|
||||
function objectSeverityRank(o) {
|
||||
var st = String((o && o.status) || "").trim().toLowerCase();
|
||||
var err = String((o && o.error_message) || "").trim();
|
||||
if (st === "error" || st === "failed" || st === "failure" || err) return 0;
|
||||
if (st === "warning") return 1;
|
||||
return 2;
|
||||
}
|
||||
|
||||
var an = (a.name || "").toString().toLowerCase();
|
||||
var bn = (b.name || "").toString().toLowerCase();
|
||||
// Sort: errors first, then warnings, then the rest; within each group sort alphabetically.
|
||||
var sorted = (objects || []).slice().sort(function (a, b) {
|
||||
var ra = objectSeverityRank(a);
|
||||
var rb = objectSeverityRank(b);
|
||||
if (ra !== rb) return ra - rb;
|
||||
|
||||
var an = String((a && a.name) || "").toLowerCase();
|
||||
var bn = String((b && b.name) || "").toLowerCase();
|
||||
if (an < bn) return -1;
|
||||
if (an > bn) return 1;
|
||||
|
||||
var at = String((a && a.type) || "").toLowerCase();
|
||||
var bt = String((b && b.type) || "").toLowerCase();
|
||||
if (at < bt) return -1;
|
||||
if (at > bt) return 1;
|
||||
return 0;
|
||||
});
|
||||
|
||||
|
||||
@ -324,6 +324,33 @@ function statusClass(status) {
|
||||
return "";
|
||||
}
|
||||
|
||||
function objectSeverityRank(o) {
|
||||
var st = String((o && o.status) || '').trim().toLowerCase();
|
||||
var err = String((o && o.error_message) || '').trim();
|
||||
if (st === 'error' || st === 'failed' || st === 'failure' || err) return 0;
|
||||
if (st === 'warning') return 1;
|
||||
return 2;
|
||||
}
|
||||
|
||||
function sortObjects(objects) {
|
||||
return (objects || []).slice().sort(function (a, b) {
|
||||
var ra = objectSeverityRank(a);
|
||||
var rb = objectSeverityRank(b);
|
||||
if (ra !== rb) return ra - rb;
|
||||
|
||||
var na = String((a && a.name) || '').toLowerCase();
|
||||
var nb = String((b && b.name) || '').toLowerCase();
|
||||
if (na < nb) return -1;
|
||||
if (na > nb) return 1;
|
||||
|
||||
var ta = String((a && a.type) || '').toLowerCase();
|
||||
var tb = String((b && b.type) || '').toLowerCase();
|
||||
if (ta < tb) return -1;
|
||||
if (ta > tb) return 1;
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
|
||||
function wrapMailHtml(html) {
|
||||
html = html || "";
|
||||
return (
|
||||
@ -940,7 +967,7 @@ if (tStatus) tStatus.textContent = '';
|
||||
var tbody = document.querySelector('#rcm_objects_table tbody');
|
||||
if (tbody) {
|
||||
tbody.innerHTML = '';
|
||||
(run.objects || []).forEach(function (obj) {
|
||||
sortObjects(run.objects || []).forEach(function (obj) {
|
||||
var tr = document.createElement('tr');
|
||||
|
||||
var tdName = document.createElement('td');
|
||||
|
||||
@ -4,6 +4,17 @@
|
||||
- Improved extraction of the overall details message from the mail content, ensuring permission and role warnings are correctly captured.
|
||||
- Ensured the extracted overall message is consistently available in job details, run checks, and reporting views.
|
||||
|
||||
---
|
||||
|
||||
## v20260109-02-object-list-sorting
|
||||
|
||||
- Updated object list sorting logic to improve readability and prioritization.
|
||||
- Objects are now grouped by severity in the following order:
|
||||
1. Errors
|
||||
2. Warnings
|
||||
3. All other statuses
|
||||
- Within each severity group, objects are sorted alphabetically (A–Z).
|
||||
- Applied consistent sorting across all relevant views, including Inbox, Job Details, Run Checks, Daily Jobs, and Admin All Mail.
|
||||
|
||||
================================================================================================================================================
|
||||
## v0.1.19
|
||||
|
||||
Loading…
Reference in New Issue
Block a user