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 = '';
+ 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() {