Compare commits
No commits in common. "6b4b33ff64d6e607964428c8a123ea7a78f424b0" and "957e4f97e6d5e094cde24643ccf0fa08fd5f5452" have entirely different histories.
6b4b33ff64
...
957e4f97e6
@ -1 +1 @@
|
|||||||
v20260109-02-object-list-sorting
|
v20260109-01-veeam-m365-overall-message
|
||||||
|
|||||||
@ -235,33 +235,6 @@
|
|||||||
if (el) el.textContent = value || '';
|
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) {
|
function renderObjects(objects) {
|
||||||
var container = document.getElementById('msg_objects_container');
|
var container = document.getElementById('msg_objects_container');
|
||||||
if (!container) return;
|
if (!container) return;
|
||||||
@ -275,10 +248,8 @@
|
|||||||
var tableHtml = '<div class="table-responsive"><table class="table table-sm table-hover align-middle">' +
|
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>';
|
'<thead class="table-light"><tr><th>Name</th><th>Type</th><th>Status</th><th>Error</th></tr></thead><tbody>';
|
||||||
|
|
||||||
var sorted = sortObjects(objects);
|
for (var i = 0; i < objects.length; i++) {
|
||||||
|
var o = objects[i] || {};
|
||||||
for (var i = 0; i < sorted.length; i++) {
|
|
||||||
var o = sorted[i] || {};
|
|
||||||
tableHtml += '<tr>' +
|
tableHtml += '<tr>' +
|
||||||
'<td>' + (o.name || '') + '</td>' +
|
'<td>' + (o.name || '') + '</td>' +
|
||||||
'<td>' + (o.type || '') + '</td>' +
|
'<td>' + (o.type || '') + '</td>' +
|
||||||
|
|||||||
@ -293,33 +293,6 @@
|
|||||||
return "";
|
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) {
|
function wrapMailHtml(html) {
|
||||||
@ -633,7 +606,7 @@ if (tStatus) tStatus.textContent = '';
|
|||||||
|
|
||||||
var tbody = document.querySelector("#dj_objects_table tbody");
|
var tbody = document.querySelector("#dj_objects_table tbody");
|
||||||
tbody.innerHTML = "";
|
tbody.innerHTML = "";
|
||||||
sortObjects(run.objects || []).forEach(function (obj) {
|
(run.objects || []).forEach(function (obj) {
|
||||||
var tr = document.createElement("tr");
|
var tr = document.createElement("tr");
|
||||||
|
|
||||||
var tdName = document.createElement("td");
|
var tdName = document.createElement("td");
|
||||||
|
|||||||
@ -369,39 +369,10 @@ function findCustomerIdByName(name) {
|
|||||||
return;
|
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\">";
|
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>";
|
html += "<thead><tr><th>Object</th><th>Type</th><th>Status</th><th>Error</th></tr></thead><tbody>";
|
||||||
for (var i = 0; i < sorted.length; i++) {
|
for (var i = 0; i < objects.length; i++) {
|
||||||
var o = sorted[i] || {};
|
var o = objects[i] || {};
|
||||||
html += "<tr>";
|
html += "<tr>";
|
||||||
html += "<td>" + (o.name || "") + "</td>";
|
html += "<td>" + (o.name || "") + "</td>";
|
||||||
html += "<td>" + (o.type || "") + "</td>";
|
html += "<td>" + (o.type || "") + "</td>";
|
||||||
|
|||||||
@ -497,29 +497,18 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
function objectSeverityRank(o) {
|
// Sort: objects with an error_message first (alphabetically by name), then the rest (also by name).
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sort: errors first, then warnings, then the rest; within each group sort alphabetically.
|
|
||||||
var sorted = (objects || []).slice().sort(function (a, b) {
|
var sorted = (objects || []).slice().sort(function (a, b) {
|
||||||
var ra = objectSeverityRank(a);
|
a = a || {};
|
||||||
var rb = objectSeverityRank(b);
|
b = b || {};
|
||||||
if (ra !== rb) return ra - rb;
|
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;
|
||||||
|
|
||||||
var an = String((a && a.name) || "").toLowerCase();
|
var an = (a.name || "").toString().toLowerCase();
|
||||||
var bn = String((b && b.name) || "").toLowerCase();
|
var bn = (b.name || "").toString().toLowerCase();
|
||||||
if (an < bn) return -1;
|
if (an < bn) return -1;
|
||||||
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;
|
return 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -324,33 +324,6 @@ function statusClass(status) {
|
|||||||
return "";
|
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) {
|
function wrapMailHtml(html) {
|
||||||
html = html || "";
|
html = html || "";
|
||||||
return (
|
return (
|
||||||
@ -967,7 +940,7 @@ if (tStatus) tStatus.textContent = '';
|
|||||||
var tbody = document.querySelector('#rcm_objects_table tbody');
|
var tbody = document.querySelector('#rcm_objects_table tbody');
|
||||||
if (tbody) {
|
if (tbody) {
|
||||||
tbody.innerHTML = '';
|
tbody.innerHTML = '';
|
||||||
sortObjects(run.objects || []).forEach(function (obj) {
|
(run.objects || []).forEach(function (obj) {
|
||||||
var tr = document.createElement('tr');
|
var tr = document.createElement('tr');
|
||||||
|
|
||||||
var tdName = document.createElement('td');
|
var tdName = document.createElement('td');
|
||||||
|
|||||||
@ -4,17 +4,6 @@
|
|||||||
- Improved extraction of the overall details message from the mail content, ensuring permission and role warnings are correctly captured.
|
- 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.
|
- 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
|
## v0.1.19
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user