var sSELECTEDSERVER = ''; var sACTIVESERVERTAB = 'cronlogs'; var bSETADDRESSBAR = false; var sTABLEFILTER = ''; var iRefreshTime = 60; var iRefreshCounter = 0; var bDEBUG=0; var oAjax=false; /** * 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(); iRefreshCounter=0; } 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>') ); } }); } /** * show a timer ad a * @returns {undefined} */ function refreshTimer() { if(iRefreshCounter==0){ $('#counter').html('Refresh in <span>'+(iRefreshTime)+'</span> sec'+'<div style="width:100%;"> </div>'); } else { $('#counter span').html(iRefreshTime-iRefreshCounter); $('#counter div').css('width', (100 - (iRefreshCounter/iRefreshTime*100))+'%'); } iRefreshCounter++; if(iRefreshCounter>iRefreshTime){ refreshPage(); } } /** * refresh content with ajax requests * @returns {undefined} */ function refreshPage() { getPageItem('selectserver'); getPageItem(sACTIVESERVERTAB); window.setTimeout("updateFilterFields();", 500); iRefreshCounter=0; } /** * 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=' + sTABLEFILTER// + $('#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; sTABLEFILTER = ''; $('#tabcontent div').each(function () { $(this).removeClass('active'); // $(this).html('Moment...'); }); $('#' + sTabid).addClass('active'); // setServer(sSELECTEDSERVER); } /** * open overlay and show a file * @param {type} sLogfile * @returns {undefined} */ function showFile(sLogfile) { clog("showFile('"+sLogfile+"')"); $('#overlay').show(); sLOGFILE=sLogfile; oAjaxHelper.setVar('logfile', sLOGFILE); oAjaxHelper.execTask('showlog'); // getPageItem('showlog', 'logfile=' + sLOGFILE, true); } /** * close overlay * @param {type} sLogfile * @returns {undefined} */ function closeOverlay() { $('#overlay').fadeOut(300); } /** * update filter field for datatable with value of param q= * @returns {undefined} */ function updateFilterFields() { if ($('#datatable1_filter label input')) { $('#datatable1_filter label input').val(sTABLEFILTER); $('#datatable1').dataTable().fnFilter(sTABLEFILTER); // $('#datatable1').dataTable().bind('filter', 'setAdressbar()'); } if ($('#datatable2_filter label input')) { $('#datatable2_filter label input').val(sTABLEFILTER); $('#datatable2').dataTable().fnFilter(sTABLEFILTER); // $('#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) { sTABLEFILTER=q; window.setTimeout("updateFilterFields();", 500); } bSETADDRESSBAR = true; window.setInterval('refreshTimer()', 1000); // test section for asimax var aOptions={ 'apibase': 'get.php', 'taskparam': 'item', 'tasks':{ 'selectserverAll':{ domid: 'selectserver', apimore: '?', params: [], interval: 0 }, 'selectserver':{ domid: 'selectserver', apimore: '?', params: [ 'server' ], interval: 0 }, 'showlog':{ apimore: '?', params: [ 'logfile' ], interval: 0 } } }; oAjaxHelper=new asimax(aOptions); oAjaxHelper.setVar('server', sSELECTEDSERVER); oAjaxHelper.setVar('tab', sACTIVESERVERTAB); oAjaxHelper.execTask('selectserver'); // oAjaxHelper.execTask('selectserverAll'); }); /* window.onpopstate = function(event) { history.back(); refreshPage(); }; */