From b8c8590e0b965844a584b9a36874abd6a63f59b4 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Fri, 3 Apr 2020 07:43:38 +0200 Subject: [PATCH] Finished module templates --- .../include/class/ModuleTemplates.class.php | 88 ++++++++++++------- 1 file changed, 54 insertions(+), 34 deletions(-) diff --git a/pandora_console/include/class/ModuleTemplates.class.php b/pandora_console/include/class/ModuleTemplates.class.php index bab72b7836..05fdaadd09 100644 --- a/pandora_console/include/class/ModuleTemplates.class.php +++ b/pandora_console/include/class/ModuleTemplates.class.php @@ -534,40 +534,38 @@ class ModuleTemplates extends HTML } foreach ($result as $row) { - $groups_compound[$row['id_sg']] = ''; if ($row['parent'] > 1) { - $groups_compound[$row['id_sg']] = $groups[$row['parent']].' / '; + $groups_compound[$row['id_sg']] = $groups[$row['parent']].' / '.$row['name']; + } else { + $groups_compound[$row['id_sg']] = $row['name']; } } - // Get the components for show in a list for select. - if ($this->ncGroup > 0) { - $sql = sprintf( - " - SELECT id_nc, name, id_group - FROM tnetwork_component - WHERE id_group = %d AND name LIKE '%".$this->ncFilter."%' - ORDER BY name", - $this->ncGroup - ); - } else { - $sql = " - SELECT id_nc, name, id_group - FROM tnetwork_component - WHERE name LIKE '%".$this->ncFilter."%' - ORDER BY name"; - } + $result = db_get_all_rows_sql( + 'SELECT id_nc, name, id_group + FROM tnetwork_component + ORDER BY name' + ); - $result = db_get_all_rows_sql($sql); + $entireComponentsList = []; $components = []; if ($result === false) { $result = []; } foreach ($result as $row) { + $strIdGroup = (string) $row['id_group']; + if (!isset($entireComponentsList[$strIdGroup])) { + $entireComponentsList[$strIdGroup] = $row['id_nc']; + } else { + $entireComponentsList[$strIdGroup] .= ','.$row['id_nc']; + } + $components[$row['id_nc']] = $row['name']; } + $entireComponentsList = json_encode($entireComponentsList); + // Main form. $form = [ 'action' => $this->baseUrl, @@ -589,24 +587,16 @@ class ModuleTemplates extends HTML 'return' => true, ], ]; - /* - $inputs[] = [ - 'id' => 'add-modules-components-values', - 'arguments' => [ - 'name' => 'add-modules-components-values', - 'type' => 'hidden', - 'value' => '', - 'return' => true, - ], - ]; - */ + $inputs[] = [ 'label' => __('Filter'), 'id' => 'txt-add-modules-filter', 'arguments' => [ 'input_class' => 'flex-row', + 'name' => 'filter', 'type' => 'text', - 'size' => '57', + 'size' => '45', + 'class' => 'float-right', 'onKeyDown' => 'filterTextComponents(event);', 'value' => '', 'return' => true, @@ -619,20 +609,31 @@ class ModuleTemplates extends HTML 'arguments' => [ 'input_class' => 'flex-row', 'type' => 'select', - 'script' => '', + 'script' => 'filterGroupComponents(event);', + 'class' => 'float-right', 'fields' => $groups_compound, 'nothing' => $groups_compound[$this->ncGroup], 'return' => true, ], ]; + $inputs[] = [ + 'id' => 'group-components', + 'arguments' => [ + 'name' => 'group-components', + 'type' => 'hidden', + 'value' => $entireComponentsList, + 'return' => true, + ], + ]; + $inputs[] = [ 'label' => __('Components'), 'id' => 'slc-add-modules-components', 'arguments' => [ 'name' => 'add-modules-components', 'input_class' => 'flex-row', - 'style' => 'width:100%;', + 'style' => 'width:100%;margin-top: 1em;', 'type' => 'select', 'multiple' => true, 'fields' => $components, @@ -1103,6 +1104,25 @@ class ModuleTemplates extends HTML }); } + /** + * Filter with group the components form + */ + function filterGroupComponents(e){ + var selectedGroup = e.target.value; + var entireList = JSON.parse($('#hidden-group-components').val()); + var componentsToShow = entireList[selectedGroup]; + $('#add-modules-components').children().each(function(){ + var id = $(this).val(); + if (typeof componentsToShow === 'undefined' && selectedGroup != '0') { + $(this).css('display','none'); + } else if (selectedGroup == '0' || componentsToShow.includes(id)) { + $(this).css('display','block'); + } else { + $(this).css('display','none'); + } + }); + } + /** * Show the modal with list of entire components */