Jump to content

MediaWiki:Changelog.js: Difference between revisions

From UmsWiki
Created page with "(function ($) { "use strict"; $(document).ajaxStart(function () { $.fn.loading(); }).ajaxStop(function () { $.fn.hideloading(); }); $.fn.loading = function () { var over = '<div id="overlay">' + '<img id="loading" src="/cls/assests/loading.gif">' + '</div>'; $(over).appendTo('body'); }; $.fn.hideloading = function () { $('#overlay').remove(); }; function createTable(id,..."
 
No edit summary
 
(27 intermediate revisions by the same user not shown)
Line 1: Line 1:
(function ($) {
(function ($) {
     "use strict";
     "use strict";
    $(document).ajaxStart(function () {
        $.fn.loading();
    }).ajaxStop(function () {
        $.fn.hideloading();
    });
    $.fn.loading = function () {
        var over = '<div id="overlay">' +
            '<img id="loading" src="/cls/assests/loading.gif">' +
            '</div>';
        $(over).appendTo('body');
    };
    $.fn.hideloading = function () {
        $('#overlay').remove();
    };


     function createTable(id, hookObject) {
     function createTable(id, hookObject) {
         var tableStart = "<div class=\"table-1\"><table id=\"" + id + "\" style=\"word-wrap: break-word;table-layout: fixed;width:100%\">";
         var tableStart = "<div><table id=\"" + id + "\" style=\"word-wrap: break-word;\" class=\"wikitable\">";
         var tableEnd = "</table></div>";
         var tableEnd = "</table></div>";
         var tableHeaders = ["Module", "Type", "Log", "Version", "Occurred errors"];
         var tableHeaders = ["Module", "Type", "Log", "Version", "Occurred errors"];
Line 55: Line 39:


     function addData(tableObject, category) {
     function addData(tableObject, category) {
        var rowStart = '<tr>';
        var rowEnd = '</tr>';
        var cellStart = '<td>';
        var cellStartWithColspan = '<td colspan="5">';
        var cellEnd = '</td>';
        var breakElement = '<br />';
         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 70: Line 46:
             url: url, success: function (data) {
             url: url, success: function (data) {
                 if (!$.trim(data)) {
                 if (!$.trim(data)) {
                     tableObject.append(rowStart + cellStartWithColspan + "Ingen log fundet for den valgte kategori..." + cellEnd + rowEnd);
                     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 logtype = "Add"
                        var version = item.buildVersion || 'Ukendt version';
if (item.logType == 1)
                        if (!grouped[version]) grouped[version] = [];
{
                        grouped[version].push(item);
logtype = "Fix"
                    });
}
if (item.logType == 2)
{
logtype = "Change"
}


                         if (item.ErrorMessage != '') {
                    // Sort versions descending (assuming semantic versioning or numeric)
                            tableObject.append(rowStart + cellStart + item.licenseModules.moduleName + cellEnd + cellStart + logtype + cellEnd + cellStart + item.logText + cellEnd + cellStart + item.buildVersion + cellEnd + cellStart + item.errorMessage + cellEnd + rowEnd);
                    var versions = Object.keys(grouped).sort(function(a, b) {
                         }
                         if (!isNaN(a) && !isNaN(b)) return b - a;
                         else {
                        return b.localeCompare(a, undefined, {numeric: true, sensitivity: 'base'});
                             tableObject.append(rowStart + cellStart + item.licenseModules.moduleName + cellEnd + cellStart + logtype + cellEnd + cellStart + item.logText + cellEnd + cellStart + item.buildVersion + cellEnd + cellStart + cellEnd + rowEnd);
                    });
                         }
 
                    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 95: Line 108:
     }
     }


     createTable("backendTable", $("#backend"));
        // Function to fetch and display only the latest version for a category
    addData($("#backendTable"), 1);
     function addLatestVersionData(tableObject, category) {
        var url = "https://imp.inlogic.dk/api/changelog";
        if (category)
            url = url + "/" + category;


    createTable("frontendTable", $("#frontend"));
        $.ajax({
    addData($("#frontendTable"), 2);
            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);
                    });


    createTable("appTable", $("#app"));
                    // Find the latest version (sort descending)
    addData($("#appTable"), 3);
                    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;


    createTable("absenceTable", $("#absence"));
                    var html = '';
    addData($("#absenceTable"), 4);
                    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>';


    createTable("professionalTable", $("#professional"));
                    $.each(grouped[latestVersion], function (i, item) {
    addData($("#professionalTable"), 5);
                        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)
    addData($("#guardianTable"), 6);
    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("smsgatewayTable", $("#smsgatewayserver"));
     // For latest version only (new)
    addData($("#smsgatewayTable"), 8);
    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);