$()

in ui/src/main/resources/static/components/query-param-filter/query-param-filter.js [378:468]


$(document).ready( function () {

    initColumns();
    loadFilterColumnArray();
    const operationLoaded = loadFilterOperationArrayByType(filterColumnArray[0].type);
    setValuePlaceholder(operationLoaded[0].id, filterColumnArray[0].placeholders);
    initiateFilterClauseArray();
    loadFilterClauses();

    document.getElementById("query-param-filter-column-select").addEventListener('change', (event) => {
        const column = getColumnById(event.target.value);
        loadFilterOperationArrayByType(column.type);
        $('#query-param-filter-value').val('');
        handleValuesOnColumnChange(column);
    });

    document.getElementById("query-param-filter-operation-select").addEventListener('change', (event) => {
        const columnValue = $("#query-param-filter-column-select").val();
        const column = getColumnById(columnValue);
        setValuePlaceholder(event.target.value,column.placeholders);
    });

    document.getElementById("query-param-filter-value-select").addEventListener('change', (event) => {
        $('#query-param-filter-value').val(event.target.value);
    });

    function isEnumValueExists(filterColumn,value) {
        return filterColumn.values.map(m=>m.id).includes(value);
    }

    document.getElementById("query-param-filter-value").addEventListener('keydown', (event) => {
       if(event.key==='Enter') {
           document.getElementById("add-query-param-filter-button").click();
       }
    });

    document.getElementById("add-query-param-filter-button").addEventListener('click', () => {

        let filterColumn;
        let filterOperationId;

        $("#query-param-filter-column-select option:selected").each(function () {
            filterColumn = getColumnById($(this).val());
        });

        $("#query-param-filter-operation-select option:selected").each(function () {
            filterOperationId = $(this).val();
        });

        const queryParamFilterValue = $('#query-param-filter-value');

        if (filterColumn === undefined ||
            filterOperationId === undefined ||
            (queryParamFilterValue.val()==='' && getOperationById(filterOperationId).required)) {
            return;
        }

        switch (filterColumn.type) {
            case 'number':
                if (isNaN(parseInt(queryParamFilterValue.val()))) {
                    showInfo('error', 'Column values validation', 'Value for column "' + filterColumn.label + '" should be numeric.')
                    return;
                }
                break;
            case 'enum':
                if (!isEnumValueExists(filterColumn,queryParamFilterValue.val())) {
                    showInfo('error', 'Column values validation', 'Value for column "' + filterColumn.label +
                        '" should one of: ' + filterColumn.values.join(','));
                    return;
                }
        }

        for (let ii = 0; ii < filterClauseArray.length; ii++) {
            if (filterClauseArray[ii].column.id === filterColumn.id &&
                filterClauseArray[ii].operation.id === filterOperationId) {
                filterClauseArray.splice(ii,1);
            }
        }

        const newFilterClause = new FilterClause(filterColumn,
                                                 getOperationById(filterOperationId),
                                                 queryParamFilterValue.val(),
                                                 getValueLabelById(filterColumn,queryParamFilterValue.val()));

        filterClauseArray.push(newFilterClause);

        loadFilterClauses();

    });

});