⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.1
Server IP:
185.238.29.86
Server:
Linux server2 6.8.12-6-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-6 (2024-12-19T19:05Z) x86_64
Server Software:
nginx/1.18.0
PHP Version:
8.1.31
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
var
/
www
/
invoice
/
node_modules
/
filterizr
/
src
/
View File Name :
FilterControls.ts
import Filterizr from './Filterizr'; import { debounce } from './utils'; import EventReceiver from './EventReceiver'; import { Destructible } from './types/interfaces'; export default class FilterControls implements Destructible { private filterControls: EventReceiver; private filterizr: Filterizr; private multiFilterControls: EventReceiver; private searchControls: EventReceiver; private selector: string; private shuffleControls: EventReceiver; private sortAscControls: EventReceiver; private sortDescControls: EventReceiver; /** * @param filterizr keep a ref to the Filterizr object to control actions * @param selector selector of controls in case of multiple Filterizr instances */ public constructor(filterizr: Filterizr, selector: string = '') { this.filterizr = filterizr; this.selector = selector; this.filterControls = new EventReceiver( document.querySelectorAll(`${selector}[data-filter]`) ); this.multiFilterControls = new EventReceiver( document.querySelectorAll(`${selector}[data-multifilter]`) ); this.shuffleControls = new EventReceiver( document.querySelectorAll(`${selector}[data-shuffle]`) ); this.searchControls = new EventReceiver( document.querySelectorAll(`${selector}[data-search]`) ); this.sortAscControls = new EventReceiver( document.querySelectorAll(`${selector}[data-sortAsc]`) ); this.sortDescControls = new EventReceiver( document.querySelectorAll(`${selector}[data-sortDesc]`) ); this.initialize(); } public destroy(): void { this.filterControls.destroy(); this.multiFilterControls.destroy(); this.shuffleControls.destroy(); this.searchControls.destroy(); this.sortAscControls.destroy(); this.sortDescControls.destroy(); } private initialize(): void { const { filterizr, selector } = this; // Filter EventReceiver this.filterControls.on('click', (evt): void => { const ctrl: Element = evt.currentTarget as Element; const targetFilter: string = ctrl.getAttribute('data-filter'); filterizr.filter(targetFilter); }); this.multiFilterControls.on('click', (evt): void => { const ctrl: Element = evt.target as Element; const targetFilter = ctrl.getAttribute('data-multifilter'); filterizr.toggleFilter(targetFilter); }); // Shuffle EventReceiver this.shuffleControls.on('click', filterizr.shuffle.bind(filterizr)); // Search EventReceiver this.searchControls.on('keyup', debounce( (evt: Event): void => { const textfield: HTMLInputElement = evt.target as HTMLInputElement; const searchTerm = textfield.value; filterizr.search(searchTerm); }, 250, false ) as EventListener); // Sort EventReceiver this.sortAscControls.on('click', (): void => { const sortAttr: string = (document.querySelector( `${selector}[data-sortOrder]` ) as HTMLInputElement).value; filterizr.sort(sortAttr, 'asc'); }); this.sortDescControls.on('click', (): void => { const sortAttr = (document.querySelector( `${selector}[data-sortOrder]` ) as HTMLInputElement).value; filterizr.sort(sortAttr, 'desc'); }); } }