HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/innodrive/src/js/modules-legacy/search.js
import { $$, $ } from 'utils';

let programs = [];

const allProgramToggles = [...$$('.js-toggle-program-all')];
const groupsProgramToggles = [...$$('.js-toggle-program-group')];
const programToggles = [...$$('[name="subcategories[]"]')];

const filters = [...$$('.params')];
const searchInput = $('input.search');

const page = $('input[name="page"]');

const toggleAllPrograms = (state) => {
  if (state) {
    programs = [];
  }
  renderPrograms();
};

const toggleProgramsGroup = (item) => {
  const values = JSON.parse(item.dataset.values);
  const state = item.checked;

  if (state) {
    programs = programs.concat(values);
  } else {
    programs = programs.filter((program) => {
      return values.indexOf(program) < 0;
    });
  }

  renderPrograms();
};

const toggleProgram = (value, state) => {
  if (state) {
    programs.push(value);
  } else {
    programs = programs.filter((program) => {
      return program !== value;
    });
  }

  renderPrograms();
};

const renderFilters = () => {

};

const renderPrograms = () => {
  // Check all
  allProgramToggles.forEach((item) => {
    item.checked = !programs.length;
  });

  // Check groups
  groupsProgramToggles.forEach((item) => {
    const values = JSON.parse(item.dataset.values);
    const state = !values.some(function (value) {
      return !programs.includes(value);
    });
    item.checked = state;
  });

  // Check programs
  programToggles.forEach((item) => {
    item.checked = programs.includes(item.value);
  });

  page.value = 1;
  window.search();
};

const initFilters = () => {
  if (groupsProgramToggles) {
    groupsProgramToggles.forEach((item) => {
      item.addEventListener('change', () => {
        toggleProgramsGroup(item);
      });
    });
  }

  if (programToggles) {
    programToggles.forEach((item) => {
      item.addEventListener('change', () => {
        const currentValue = item.value;
        const state = item.checked;
        toggleProgram(currentValue, state);
      });
    });
  }

  [...$$('.js-clear')].forEach((item) => {
    item.addEventListener('click', (ev) => {
      ev.preventDefault();

      switch (item.dataset.type) {
        case 'programs':
          programs = [];
          renderPrograms();
          break;
        case 'filters':
          filters.forEach((item) => {
            item.value = '';
          });
          renderFilters();
          break;
        case 'search':
          searchInput.value = '';
          break;
      }

      page.value = 1;
      window.search();
    });
  });

  filters.forEach((item) => {
    item.addEventListener('change', (ev) => {
      const value = item.value;
      [...$$(`[name="${item.getAttribute('name')}"]`)].forEach((subItem) => {
        subItem.value = value;
      });
      page.value = 1;
      window.search();
    });
  });
};

export default () => {
  initFilters();
};