MediaWiki:Common.js

De WIKI Netnews
Ir para navegação Ir para pesquisar

Nota: Após publicar, você pode ter que limpar o "cache" do seu navegador para ver as alterações.

  • Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
  • Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
  • Edge: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5.
  • Opera: Pressione Ctrl-F5.
$(function () {

function formatUptime(seconds) {
    if (!seconds) return '-';

    var days = Math.floor(seconds / 86400);
    var hours = Math.floor((seconds % 86400) / 3600);
    var minutes = Math.floor((seconds % 3600) / 60);

    return days + "d " + hours + "h " + minutes + "m";
}

function atualizarStatus(host, elementId) {

    $.getJSON('/noc/status.php?host=' + host)
    .done(function(data){

        var el = $('#' + elementId);
        if (!el.length) return;

        if (data.status === "online") {

            el.html(
                '<span class="status-dot status-green"></span> Operacional<br>' +
                '<small>Uptime: ' + formatUptime(data.uptime) + '</small><br>' +
                '<small>Último check: ' + data.lastcheck + '</small>'
            );

            el.removeClass("blink");

        } else if (data.status === "offline") {

            el.html(
                '<span class="status-dot status-red"></span> Offline<br>' +
                '<small>Último check: ' + (data.lastcheck || '-') + '</small>'
            );

            el.addClass("blink");

        } else {

            el.html('<span class="status-dot status-yellow"></span> Indefinido');

        }

    })
    .fail(function(){
        $('#' + elementId).html("🟡 Erro");
    });

}

function atualizarTodos() {
    atualizarStatus("web01", "web01-status");
    atualizarStatus("web02", "web02-status");
    atualizarStatus("web03", "web03-status");
    atualizarStatus("web04", "web04-status");
    atualizarStatus("ns1-cloud", "ns1-status");
    atualizarStatus("ns2-cloud", "ns2-status");
}

atualizarTodos();
setInterval(atualizarTodos, 30000);

});

function criarNovoCliente() {
    var nome = prompt("Digite o nome do cliente:");

    if (!nome) return;

    nome = nome.trim().replace(/\s+/g, "_");

    var url = mw.util.getUrl("Cliente/" + nome, {
        action: "edit",
        preload: "Cliente:MODELO"
    });

    window.location.href = url;
}

document.addEventListener("DOMContentLoaded", function () {

    var btn = document.getElementById("btnCriarCliente");

    if (!btn) return;

    btn.addEventListener("click", function () {

        var nome = prompt("Digite o nome do cliente:");

        if (!nome) return;

        nome = nome.trim().replace(/\s+/g, "_");

        var base = mw.config.get("wgScriptPath") + "/index.php/";

        var url = base + "Cliente/" + nome + "?action=edit&preload=Cliente:MODELO";

        window.location.href = url;

    });

});

document.addEventListener("DOMContentLoaded", function () {

    function atualizarStatusServidor(nome) {

        fetch('/noc/status.php?host=' + nome.toLowerCase())
            .then(response => response.json())
            .then(data => {

                var el = document.getElementById('status-' + nome);

                if (!el) return;

                if (data.status === "online") {
                    el.innerHTML = "🟢 Operacional<br><small>Uptime: " 
                        + formatUptime(data.uptime) 
                        + "</small><br><small>Último check: " 
                        + data.lastcheck + "</small>";
                } else if (data.status === "offline") {
                    el.innerHTML = "🔴 Offline<br><small>Último check: " 
                        + data.lastcheck + "</small>";
                } else {
                    el.innerHTML = "🟡 Indefinido";
                }

            });
    }

    function formatUptime(seconds) {
        if (!seconds) return '-';

        const days = Math.floor(seconds / 86400);
        const hours = Math.floor((seconds % 86400) / 3600);
        const minutes = Math.floor((seconds % 3600) / 60);

        return `${days}d ${hours}h ${minutes}m`;
    }

    // Detecta automaticamente nome do servidor pela URL
    var pageName = mw.config.get("wgTitle");

    if (pageName.startsWith("WEB") || pageName.startsWith("NS")) {
        atualizarStatusServidor(pageName);
    }

});