add new filter tree view

This commit is contained in:
daniel 2017-12-21 16:37:19 +01:00
parent d7ea393c23
commit 7ea42dc5c5
2 changed files with 78 additions and 23 deletions

View File

@ -222,6 +222,12 @@ class Tree {
$agent_search_filter = " AND LOWER(ta.alias) LIKE LOWER('%".$this->filter['searchAgent']."%')"; $agent_search_filter = " AND LOWER(ta.alias) LIKE LOWER('%".$this->filter['searchAgent']."%')";
} }
//Search hirearchy
$search_hirearchy = false;
if($this->filter['searchHirearchy']){
$search_hirearchy = true;
}
// Agent status filter // Agent status filter
$agent_status_filter = ""; $agent_status_filter = "";
if (isset($this->filter['statusAgent']) if (isset($this->filter['statusAgent'])
@ -344,16 +350,49 @@ class Tree {
$group_filter = "AND ta.id_grupo IN ($user_groups_str)"; $group_filter = "AND ta.id_grupo IN ($user_groups_str)";
} }
if(!$search_hirearchy && (!empty($agent_search_filter) || !empty($module_search_filter))){
if(is_metaconsole()){
$query_agent_search = " SELECT DISTINCT(ta.id_grupo)
FROM tmetaconsole_agent ta
WHERE ta.disabled = 0
$agent_search_filter";
$id_groups_agents = db_get_all_rows_sql($query_agent_search);
}
else{
$query_agent_search = " SELECT DISTINCT(ta.id_grupo)
FROM tagente ta, tagente_modulo tam
WHERE tam.id_agente = ta.id_agente
AND ta.disabled = 0
$agent_search_filter
$module_search_filter";
$id_groups_agents = db_get_all_rows_sql($query_agent_search);
}
if($id_groups_agents != false){
foreach ($id_groups_agents as $key => $value) {
$id_groups_agents_array[] = $value['id_grupo'];
}
$user_groups_array = explode(",", $user_groups_str);
$user_groups_array = array_intersect($user_groups_array, $id_groups_agents_array);
$user_groups_str = implode("," , $user_groups_array);
}
else{
$user_groups_str = false;
}
}
switch ($type) { switch ($type) {
// Get the agents of a group // Get the agents of a group
case 'group': case 'group':
if (empty($rootID) || $rootID == -1) { if (empty($rootID) || $rootID == -1) {
if(!$search_hirearchy && (!empty($agent_search_filter) || !empty($module_search_filter))){
$columns = 'tg.id_grupo AS id, tg.nombre AS name, tg.icon';
}
else{
$columns = 'tg.id_grupo AS id, tg.nombre AS name, tg.parent, tg.icon';
}
// Strict acl specifications
/*if ($this->strictACL)
return false;*/
$columns = 'tg.id_grupo AS id, tg.nombre AS name, tg.parent, tg.icon';
$order_fields = 'tg.nombre ASC, tg.id_grupo ASC'; $order_fields = 'tg.nombre ASC, tg.id_grupo ASC';
if (! is_metaconsole()) { if (! is_metaconsole()) {
@ -1180,6 +1219,7 @@ class Tree {
!empty($group['counters']['total'])); !empty($group['counters']['total']));
}); });
} }
usort($groups, array("Tree", "cmpSortNames"));
return $groups; return $groups;
} }
@ -2646,9 +2686,10 @@ class Tree {
protected function getGroupCounters($group_id) { protected function getGroupCounters($group_id) {
global $config; global $config;
static $group_stats = false; static $group_stats = false;
# Do not use the group stat cache when using tags or real time group stats. # Do not use the group stat cache when using tags or real time group stats.
if ($config['realtimestats'] == 1 || (isset($this->userGroups[$group_id]['tags']) && $this->userGroups[$group_id]['tags'] != "")) { if ($config['realtimestats'] == 1 ||
(isset($this->userGroups[$group_id]['tags']) && $this->userGroups[$group_id]['tags'] != "") ||
!empty($this->filter['searchAgent']) ) {
return $this->getCounters($group_id); return $this->getCounters($group_id);
} }

View File

@ -16,18 +16,17 @@
global $config; global $config;
$pure = get_parameter('pure', 0); $pure = get_parameter('pure', 0);
$tab = get_parameter('tab', 'group'); $tab = get_parameter('tab', 'group');
$search_group = get_parameter('searchGroup', ''); $search_group = get_parameter('searchGroup', '');
$search_agent = get_parameter('searchAgent', ''); $search_agent = get_parameter('searchAgent', '');
$status_agent = get_parameter('statusAgent', AGENT_STATUS_ALL); $status_agent = get_parameter('statusAgent', AGENT_STATUS_ALL);
$search_module = get_parameter('searchModule', ''); $search_module = get_parameter('searchModule', '');
$status_module = get_parameter('statusModule', -1); $status_module = get_parameter('statusModule', -1);
$group_id = (int) get_parameter('group_id'); $group_id = (int) get_parameter('group_id');
$tag_id = (int) get_parameter('tag_id'); $tag_id = (int) get_parameter('tag_id');
$strict_acl = (bool) db_get_value("strict_acl", "tusuario", "id_user", $config['id_user']);
$strict_acl = (bool) db_get_value("strict_acl", "tusuario", "id_user", $config['id_user']); $serach_hirearchy = (bool) get_parameter('searchHirearchy', false);
// ---------------------Tabs ------------------------------------------- // ---------------------Tabs -------------------------------------------
$enterpriseEnable = false; $enterpriseEnable = false;
if (enterprise_include_once('include/functions_policies.php') !== ENTERPRISE_NOT_HOOK) { if (enterprise_include_once('include/functions_policies.php') !== ENTERPRISE_NOT_HOOK) {
@ -126,6 +125,12 @@ $table->data = array();
$table->rowspan = array(); $table->rowspan = array();
$table->style[0] = 'font-weight: bold;'; $table->style[0] = 'font-weight: bold;';
$table->style[2] = 'font-weight: bold;'; $table->style[2] = 'font-weight: bold;';
$table->size = array();
$table->size[0] = '10%';
$table->size[1] = '35%';
$table->size[2] = '9%';
$table->size[3] = '10%';
$table->size[4] = '10%';
// Agent filter // Agent filter
$agent_status_arr = array(); $agent_status_arr = array();
$agent_status_arr[AGENT_STATUS_ALL] = __('All'); //default $agent_status_arr[AGENT_STATUS_ALL] = __('All'); //default
@ -135,17 +140,19 @@ $agent_status_arr[AGENT_STATUS_CRITICAL] = __('Critical');
$agent_status_arr[AGENT_STATUS_UNKNOWN] = __('Unknown'); $agent_status_arr[AGENT_STATUS_UNKNOWN] = __('Unknown');
$agent_status_arr[AGENT_STATUS_NOT_INIT] = __('Not init'); $agent_status_arr[AGENT_STATUS_NOT_INIT] = __('Not init');
if ($tab == 'group' || is_metaconsole()) { $row = array();
$row = array(); $row[] = __('Search group');
$row[] = __('Search group'); $row[] = html_print_input_text("search_group", $search_group, '', is_metaconsole() ? 70 : 40, 30, true);
$row[] = html_print_input_text("search_group", $search_group, '', is_metaconsole() ? 70 : 40, 30, true);
$table->data[] = $row; $table->data[] = $row;
}
$row = array(); $row = array();
$row[] = __('Search agent'); $row[] = __('Search agent');
$row[] = html_print_input_text("search_agent", $search_agent, '', is_metaconsole() ? 70 : 40, 30, true); $row[] = html_print_input_text("search_agent", $search_agent, '', is_metaconsole() ? 70 : 40, 30, true);
$row[] = __('Show full hirearchy');
$row[] = html_print_checkbox("serach_hirearchy", $serach_hirearchy, false, true);
$row[] = __('Agent status'); $row[] = __('Agent status');
$row[] = html_print_select($agent_status_arr, "status_agent", $status_agent, '', '', 0, true); $row[] = html_print_select($agent_status_arr, "status_agent", $status_agent, '', '', 0, true);
@ -256,6 +263,13 @@ enterprise_hook('close_meta_frame');
parameters['filter']['groupID'] = $("input#hidden-group-id").val(); parameters['filter']['groupID'] = $("input#hidden-group-id").val();
parameters['filter']['tagID'] = $("input#hidden-tag-id").val(); parameters['filter']['tagID'] = $("input#hidden-tag-id").val();
if($("#checkbox-serach_hirearchy").is(':checked')){
parameters['filter']['searchHirearchy'] = 1;
}
else{
parameters['filter']['searchHirearchy'] = 0;
}
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>", url: "<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",