MediaWiki:Changelog.js: Difference between revisions
Appearance
No edit summary |
No edit summary |
||
| (24 intermediate revisions by the same user not shown) | |||
| Line 39: | Line 39: | ||
function addData(tableObject, category) { | function addData(tableObject, category) { | ||
var url = "https://imp.inlogic.dk/api/changelog"; | var url = "https://imp.inlogic.dk/api/changelog"; | ||
if (category) | if (category) | ||
url = url + "/" + category; | url = url + "/" + category; | ||
| Line 54: | Line 46: | ||
url: url, success: function (data) { | url: url, success: function (data) { | ||
if (!$.trim(data)) { | if (!$.trim(data)) { | ||
var emptyHtml = '<tr><td colspan="5">Ingen log fundet for den valgte kategori...</td></tr>'; | |||
tableObject.append(emptyHtml); | |||
} else { | } else { | ||
// Group items by buildVersion | |||
var grouped = {}; | |||
$.each(data, function (i, item) { | $.each(data, function (i, item) { | ||
var version = item.buildVersion || 'Ukendt version'; | |||
if (!grouped[version]) grouped[version] = []; | |||
grouped[version].push(item); | |||
}); | |||
// Sort versions descending (assuming semantic versioning or numeric) | |||
var versions = Object.keys(grouped).sort(function(a, b) { | |||
if (!isNaN(a) && !isNaN(b)) return b - a; | |||
return b.localeCompare(a, undefined, {numeric: true, sensitivity: 'base'}); | |||
}); | |||
if (item | var html = ''; | ||
$.each(versions, function (vi, version) { | |||
// Build h4 header and table in memory | |||
html += '<h4 style="margin-top:1.5em;">Version: ' + version + '</h4>'; | |||
html += '<table style="width:100%;table-layout:fixed;word-wrap:break-word;" class="version-table wikitable">'; | |||
html += '<thead><tr>'; | |||
var tableHeaders = ["Module", "Type", "Log", "Version", "Occurred errors"]; | |||
$.each(tableHeaders, function (i, item) { | |||
var thStyle = ''; | |||
if (item === 'Module' || item === 'Type' || item === 'Version') { | |||
thStyle = 'width:15%'; | |||
} else if (item === 'Log') { | |||
thStyle = 'width:30%'; | |||
} else { | |||
thStyle = 'width:25%'; | |||
} | |||
html += '<th align="left" style="' + thStyle + '">' + item + '</th>'; | |||
}); | |||
html += '</tr></thead><tbody>'; | |||
$.each(grouped[version], function (i, item) { | |||
var logtype = "Add"; | |||
if (item.logType == 1) { | |||
logtype = "Fix"; | |||
} | |||
if (item.logType == 2) { | |||
logtype = "Change"; | |||
} | |||
html += '<tr>'; | |||
html += '<td>' + item.licenseModules.moduleName + '</td>'; | |||
html += '<td>' + logtype + '</td>'; | |||
html += '<td>' + item.logText + '</td>'; | |||
html += '<td>' + item.buildVersion + '</td>'; | |||
html += '<td>' + (item.errorMessage || '') + '</td>'; | |||
html += '</tr>'; | |||
}); | |||
html += '</tbody></table>'; | |||
}); | }); | ||
tableObject.parent().append(html); | |||
tableObject.remove(); | |||
} | } | ||
} | } | ||
| Line 79: | Line 108: | ||
} | } | ||
// Function to fetch and display only the latest version for a category | |||
function addLatestVersionData(tableObject, category) { | |||
var url = "https://imp.inlogic.dk/api/changelog"; | |||
if (category) | |||
url = url + "/" + category; | |||
$.ajax({ | |||
url: url, success: function (data) { | |||
if (!$.trim(data)) { | |||
var emptyHtml = '<tr><td colspan="5">Ingen log fundet for den valgte kategori...</td></tr>'; | |||
tableObject.append(emptyHtml); | |||
} else { | |||
// Group items by buildVersion | |||
var grouped = {}; | |||
$.each(data, function (i, item) { | |||
var version = item.buildVersion || 'Ukendt version'; | |||
if (!grouped[version]) grouped[version] = []; | |||
grouped[version].push(item); | |||
}); | |||
// Find the latest version (sort descending) | |||
var versions = Object.keys(grouped).sort(function(a, b) { | |||
if (!isNaN(a) && !isNaN(b)) return b - a; | |||
return b.localeCompare(a, undefined, {numeric: true, sensitivity: 'base'}); | |||
}); | |||
var latestVersion = versions[0]; | |||
if (!latestVersion) return; | |||
var html = ''; | |||
html += '<h4 style="margin-top:1.5em;">Version: ' + latestVersion + '</h4>'; | |||
html += '<table style="width:100%;table-layout:fixed;word-wrap:break-word;" class="version-table wikitable">'; | |||
html += '<thead><tr>'; | |||
var tableHeaders = ["Module", "Type", "Log", "Version", "Occurred errors"]; | |||
$.each(tableHeaders, function (i, item) { | |||
var thStyle = ''; | |||
if (item === 'Module' || item === 'Type' || item === 'Version') { | |||
thStyle = 'width:15%'; | |||
} else if (item === 'Log') { | |||
thStyle = 'width:30%'; | |||
} else { | |||
thStyle = 'width:25%'; | |||
} | |||
html += '<th align="left" style="' + thStyle + '">' + item + '</th>'; | |||
}); | |||
html += '</tr></thead><tbody>'; | |||
$.each(grouped[latestVersion], function (i, item) { | |||
var logtype = "Add"; | |||
if (item.logType == 1) { | |||
logtype = "Fix"; | |||
} | |||
if (item.logType == 2) { | |||
logtype = "Change"; | |||
} | |||
html += '<tr>'; | |||
html += '<td>' + item.licenseModules.moduleName + '</td>'; | |||
html += '<td>' + logtype + '</td>'; | |||
html += '<td>' + item.logText + '</td>'; | |||
html += '<td>' + item.buildVersion + '</td>'; | |||
html += '<td>' + (item.errorMessage || '') + '</td>'; | |||
html += '</tr>'; | |||
}); | |||
html += '</tbody></table>'; | |||
tableObject.parent().append(html); | |||
tableObject.remove(); | |||
} | |||
} | |||
}); | |||
} | |||
createTable("guardianTable", $("#guardian")); | // For all versions (existing) | ||
if ($('#backend').length) { | |||
createTable("backendTable", $("#backend")); | |||
addData($("#backendTable"), 1); | |||
} | |||
if ($('#frontend').length) { | |||
createTable("frontendTable", $("#frontend")); | |||
addData($("#frontendTable"), 2); | |||
} | |||
if ($('#app').length) { | |||
createTable("appTable", $("#app")); | |||
addData($("#appTable"), 3); | |||
} | |||
if ($('#absence').length) { | |||
createTable("absenceTable", $("#absence")); | |||
addData($("#absenceTable"), 4); | |||
} | |||
if ($('#professional').length) { | |||
createTable("professionalTable", $("#professional")); | |||
addData($("#professionalTable"), 5); | |||
} | |||
if ($('#guardian').length) { | |||
createTable("guardianTable", $("#guardian")); | |||
addData($("#guardianTable"), 6); | |||
} | |||
if ($('#smsgatewayserver').length) { | |||
createTable("smsgatewayTable", $("#smsgatewayserver")); | |||
addData($("#smsgatewayTable"), 8); | |||
} | |||
createTable(" | // For latest version only (new) | ||
if ($('#backend-latest').length) { | |||
createTable("backendLatestTable", $("#backend-latest")); | |||
addLatestVersionData($("#backendLatestTable"), 1); | |||
} | |||
if ($('#frontend-latest').length) { | |||
createTable("frontendLatestTable", $("#frontend-latest")); | |||
addLatestVersionData($("#frontendLatestTable"), 2); | |||
} | |||
if ($('#app-latest').length) { | |||
createTable("appLatestTable", $("#app-latest")); | |||
addLatestVersionData($("#appLatestTable"), 3); | |||
} | |||
if ($('#absence-latest').length) { | |||
createTable("absenceLatestTable", $("#absence-latest")); | |||
addLatestVersionData($("#absenceLatestTable"), 4); | |||
} | |||
if ($('#professional-latest').length) { | |||
createTable("professionalLatestTable", $("#professional-latest")); | |||
addLatestVersionData($("#professionalLatestTable"), 5); | |||
} | |||
if ($('#guardian-latest').length) { | |||
createTable("guardianLatestTable", $("#guardian-latest")); | |||
addLatestVersionData($("#guardianLatestTable"), 6); | |||
} | |||
if ($('#smsgatewayserver-latest').length) { | |||
createTable("smsgatewayLatestTable", $("#smsgatewayserver-latest")); | |||
addLatestVersionData($("#smsgatewayLatestTable"), 8); | |||
} | |||
})(jQuery); | })(jQuery); | ||
Latest revision as of 11:44, 11 August 2025
(function ($) {
"use strict";
function createTable(id, hookObject) {
var tableStart = "<div><table id=\"" + id + "\" style=\"word-wrap: break-word;\" class=\"wikitable\">";
var tableEnd = "</table></div>";
var tableHeaders = ["Module", "Type", "Log", "Version", "Occurred errors"];
var tableHead = createTableHeader(tableHeaders);
hookObject.html(tableStart + tableHead + tableEnd);
}
function createTableHeader(headers) {
var tableHeadStart = "<thead>";
var tableHeadEnd = "</thead>";
var tableHeadRowStart = "<tr>";
var tableHeadRowEnd = "</tr>";
var tableHeadCellStart = "<th align=\"left\" style=\"\">";
var tableHeadCellEnd = "</th>";
var output = tableHeadStart + tableHeadRowStart;
jQuery.each(headers, function (i, item) {
if (item === 'Module' || item === 'Type' || item === 'Version') {
tableHeadCellStart = "<th align=\"left\" style=\"width:15%;\">";
} else if (item === 'Log') {
tableHeadCellStart = "<th align=\"left\" style=\"width:30%;\">";
} else {
tableHeadCellStart = "<th align=\"left\" style=\"width:25%;\">";
}
output = output + tableHeadCellStart + item + tableHeadCellEnd;
});
output = output + tableHeadRowEnd + tableHeadEnd;
return output;
}
function addData(tableObject, category) {
var url = "https://imp.inlogic.dk/api/changelog";
if (category)
url = url + "/" + category;
$.ajax({
url: url, success: function (data) {
if (!$.trim(data)) {
var emptyHtml = '<tr><td colspan="5">Ingen log fundet for den valgte kategori...</td></tr>';
tableObject.append(emptyHtml);
} else {
// Group items by buildVersion
var grouped = {};
$.each(data, function (i, item) {
var version = item.buildVersion || 'Ukendt version';
if (!grouped[version]) grouped[version] = [];
grouped[version].push(item);
});
// Sort versions descending (assuming semantic versioning or numeric)
var versions = Object.keys(grouped).sort(function(a, b) {
if (!isNaN(a) && !isNaN(b)) return b - a;
return b.localeCompare(a, undefined, {numeric: true, sensitivity: 'base'});
});
var html = '';
$.each(versions, function (vi, version) {
// Build h4 header and table in memory
html += '<h4 style="margin-top:1.5em;">Version: ' + version + '</h4>';
html += '<table style="width:100%;table-layout:fixed;word-wrap:break-word;" class="version-table wikitable">';
html += '<thead><tr>';
var tableHeaders = ["Module", "Type", "Log", "Version", "Occurred errors"];
$.each(tableHeaders, function (i, item) {
var thStyle = '';
if (item === 'Module' || item === 'Type' || item === 'Version') {
thStyle = 'width:15%';
} else if (item === 'Log') {
thStyle = 'width:30%';
} else {
thStyle = 'width:25%';
}
html += '<th align="left" style="' + thStyle + '">' + item + '</th>';
});
html += '</tr></thead><tbody>';
$.each(grouped[version], function (i, item) {
var logtype = "Add";
if (item.logType == 1) {
logtype = "Fix";
}
if (item.logType == 2) {
logtype = "Change";
}
html += '<tr>';
html += '<td>' + item.licenseModules.moduleName + '</td>';
html += '<td>' + logtype + '</td>';
html += '<td>' + item.logText + '</td>';
html += '<td>' + item.buildVersion + '</td>';
html += '<td>' + (item.errorMessage || '') + '</td>';
html += '</tr>';
});
html += '</tbody></table>';
});
tableObject.parent().append(html);
tableObject.remove();
}
}
});
}
// Function to fetch and display only the latest version for a category
function addLatestVersionData(tableObject, category) {
var url = "https://imp.inlogic.dk/api/changelog";
if (category)
url = url + "/" + category;
$.ajax({
url: url, success: function (data) {
if (!$.trim(data)) {
var emptyHtml = '<tr><td colspan="5">Ingen log fundet for den valgte kategori...</td></tr>';
tableObject.append(emptyHtml);
} else {
// Group items by buildVersion
var grouped = {};
$.each(data, function (i, item) {
var version = item.buildVersion || 'Ukendt version';
if (!grouped[version]) grouped[version] = [];
grouped[version].push(item);
});
// Find the latest version (sort descending)
var versions = Object.keys(grouped).sort(function(a, b) {
if (!isNaN(a) && !isNaN(b)) return b - a;
return b.localeCompare(a, undefined, {numeric: true, sensitivity: 'base'});
});
var latestVersion = versions[0];
if (!latestVersion) return;
var html = '';
html += '<h4 style="margin-top:1.5em;">Version: ' + latestVersion + '</h4>';
html += '<table style="width:100%;table-layout:fixed;word-wrap:break-word;" class="version-table wikitable">';
html += '<thead><tr>';
var tableHeaders = ["Module", "Type", "Log", "Version", "Occurred errors"];
$.each(tableHeaders, function (i, item) {
var thStyle = '';
if (item === 'Module' || item === 'Type' || item === 'Version') {
thStyle = 'width:15%';
} else if (item === 'Log') {
thStyle = 'width:30%';
} else {
thStyle = 'width:25%';
}
html += '<th align="left" style="' + thStyle + '">' + item + '</th>';
});
html += '</tr></thead><tbody>';
$.each(grouped[latestVersion], function (i, item) {
var logtype = "Add";
if (item.logType == 1) {
logtype = "Fix";
}
if (item.logType == 2) {
logtype = "Change";
}
html += '<tr>';
html += '<td>' + item.licenseModules.moduleName + '</td>';
html += '<td>' + logtype + '</td>';
html += '<td>' + item.logText + '</td>';
html += '<td>' + item.buildVersion + '</td>';
html += '<td>' + (item.errorMessage || '') + '</td>';
html += '</tr>';
});
html += '</tbody></table>';
tableObject.parent().append(html);
tableObject.remove();
}
}
});
}
// For all versions (existing)
if ($('#backend').length) {
createTable("backendTable", $("#backend"));
addData($("#backendTable"), 1);
}
if ($('#frontend').length) {
createTable("frontendTable", $("#frontend"));
addData($("#frontendTable"), 2);
}
if ($('#app').length) {
createTable("appTable", $("#app"));
addData($("#appTable"), 3);
}
if ($('#absence').length) {
createTable("absenceTable", $("#absence"));
addData($("#absenceTable"), 4);
}
if ($('#professional').length) {
createTable("professionalTable", $("#professional"));
addData($("#professionalTable"), 5);
}
if ($('#guardian').length) {
createTable("guardianTable", $("#guardian"));
addData($("#guardianTable"), 6);
}
if ($('#smsgatewayserver').length) {
createTable("smsgatewayTable", $("#smsgatewayserver"));
addData($("#smsgatewayTable"), 8);
}
// For latest version only (new)
if ($('#backend-latest').length) {
createTable("backendLatestTable", $("#backend-latest"));
addLatestVersionData($("#backendLatestTable"), 1);
}
if ($('#frontend-latest').length) {
createTable("frontendLatestTable", $("#frontend-latest"));
addLatestVersionData($("#frontendLatestTable"), 2);
}
if ($('#app-latest').length) {
createTable("appLatestTable", $("#app-latest"));
addLatestVersionData($("#appLatestTable"), 3);
}
if ($('#absence-latest').length) {
createTable("absenceLatestTable", $("#absence-latest"));
addLatestVersionData($("#absenceLatestTable"), 4);
}
if ($('#professional-latest').length) {
createTable("professionalLatestTable", $("#professional-latest"));
addLatestVersionData($("#professionalLatestTable"), 5);
}
if ($('#guardian-latest').length) {
createTable("guardianLatestTable", $("#guardian-latest"));
addLatestVersionData($("#guardianLatestTable"), 6);
}
if ($('#smsgatewayserver-latest').length) {
createTable("smsgatewayLatestTable", $("#smsgatewayserver-latest"));
addLatestVersionData($("#smsgatewayLatestTable"), 8);
}
})(jQuery);