Переглянути джерело

added log filter to log page
added buildFilterDropdown function
added log-filter-dropdown css class
added updateUrlParameter function
added toggleLogFilter function

CauseFX 4 роки тому
батько
коміт
4011ae0f9e

+ 14 - 0
api/functions/log-functions.php

@@ -386,4 +386,18 @@ trait LogFunctions
 		}
 		return false;
 	}
+	
+	function buildFilterDropdown()
+	{
+		$dropdownItems = '<li><a href="javascript:toggleLogFilter(\'DEBUG\')"><span lang="en">Debug</span></a></li>';
+		$dropdownItems .= '<li><a href="javascript:toggleLogFilter(\'INFO\')"><span lang="en">Info</span></a></li>';
+		$dropdownItems .= '<li><a href="javascript:toggleLogFilter(\'NOTICE\')"><span lang="en">Notice</span></a></li>';
+		$dropdownItems .= '<li><a href="javascript:toggleLogFilter(\'WARNING\')"><span lang="en">Warning</span></a></li>';
+		$dropdownItems .= '<li><a href="javascript:toggleLogFilter(\'ERROR\')"><span lang="en">Error</span></a></li>';
+		$dropdownItems .= '<li><a href="javascript:toggleLogFilter(\'CRITICAL\')"><span lang="en">Critical</span></a></li>';
+		$dropdownItems .= '<li><a href="javascript:toggleLogFilter(\'ALERT\')"><span lang="en">Alert</span></a></li>';
+		$dropdownItems .= '<li><a href="javascript:toggleLogFilter(\'EMERGENCY\')"><span lang="en">Emergency</span></a></li>';
+		$dropdownItems .= '<li class="divider"></li><li><a href="javascript:toggleLogFilter(\'NONE\')"><span lang="en">None</span></a></li>';
+		return '<button aria-expanded="false" data-toggle="dropdown" class="btn btn-inverse dropdown-toggle waves-effect waves-light pull-right m-r-5 hidden-xs" type="button"> <span class="log-filter-text m-r-5" lang="en">NONE</span><i class="fa fa-filter m-r-5"></i></button><ul role="menu" class="dropdown-menu log-filter-dropdown pull-right">' . $dropdownItems . '</ul>';
+	}
 }

+ 2 - 0
api/pages/settings-settings-logs.php

@@ -12,11 +12,13 @@ function get_page_settings_settings_logs($Organizr)
 		return false;
 	}
 	$logsDropdown = $Organizr->buildLogDropdown();
+	$filterDropdown = $Organizr->buildFilterDropdown();
 	return '
 	<div class="btn-group m-b-20 pull-left">' . $logsDropdown . '</div>
 	<button class="btn btn-danger waves-effect waves-light pull-right purgeLog" type="button" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="Purge Log"><i class="fa fa-trash"></i></span></button>
 	<button onclick="organizrLogTable.clear().draw().ajax.reload(null, false)" class="btn btn-info waves-effect waves-light pull-right reloadLog m-r-5" type="button" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="Reload Log"><i class="fa fa-refresh"></i></span></button>
 	<button onclick="toggleKillOrganizrLiveUpdate(' . $Organizr->config['logLiveUpdateRefresh'] . ');" class="btn btn-primary waves-effect waves-light pull-right organizr-log-live-update m-r-5" type="button" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="Live Update"><i class="fa fa-clock-o"></i></span></button>
+	' . $filterDropdown . '
 	<div class="clearfix"></div>
 	<div class="white-box bg-org logTable orgLogDiv">
 		<h3 class="box-title m-b-0" lang="en">Organizr Logs</h3>

+ 4 - 0
css/organizr.css

@@ -651,6 +651,10 @@ table.dataTable thead tr th:last-child {
 table.dataTable thead tr th:first-child {
     border-radius: 10px 0 0 0;
 }
+.open>.dropdown-menu.pull-right.log-filter-dropdown {
+    top: 160px;
+    right: 75px;
+}
 .el-element-overlay .el-card-item .el-overlay-1 img.imageSourceLeft {
     width: 56%;
     display: block;

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
css/organizr.min.css


+ 37 - 0
js/functions.js

@@ -11302,6 +11302,43 @@ function toggleTopBarHamburger(){
 	$('.sidebar-head .open-close i').first().toggleClass('ti-menu ti-shift-left mouse');
 	$('.toggle-side-menu').toggleClass('hidden');
 }
+function toggleLogFilter(filter = 'INFO'){
+	//choose-organizr-log
+	filter = filter.toUpperCase();
+	$.each($('.choose-organizr-log').children(), function(i,v) {
+		let url = $(v).val();
+		let newURL = updateUrlParameter(url,'filter',filter)
+		$(v).val(newURL);
+	});
+	$('.log-filter-text').text(filter);
+	$('.log-filter-text').text(filter);
+	let currentURL = organizrLogTable.ajax.url();
+	let updatedURL = updateUrlParameter(currentURL,'filter',filter);
+	organizrLogTable.ajax.url(updatedURL);
+	organizrLogTable.clear().draw().ajax.reload(null, false);
+}
+function updateUrlParameter(uri, key, value) {
+	// remove the hash part before operating on the uri
+	var i = uri.indexOf('#');
+	var hash = i === -1 ? ''  : uri.substr(i);
+	uri = i === -1 ? uri : uri.substr(0, i);
+	var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
+	var separator = uri.indexOf('?') !== -1 ? "&" : "?";
+	if (value === null) {
+		// remove key-value pair if value is specifically null
+		uri = uri.replace(new RegExp("([?&]?)" + key + "=[^&]*", "i"), '');
+		if (uri.slice(-1) === '?') {
+			uri = uri.slice(0, -1);
+		}
+		// replace first occurrence of & by ? if no ? is present
+		if (uri.indexOf('?') === -1) uri = uri.replace(/&/, '?');
+	} else if (uri.match(re)) {
+		uri = uri.replace(re, '$1' + key + "=" + value + '$2');
+	} else {
+		uri = uri + separator + key + "=" + value;
+	}
+	return uri + hash;
+}
 function launch(){
 	console.info('https://docs.organizr.app/help/faq/migration-guide#version-2-0-greater-than-version-2-1');
 	organizrConsole('API V2 API','If you see a 404 Error for api/v2/launch below this line, you have not setup the new location block... See URL above this line', 'error');

Деякі файли не було показано, через те що забагато файлів було змінено