class ConcordanceQueryBuilder { constructor() { this.elements = new ElementReferencesQueryBuilder(); this.generalFunctions = new GeneralFunctionsQueryBuilder(this.elements); this.tokenAttributeBuilderFunctions = new TokenAttributeBuilderFunctionsQueryBuilder(this.elements); this.structuralAttributeBuilderFunctions = new StructuralAttributeBuilderFunctionsQueryBuilder(this.elements); // Eventlisteners for the incidence modifiers. There are two different types of incidence modifiers: token and character incidence modifiers. document.querySelectorAll('.incidence-modifier-selection').forEach(button => { let dropdownId = button.parentNode.parentNode.id; if (dropdownId === 'corpus-analysis-concordance-token-incidence-modifiers-dropdown') { button.addEventListener('click', () => this.generalFunctions.tokenIncidenceModifierHandler(button.dataset.token, button.innerHTML)); } else if (dropdownId === 'corpus-analysis-concordance-character-incidence-modifiers-dropdown') { button.addEventListener('click', () => this.tokenAttributeBuilderFunctions.characterIncidenceModifierHandler(button)); } }); // Eventlisteners for the submit of n- and m-values of the incidence modifier modal for "exactly n" or "between n and m". document.querySelectorAll('.n-m-submit-button').forEach(button => { let modalId = button.dataset.modalId; if (modalId === 'corpus-analysis-concordance-exactly-n-token-modal' || modalId === 'corpus-analysis-concordance-between-nm-token-modal') { button.addEventListener('click', () => this.generalFunctions.tokenNMSubmitHandler(modalId)); } else if (modalId === 'corpus-analysis-concordance-exactly-n-character-modal' || modalId === 'corpus-analysis-concordance-between-nm-character-modal') { button.addEventListener('click', () => this.tokenAttributeBuilderFunctions.characterNMSubmitHandler(modalId)); } }); document.querySelector('#corpus-analysis-concordance-text-annotation-submit').addEventListener('click', () => this.structuralAttributeBuilderFunctions.textAnnotationSubmitHandler()); this.elements.positionalAttrModal = M.Modal.init( document.querySelector('#corpus-analysis-concordance-positional-attr-modal'), { onOpenStart: () => { this.tokenAttributeBuilderFunctions.preparePositionalAttrModal(); this.tokenAttributeBuilderFunctions.optionToggleHandler(); }, onCloseStart: () => { this.tokenAttributeBuilderFunctions.resetPositionalAttrModal(); } } ); this.elements.structuralAttrModal = M.Modal.init( document.querySelector('#corpus-analysis-concordance-structural-attr-modal'), { onCloseStart: () => { this.structuralAttributeBuilderFunctions.resetStructuralAttrModal(); } } ); } }