From dee976cf1a6af09bed30fd2a4398653f0b773380 Mon Sep 17 00:00:00 2001
From: digital-gnome <31593470+digital-gnome@users.noreply.github.com>
Date: Wed, 13 Dec 2017 22:24:33 -0500
Subject: [PATCH] parseRows just needs to recreate the php logic
---
web/skins/classic/views/js/filter.js | 140 +++++++++++++++++++--------
1 file changed, 99 insertions(+), 41 deletions(-)
diff --git a/web/skins/classic/views/js/filter.js b/web/skins/classic/views/js/filter.js
index cc29cf095..25e5d58a6 100644
--- a/web/skins/classic/views/js/filter.js
+++ b/web/skins/classic/views/js/filter.js
@@ -98,54 +98,112 @@ function deleteFilter( element, name ) {
}
function parseRows (rows) {
- for (let i = 0; i < rows.length; i++) { //Traverse terms(rows)
- let inputs = rows[i].children; //Array of tds
- if (i == 0) $j(inputs[0]).html(' '); //Remove and from first term
- if (rows.length -1 > 0 && i > 0 && inputs[0].children.length == 0) { //add and/or to 1+ if doesn't exist
- $j(inputs[0]).html('');
+ for (let rowNum = 0; rowNum < rows.length; rowNum++) { //Each row is a term
+ let queryPrefix = 'filter[Query][terms][';
+ let inputTds = rows.eq(rowNum).children();
+
+ if (rowNum == 0) inputTds.eq(0).html(' '); //Remove and from first term
+ if (rowNum > 0) { //add and/or to 1+
+ let cnjVal = inputTds.eq(0).children().val();
+ let conjSelect = $j('').attr('name', queryPrefix + rowNum + '][cnj]').attr('id', queryPrefix + rowNum + '][cnj]');
+ $j.each(conjTypes, function (i) {
+ conjSelect.append('');
+ });
+ inputTds.eq(0).html(conjSelect).children().val(cnjVal);
}
+
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);
+ let obrVal = inputTds.eq(1).children().val(); //Save currently selected bracket option
+ let cbrVal = inputTds.eq(5).children().val();
+ inputTds.eq(1).html(obrSelect).children().val(obrVal); //Set bracket contents and assign saved value
+ inputTds.eq(5).html(cbrSelect).children().val(cbrVal);
} else {
- $j(inputs[1]).html(' ');
- $j(inputs[5]).html(' ');
+ inputTds.eq(1).html(' ');
+ inputTds.eq(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('');
+
+ if (rows.length == 1) {
+ inputTds.eq(6).find(':input[value="-"]').prop('disabled', true);
+ } else {
+ inputTds.eq(6).find(':input[value="-"]').prop('disabled', false);
}
- 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);
- }
+
+ if (inputTds.eq(2).children().val() == "Archived") {
+ inputTds.eq(3).html('equal to');
+ let archiveSelect = $j('').attr('name', queryPrefix + rowNum + '][val]').attr('id', queryPrefix + rowNum + '][val]');
+ for (let i = 0; i < archiveTypes.length; i++) {
+ archiveSelect.append('');
}
- }
+ let archiveVal = inputTds.eq(4).children().val();
+ inputTds.eq(4).html(archiveSelect).children().val(archiveVal);
+
+ } else if (inputTds.eq(2).children().val().indexOf('Weekday') >= 0) {
+ let weekdaySelect = $j('').attr('name', queryPrefix + rowNum + '][val]').attr('id', queryPrefix + rowNum + '][val]');
+ for (let i = 0; i < weekdays.length; i++) {
+ weekdaySelect.append('');
+ }
+ let weekdayVal = inputTds.eq(4).children().val();
+ inputTds.eq(4).html(weekdaySelect).children().val(weekdayVal);
+
+ } else if (inputTds.eq(2).children().val() == 'StateId') {
+ let stateSelect = $j('').attr('name', queryPrefix + rowNum + '][val]').attr('id', queryPrefix + rowNum + '][val]');
+ for (let key in states) {
+ stateSelect.append('');
+ }
+ let stateVal = inputTds.eq(4).children().val();
+ inputTds.eq(4).html(weekdaySelect).children().val(stateVal)
+
+
+ } else if (inputTds.eq(2).children().val() == 'ServerId') {
+ let serverSelect = $j('').attr('name', queryPrefix + rowNum + '][val]').attr('id', queryPrefix + rowNum + '][val]');
+ for (let key in servers) {
+ serverSelect.append('');
+ }
+ let serverVal = inputTds.eq(4).children().val();
+ inputTds.eq(4).html(weekdaySelect).children().val(serverVal)
+
+ } else if (inputTds.eq(2).children().val() == 'StorageId') {
+ let storageSelect = $j('').attr('name', queryPrefix + rowNum + '][val]').attr('id', queryPrefix + rowNum + '][val]');
+ for (let i=0; i < storageareas.length; i++) {
+ storageSelect.append('');
+ }
+ let storageVal = inputTds.eq(4).children().val();
+ inputTds.eq(4).html(storageSelect).children().val(storageVal)
+
+ } else if (inputTds.eq(2).children().val() == 'MonitorName') {
+ let monitorSelect = $j('').attr('name', queryPrefix + rowNum + '][val]').attr('id', queryPrefix + rowNum + '][val]');
+ for (let key in monitors) {
+ monitorSelect.append('');
+ }
+ let monitorVal = inputTds.eq(4).children().val();
+ inputTds.eq(4).html(monitorSelect).children().val(monitorVal)
+ } else {
+ let opSelect = $j('').attr('name', queryPrefix + rowNum + '][op]').attr('id', queryPrefix + rowNum + '][op]');
+ for (let key in opTypes) {
+ opSelect.append('');
+ }
+ let opVal = inputTds.eq(3).children().val();
+ inputTds.eq(3).html(opSelect).children().val(opVal)
+ let textInput = $j('').attr('type', 'text').attr('name', queryPrefix + rowNum + '][val]').attr('id', queryPrefix + rowNum + '][val]')
+ let textVal = inputTds.eq(4).children().val();
+ inputTds.eq(4).html(textInput).children().val(textVal);
+ }
+ let attr = inputTds.find("[name$='attr\\]']") // Set attr list id and name
+ let term = attr.attr('name').split(/[[\]]{1,2}/);
+ term.length--;
+ term.shift();
+ term[2] = rowNum;
+ inputTds.eq(2).children().attr('name', 'filter'+stringFilter(term));
+ inputTds.eq(2).children().attr('id', 'filter'+stringFilter(term));
}
history.replaceState(null, null, '?view=filter&' + $j('#contentForm').serialize());
}