Difference between revisions of "Widget:DCTList"

From LINKS Community Center
Jump to: navigation, search
Line 674: Line 674:
 
             // Listen for changes in filter checkbox state.
 
             // Listen for changes in filter checkbox state.
 
             document.getElementById('functions-filter').addEventListener('change', event => {
 
             document.getElementById('functions-filter').addEventListener('change', event => {
                console.log('loop check!')
 
 
                 const filterBlock = event.target.closest('.func-filter-block');
 
                 const filterBlock = event.target.closest('.func-filter-block');
 
                 const category = filterBlock.querySelector('input.func-cat');
 
                 const category = filterBlock.querySelector('input.func-cat');
 
                 const subfunctions = filterBlock.querySelectorAll('.subfunc-filter-block input[type="checkbox"]');
 
                 const subfunctions = filterBlock.querySelectorAll('.subfunc-filter-block input[type="checkbox"]');
  
                // Selecting/deselecting the category checks/unchecks all subfunctions.
 
 
                 if (event.target === category) {
 
                 if (event.target === category) {
 +
                    // Selecting/deselecting the category checks/unchecks all subfunctions.
 
                     subfunctions.forEach(checkbox => checkbox.checked = category.checked);
 
                     subfunctions.forEach(checkbox => checkbox.checked = category.checked);
 +
                } else {
 +
                    // If no subfunctions are selected, deactivate the category. Activate otherwise.
 +
                    const checkedSubs = Array.from(subfunctions).filter(sub => sub.checked).length;
 +
                    if (length > 0) { category.checked = true; } else { category.checked = false; }
 
                 }
 
                 }
 
                // Picking at least one subfunction activates the category.
 
                // Picking zero subfunctions deactivates the category.
 
  
 
                 applyFilters();
 
                 applyFilters();

Revision as of 17:02, 18 November 2022

Development verstion of the DCT List.
Not ready for production!