Skip to content
Snippets Groups Projects
Select Git revision
  • 1e2dd2e16e09d63c3cc77c8cf73d56eca064018f
  • master default protected
  • Legacy_Php7
3 results

project.class.php

Blame
  • functions.js 5.58 KiB
    
    var sSELECTEDSERVER = '';
    var sACTIVESERVERTAB = 'cronlogs';
    var bSETADDRESSBAR = false;
    
    var bDEBUG=0;
    
    /**
     * show log on console ... if bDEBUG is true
     * @param {string} sMessage
     * @returns {undefined}
     */
    function clog(sMessage){
        if(bDEBUG){
            console.log("--- DEBUG: "+sMessage);
        }
    }
    /**
     * get query parameters from url as object
     * @returns {object}
     */
    function getQueryParams() {
        var qs = document.location.search.split('+').join(' ');
        var params = {},
                tokens,
                re = /[?&]?([^=]+)=([^&]*)/g;
        while (tokens = re.exec(qs)) {
            params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
        }
        return params;
    }
    
    /**
     * make an ajax-request and put response content into given div id
     * @param {string} id         id of the div to be filled
     * @param {type}   sMoreData  more data for get param
     * @returns {undefined}
     */
    function getPageItem(id, sMoreData, bNoAdressbarUpdate) {
        clog("getPageItem('"+id+"', '"+sMoreData+"')");
        // $('#'+id).html('reading ...');
        if (!$('#' + id).hasClass('active')) {
            $('#errorlog').html('#' + id + ' is not active');
            return false;
        }
        var phpscript = 'get.php';
        $('#' + id).css('opacity', '0.2');
    
        sData = 'item=' + id + '&server=' + sSELECTEDSERVER + (sMoreData ? '&'+sMoreData : '');
        if(!bNoAdressbarUpdate){
            setAdressbar();
        }
        jQuery.ajax({
            url: phpscript,
            data: sData,
            type: "GET",
            success: function (data) {
                $('#' + id).css('opacity', '1');
                $('#' + id).html(data);
            },
            error: function () {
                $('#' + id).css('opacity', false);
                $('#' + id).html('Failed :-/');
                $('#errorlog').html(
                        $('#errorlog').html('AJAX error: <a href="' + phpscript + '?' + sData + '">' + phpscript + '?' + sData + '</a>')
                        );
            }
        });
    }
    
    /**
     * refresh content with ajax requests
     * @returns {undefined}
     */
    function refreshPage() {
        getPageItem('selectserver');
        getPageItem(sACTIVESERVERTAB);
    }
    
    /**
     * manipulate url in the browser address bar
     * 
     * @returns {undefined}
     */
    function setAdressbar() {
        // ?server=neon&tab=graph&q=backup
        if (!bSETADDRESSBAR) {
            return false;
        }
        var url = '?'
                + 'server=' + sSELECTEDSERVER
                + '&tab=' + sACTIVESERVERTAB
                + '&q=' // + $('#datatable1_filter label input').val()+$('#datatable2_filter label input').val()
                ;
        window.history.pushState('dummy', 'Title', url);
        // window.location.reload();
    }
    /**
     * set server and show show its current content item (log, graph, ...)
     * this action is used after clicking a servername in the navigation
     * 
     * @param {string} sServer
     * @returns {undefined}
     */
    function setServer(sServer) {
        clog("setServer('"+sServer+"')");
        if (!sServer) {
            return false;
        }
        sSELECTEDSERVER = sServer;
        
        // write name
        $('#lblServername').html('<i class="far fa-hdd"></i> ' + sSELECTEDSERVER);
    
        // load current content item
        getPageItem(sACTIVESERVERTAB);
    }
    
    /**
     * onclick callback for tabs crontable, crontabs, graph
     * @param {object} oLink    clicked link
     * @param {string} sTabid   id of active div
     * @returns {undefined}
     */
    function setTab(oLink,sTabid) {
        var sTabid = $(oLink).attr('href').replace(/^#/, '');
    
        $('nav.tabs a').each(function () {
            $(this).removeClass('active');
        });
        $(oLink).addClass('active');
        setTabId(sTabid);
        setServer(sSELECTEDSERVER);
    }
    
    /**
     * activate a div to get content via AJAX
     * 
     * @param {string} sTabid
     * @returns {undefined}
     */
    function setTabId(sTabid){
        clog("setTabId('"+sTabid+"')");
        sACTIVESERVERTAB = sTabid;
        $('#tabcontent div').each(function () {
            $(this).removeClass('active');
            // $(this).html('Moment...');
        });
        $('#' + sTabid).addClass('active');
    
        // setServer(sSELECTEDSERVER);
    }
    
    function showFile(sLogfile) {
        clog("showFile('"+sLogfile+"')");
        $('#overlay').show();
        sLOGFILE=sLogfile;
        getPageItem('showlog', 'logfile=' + sLOGFILE, true);
    }
    function closeOverlay() {
        $('#overlay').fadeOut(300);
    }
    
    function updateFilterFields(q) {
        if ($('#datatable1_filter label input')) {
            $('#datatable1_filter label input').val(q);
            $('#datatable1').dataTable().fnFilter(q);
            // $('#datatable1').dataTable().bind('filter', 'setAdressbar()');
        }
        if ($('#datatable2_filter label input')) {
            $('#datatable2_filter label input').val(q);
            $('#datatable2').dataTable().fnFilter(q);
            // $('#datatable1').dataTable().bind('filter', 'setAdressbar()');
        }
    }
    
    
    // ----------------------------------------------------------------------
    // MAIN
    // ----------------------------------------------------------------------
    
    $(document).ready(function () {
    
        var oQuery = getQueryParams();
        var sServer = oQuery.server ? oQuery.server : 'ALL';
        var q = oQuery.q ? oQuery.q : '';
        var sTab = oQuery.tab ? oQuery.tab : '';
    
        setServer(sServer);
        getPageItem('selectserver');
    
        if (sTab) {
            var oLink = $('a[href="#' + sTab + '"]').first();
            setTab(oLink);
        }
        if (q) {
            window.setTimeout("updateFilterFields('" + q + "');", 500);
        }
        bSETADDRESSBAR = true;
        window.setInterval('refreshPage()', 60000);
    });
    
    /*
    window.onpopstate = function(event) 
    {
        history.back();
        refreshPage();
    };
    */