From 51b4ddb0e4ed4dc50bed7ac84f98dab2f8bcbc4d Mon Sep 17 00:00:00 2001 From: digital-gnome <31593470+digital-gnome@users.noreply.github.com> Date: Sat, 9 Dec 2017 22:20:35 -0500 Subject: [PATCH] Add js for filter handling --- web/skins/classic/views/filter.php | 2 +- web/skins/classic/views/js/filter.js | 103 +++++++++++++++++++++------ 2 files changed, 84 insertions(+), 21 deletions(-) diff --git a/web/skins/classic/views/filter.php b/web/skins/classic/views/filter.php index be4fa0a2a..9816ac6b8 100644 --- a/web/skins/classic/views/filter.php +++ b/web/skins/classic/views/filter.php @@ -197,7 +197,7 @@ for ( $i=0; $i < count($terms); $i++ ) { } ?> 2 ) { echo htmlSelect( "filter[Query][terms][$i][obr]", $obracketTypes, $term['obr'] ); } else { ?>  - + 0 && i > 0 && inputs[0].children.length == 0) { //add and/or to 1+ if doesn't exist + $j(inputs[0]).html(''); + } + let brackets = rows.length - 2; + if (brackets > 0) { //add bracket td to all rows + let obr = ''; + for (let k = 1; k <= brackets; k++) {//build bracket options + obr += ''; + cbr += ''; + } + obr += ''; + cbr += ''; + let obrVal = $j(inputs[1]).children().val(); //Save currently selected bracket option + let cbrVal = $j(inputs[5]).children().val(); + $j(inputs[1]).html(obr).children().val(obrVal); //Set bracket contents and assign saved value + $j(inputs[5]).html(cbr).children().val(cbrVal); + } else { + $j(inputs[1]).html(' '); + $j(inputs[5]).html(' '); + } + if ($j(inputs[2]).children().val() == "Archived") { //Archived filter is very different. Handles html changes. + $j(inputs[3]).html('equal to'); + $j(inputs[4]).html(''); + } else if ($j(inputs[3]).children().attr('type') == 'hidden' ) { + $j(inputs[3]).html(''); + $j(inputs[4]).html(''); + } + for (let j = 0; j < inputs.length; j++) { //Set all query array values in case any were missed + let input = inputs[j].children; + if (input.length) { //Ignore placeholders. + if (input[0].type == 'button' && rows.length == 1) { //if add/delete button disable when only term + $j(input[1]).prop('disabled', true); + } else if (input[0].type == 'button') { //Enable if more than one term + $j(input[1]).prop('disabled', false); + } else { // Set all non-button array values + let term = input[0].name.split(/[[\]]{1,2}/); + term.length--; + term.shift(); + term[2] = i; + input[0].name = 'filter'+stringFilter(term); + input[0].id = 'filter'+stringFilter(term); + } + } + } + } } -function delTerm( element, line ) { - var form = element.form; - form.target = window.name; - form.action = thisUrl + '?view='+currentView; - form.elements['object'].value = 'filter'; - form.elements['action'].value = 'delterm'; - form.elements['line'].value = line; - form.submit(); +function stringFilter (term) { + let termString = ''; + term.forEach(function(item) { + termString += '[' + item + ']'; + }); + return termString; +} + +function addTerm( element ) { + let row = $j(element).closest('tr'); + let newRow = row.clone().insertAfter(row); + newRow.find('select').each( function () { //reset new row to default + this[0].selected = 'selected'; + }); + newRow.find('input[type="text"]').val(''); + let rows = $j(row).parent().children(); + parseRows(rows); +} + +function delTerm( element ) { + let row = $j(element).closest('tr'); + let rowParent = $j(row).parent(); + row.remove(); + let rows = rowParent.children(); + parseRows(rows); } function init() {