@@ -1333,67 +1450,69 @@ if ($has_member_access) {
-
-
-
-
-
-
- TABLEAU DES SIGNATURES DE SCAN
-
-
-
+
+
+
+
@@ -1578,6 +1697,7 @@ if ($has_member_access) {
const resetButton = document.getElementById('itemCustomSearchReset');
const status = document.getElementById('itemCustomSearchStatus');
const grid = document.getElementById('itemCustomGrid');
+ const typeCheckboxes = Array.from(document.querySelectorAll('.item-custom-type-checkbox'));
if (!searchInput || !resetButton || !status || !grid) {
return;
@@ -1593,29 +1713,59 @@ if ($has_member_access) {
.trim();
}
+ function getSelectedTypes() {
+ return typeCheckboxes
+ .filter((checkbox) => checkbox.checked)
+ .map((checkbox) => ({
+ label: checkbox.value,
+ value: normalizeValue(checkbox.value)
+ }));
+ }
+
function applyFilter() {
const query = normalizeValue(searchInput.value);
+ const selectedTypes = getSelectedTypes();
+ const selectedTypeSet = new Set(selectedTypes.map((type) => type.value));
let visibleCount = 0;
cards.forEach((card) => {
const haystack = normalizeValue(card.dataset.itemSearch || '');
- const isVisible = query === '' || haystack.includes(query);
- card.classList.toggle('is-hidden-by-search', !isVisible);
+ const itemType = normalizeValue(card.dataset.itemType || '');
+ const matchesQuery = query === '' || haystack.includes(query);
+ const matchesType = selectedTypeSet.size === 0 || selectedTypeSet.has(itemType);
+ const isVisible = matchesQuery && matchesType;
+ card.classList.toggle('is-hidden-by-search', !matchesQuery);
+ card.classList.toggle('is-hidden-by-type', matchesQuery && !matchesType);
if (isVisible) {
visibleCount += 1;
}
});
- if (query === '') {
+ if (query === '' && selectedTypeSet.size === 0) {
status.textContent = visibleCount + ' objet(s) affiché(s) sur ' + cards.length + '.';
- } else {
- status.textContent = visibleCount + ' objet(s) correspondent à « ' + searchInput.value.trim() + ' ».';
+ return;
}
+
+ const activeFilters = [];
+ if (query !== '') {
+ activeFilters.push('la recherche « ' + searchInput.value.trim() + ' »');
+ }
+ if (selectedTypes.length > 0) {
+ activeFilters.push((selectedTypes.length > 1 ? 'les types ' : 'le type ') + selectedTypes.map((type) => '« ' + type.label + ' »').join(', '));
+ }
+
+ status.textContent = visibleCount + ' objet(s) correspondent à ' + activeFilters.join(' + ') + '.';
}
searchInput.addEventListener('input', applyFilter);
+ typeCheckboxes.forEach((checkbox) => {
+ checkbox.addEventListener('change', applyFilter);
+ });
resetButton.addEventListener('click', function () {
searchInput.value = '';
+ typeCheckboxes.forEach((checkbox) => {
+ checkbox.checked = false;
+ });
applyFilter();
searchInput.focus();
});
+
+
+
-
+
+ TABLEAU DES SIGNATURES DE SCAN
+
+
+
-
-
-
-
Aucune donnée de scan n'est configurée pour le moment.
- -
-
-
-
+
+
+
+
- Aucune donnée de scan n'est configurée pour le moment.
+ +
+
-
+
+
+
+ Clique sur les lignes à conserver puis sur « Isoler ».
Clique sur les lignes à conserver puis sur « Isoler ».
-
-
-
-
+
+
+
+
+
+
+
+
+
+ —
+
+
+
+
+ —'; ?>
+
+
+
+
+
+
+
+
+ | Ressource | -Récupérations | - -x | - -|||
|---|---|---|---|---|---|
| - - | -- - - - - - — - - | +
| Ressource | +Récupérations | -- —'; ?> - | +x |
|---|