From 2aac5ec25d8915bc1c12ba1412b8515ddd186a54 Mon Sep 17 00:00:00 2001 From: lenovo Date: Thu, 17 Nov 2022 13:00:47 +0100 Subject: [PATCH] filters intersection works even to re enable a categori selected --- .../map_prof/scripts/mp_filter_events.js | 56 ++++++++++--------- .../map_prof/srcs/map/mp_create_div.php | 6 ++ 2 files changed, 37 insertions(+), 25 deletions(-) diff --git a/srcs/plugins/map_prof/scripts/mp_filter_events.js b/srcs/plugins/map_prof/scripts/mp_filter_events.js index 17b72b3..e2a4f22 100644 --- a/srcs/plugins/map_prof/scripts/mp_filter_events.js +++ b/srcs/plugins/map_prof/scripts/mp_filter_events.js @@ -127,24 +127,21 @@ function toggle_menu_items(menu_name, x_abled) { let class_name = `filter_menu_${name}`; let items = document.getElementsByClassName(class_name); - // for (let item of items) { - // item.classList.remove('enable'); - // if (x_abled === "disable") { - // item.setAttribute('disabled', ''); - // } - // else { - // item.removeAttribute('disabled'); - // } - // } - if (x_abled === "disable") { for (let item of items) { - item.classList.remove('enable'); + // if item is a menu title (like 'categorie' or 'pays') + // don't remove 'enable', instead add it, because it's not in the list of 'to_enable' + if (item.selected) { + item.classList.add('enable'); + } + else { + item.classList.remove('enable'); + } if (item.classList.contains('to_enable')) { item.classList.replace('to_enable', 'enable'); item.removeAttribute('disabled'); } - else + else if (! item.selected) item.setAttribute('disabled', ''); } } @@ -158,22 +155,31 @@ function toggle_menu_items(menu_name, x_abled) { function disable_menus(menu_name_ori, menu_item_ori, reverse, menu_index) { - // in case it's a menu title, like "Pays" or "Categories", - // or it's Mode menu, - // and it was the first selection, meaning it does'nt contains 'enable' - // and both (irl and online) are abled or disabled, - // just act like Reset button - // it's too bas it will also go through this menu items even though it's unnecessary - if (menu_item_ori == null) { // it's a menu name - // "item" as a menu name will select all items in all menus - toggle_menu_items("item", "enable"); - return; - } - - let menu_item_name = menu_item_ori._name; + let menu_item_name = ""; + if (menu_item_ori == null) // it's a menu name + menu_item_name = menu_name_ori; + else + menu_item_name = menu_item_ori._name; let item_ori_html = html_item(menu_name_ori, menu_item_name); let is_enabled = item_ori_html.classList.contains('enable'); + // in case it's a menu title, like "Pays" or "Categories", + // and it does'nt contains 'enable' + // just act like Reset button + // it's too bad it will also go through this menu items even though it's unnecessary + if (menu_index == 'menu_name') { // it's a menu name + if (! is_enabled) { + // "item" as a menu name will select all items in all menus + toggle_menu_items("item", "enable"); + } + return; + } + + // if it's Mode menu, + // and it was the first selection, meaning it does'nt contains 'enable' + // and both (irl and online) are abled or disabled, + // just act like Reset button + // it's too bas it will also go through this menu items even though it's unnecessary if (menu_name_ori === "mode") { let mode_menus = document.getElementsByClassName("filter_menu_mode"); let state = 0; diff --git a/srcs/plugins/map_prof/srcs/map/mp_create_div.php b/srcs/plugins/map_prof/srcs/map/mp_create_div.php index e61bda4..73e944f 100644 --- a/srcs/plugins/map_prof/srcs/map/mp_create_div.php +++ b/srcs/plugins/map_prof/srcs/map/mp_create_div.php @@ -12,6 +12,11 @@ function mp_filter_drop_down($key, &$filter) { onchange="filter_event(this, this.options[this.selectedIndex], \''.$key.'\')" */ $menu_name_class = 'filter_menu_'.str_replace(" ", "_", $key).''; + $id = "filter_" + . $key + . "_" + . $key + ; $content = '