var table; /* * EVENTS AND DATEPICKERS * */ function updateForm() { var databasemode = $('input[name="database_mode"]:checked', '#form').val(); var accessmode = $('input[name="access_mode"]:checked', '#form').val(); $('#selectedscript').val($('#query_script').val()); $('#selecteduser').val($('#query_user').val()); $('#selectedinstance').val($('#query_instance').val()); $('#selectedhost').val($('#query_host').val()); $('#selecteddatestart').val($('#startDateValue').text()); $('#selecteddateend').val($('#endDateValue').text()); $('#selectedaccessid').val($('#query_accessid').val()); $('#selecteddatabasemode').val(databasemode); $('#selectedaccessmode').val(accessmode); } $("#startQuery").click(function() { $("#startQuery").prop("disabled", true); $("#startDownload").prop("disabled", true); $('#query_results').text('Loading...'); updateForm(); getQueryResults(); return false; }); $("#startDownload").click(function() { $("#startQuery").prop("disabled", true); $("#startDownload").prop("disabled", true); $('#query_results').text('Loading...'); updateForm(); downloadResults(); return false; }); $("input[name=search_mode]:radio").change(function () { var searchMode = $('input[name=search_mode]:checked', '#form').val(); if (searchMode === "accessId") { $('#modeAccess').show(); $('#modeFields').hide(); } else { $('#modeAccess').hide(); $('#modeFields').show(); } }); $("#query_startdate").datetimepicker({ format : 'Y-m-d H:i', closeOnDateSelect : true, onChangeDateTime : function(ct, $input) { $('#startDateValue').text(ct.getTime()); var endTime = parseFloat($('#endDateValue').text()); if (ct.getTime() >= endTime) { // Add 12 hours var endDate = new Date(ct.getTime() + (12 * 60 * 60 *1000)); writeStartEndDatesFull(ct, endDate); } } }); $("#query_enddate").datetimepicker({ format : 'Y-m-d H:i', closeOnDateSelect : true, onChangeDateTime : function(ct, $input) { $('#endDateValue').text(ct.getTime()); var startTime = parseFloat($('#startDateValue').text()); if (ct.getTime() <= startTime) { // add 12 hours var endDate = new Date(ct.getTime() + (12 * 60 * 60 *1000)); writeStartEndDatesFull(ct, endDate); } } }); // On double clicking on a table row, download access object $("#query_results_table").on("dblclick", "tr", function() { var tableRow = table.row(this).data(); downloadAccessObject(tableRow.aid); }); /* * FUNCTIONS * */ function initPage() { fillExistingData(); $('#query_results_div').hide("fast"); var seldate = $('#selecteddate').val(); if (seldate === "") { seldate = new Date().yyyymmdd(); } setStartEndDates(seldate); } function fillExistingData() { if ($('#selectedscript').val() !== "") { $('#query_script').val($('#selectedscript').val()); } if ($('#selecteduser').val() !== "") { $('#query_user').val($('#selecteduser').val()); } if ($('#selectedinstance').val() !== "") { $('#query_instance').val($('#selectedinstance').val()); } if ($('#selectedhost').val() !== "") { $('#query_host').val($('#selectedhost').val()); } if ($('#selecteddatestart').val() !== "") { var startDateL = parseFloat($('#selecteddatestart').val()); var endDateL = parseFloat($('#selecteddateend').val()); var startDate = new Date(startDateL); var endDate = new Date(endDateL); writeStartEndDatesFull(startDate, endDate); } } function downloadAccessObject(accessId) { var tenant = $("#tenants :selected").text(); var databasemode = $('input[name="database_mode"]:checked', '#form').val(); var accessmode = $('input[name="access_mode"]:checked', '#form').val(); var searchMode = $('input[name=search_mode]:checked', '#form').val(); var apiurl = "/monitorapi?cmd=download&tenant=" + encodeURIComponent(tenant); apiurl += "&id=" + accessId; apiurl += "&databasemode=" + databasemode; if (searchMode === "accessId") { apiurl += "&accessmode=" + accessmode; } window.open(apiurl, '_blank'); } function reloadPage() { fillExistingData(); if ($.fn.dataTable.isDataTable('#query_results_table')) { table = $('#query_results_table').DataTable(); table.clear(); table.destroy(); } var data = localStorage.getItem("querytabledata"); var jsonData = $.parseJSON(data); fillQueryTable(jsonData); $('#query_results_div').show("fast"); $('#query_results').text(''); } function downloadResults() { var tenant = $("#tenants :selected").text(); var apiurl = "/monitorapi?cmd=download&tenant=" + encodeURIComponent(tenant); $('#queryform').get(0).setAttribute('action', apiurl); $("#queryform").submit(); $("#startQuery").prop("disabled", false); $("#startDownload").prop("disabled", false); $('#query_results').text(''); } function getQueryResults() { if ($.fn.dataTable.isDataTable('#query_results_table')) { table = $('#query_results_table').DataTable(); table.clear(); table.destroy(); $('#query_results_div').hide("fast"); } var tenant = $("#tenants :selected").text(); var apiurl = "/monitorapi?cmd=query"; var payload = {}; var databasemode = $('input[name="database_mode"]:checked', '#form').val(); var accessmode = $('input[name="access_mode"]:checked', '#form').val(); var searchmode = $('input[name="search_mode"]:checked', '#form').val(); if (searchmode == "accessId") { payload = { tenant : tenant, accessId : $('#query_accessid').val(), databasemode : databasemode, accessmode : accessmode }; } else { // Default is both exceptions and non-exceptions payload = { tenant : tenant, databasemode : databasemode, script : $('#query_script').val(), user : $('#query_user').val(), host : $('#query_host').val(), start : $('#startDateValue').text(), end : $('#endDateValue').text() }; } $.ajax({ type : "POST", url : apiurl, dataType : "json", async : true, data : payload, success : function(data) { $("#startQuery").prop("disabled", false); $("#startDownload").prop("disabled", false); try { localStorage.setItem("querytabledata", JSON.stringify(data)); } catch(err) { console.log(err); } replaceState(); if (data.length < 1) { $('#query_results').text('No results found...'); } else { // convert 'created' to date fillQueryTable(data); $('#query_results_div').show("fast"); $('#query_results').text(''); if (data.length == 10000) { $('#query_results').html('Showing a max of 10000 results!'); } setTimeout(function(){ console.log('he'); $('#query_results_table').DataTable().draw(); }, 1100); } }, error : function(data) { $("#startQuery").prop("disabled", false); $('#query_results').text('Error on executing query!'); }, }); } function fillQueryTable(data) { $.each(data, function(k, v) { v.created = moment(v.created).format('YYYY-MM-DD HH:mm:ss.SSS'); }); table = $('#query_results_table').DataTable({ data : data, columns : [ { title : 'created', data : 'ts', }, { title : 'access id', data : 'aid' }, { title : 'script', data : 's', }, { title : 'user', data : 'u' }, { title : 'time', data : 'tt' }, { title : 'status code', data : 'sc' }, { title : 'host', data : 'h' }, { title : 'exception', data : 'e' }], lengthMenu: [ [25, 50, 100, -1], [25, 50, 100, "All"] ], pageLength : getCookie("results_table_length") != "" ? getCookie("results_table_length") : 50 }); var cookieLength = getCookie("results_table_length"); if (cookieLength !== "") { table.page.len(cookieLength); } $('#query_results_table_length label select').change(function() { setCookie("results_table_length", table.page.len(), 31); }); } function setStartEndDates(seldate) { var startDate = moment(seldate + 'T00:00:00'+timezoneOffsetString, "YYYY-MM-DDTHH:mm:ssZ").toDate(); var endDate = moment(seldate + 'T00:00:00'+timezoneOffsetString, "YYYY-MM-DDTHH:mm:ssZ").toDate(); endDate.setDate(startDate.getDate() + 1); writeStartEndDatesFull(startDate, endDate); } function writeStartEndDatesFull(startDate, endDate) { $('#startDateValue').text(startDate.getTime()); $('#endDateValue').text(endDate.getTime()); $("#query_startdate").val(startDate.yyyymmdd() + ' ' + addZero(startDate.getHours()) + ':' + addZero(startDate.getMinutes())); $("#query_enddate").val( endDate.yyyymmdd() + ' ' + addZero(endDate.getHours()) + ':' + addZero(endDate.getMinutes())); } function addZero(i) { if (i < 10) { i = "0" + i; } return i; }