Skip to content

Commit dd2016d

Browse files
committed
Filter out empty strings and objects #159
* Defined a unique constant for the Has a Value option Signed-off-by: Jillian Daguil <[email protected]>
1 parent 540b436 commit dd2016d

File tree

1 file changed

+47
-41
lines changed

1 file changed

+47
-41
lines changed

assets/js/aboutCodeDataTables.js

Lines changed: 47 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
#
1515
*/
1616

17+
const HAS_A_VALUE = "about_code_data_table_has_a_value";
18+
1719
class AboutCodeDataTable {
1820
constructor(tableID, aboutCodeDB) {
1921
this.aboutCodeDB = aboutCodeDB;
@@ -76,9 +78,13 @@ class AboutCodeDataTable {
7678
let columnSearch = dataTablesInput.columns[i].search.value;
7779
if (columnSearch) {
7880
// Return all non empty values
79-
if (columnSearch === "Has a Value") {
81+
if (columnSearch === HAS_A_VALUE) {
8082
query.where.$and[dataTablesInput.columns[i].name] = {
81-
$ne: "[]"
83+
$and: [
84+
{ $ne: "[]" },
85+
{ $ne: "" },
86+
{ $ne: "{}" }
87+
]
8288
}
8389
} else {
8490
// Column 0 is the "path", which should only match wildcards
@@ -173,47 +179,47 @@ class AboutCodeDataTable {
173179
<option value=""></option></select>`)
174180
.appendTo(footer)
175181
.on("click", () => {
176-
let where = {};
177-
where[columnName] = {$ne: null};
178-
179-
that.aboutCodeDB.FlattenedFile.findAll({
180-
attributes: [Sequelize.fn("TRIM",
181-
Sequelize.col(columnName)), columnName],
182-
group: [columnName],
183-
where: where,
184-
order: [columnName]
182+
let where = {};
183+
where[columnName] = {$ne: null};
184+
185+
that.aboutCodeDB.FlattenedFile.findAll({
186+
attributes: [Sequelize.fn("TRIM",
187+
Sequelize.col(columnName)), columnName],
188+
group: [columnName],
189+
where: where,
190+
order: [columnName]
191+
})
192+
.then((rows) => {
193+
let filterValues = $.map(rows, (row) => {
194+
return row[columnName];
185195
})
186-
.then((rows) => {
187-
let filterValues = $.map(rows, (row) => {
188-
return row[columnName];
189-
})
190-
.map(filterValue => (filterValue).toString())
191-
.filter((filterValue) => filterValue.length > 0);
192-
193-
filterValues = $.map(filterValues, (filterValue) => filterValue);
194-
filterValues.forEach((filterValue) => {
195-
filterValue.trim();
196-
});
197-
filterValues = $.unique(filterValues).sort();
198-
199-
const select = $(`select#clue-${columnName}`);
200-
let val = select.find("option:selected");
201-
202-
select.empty().append(`<option value=""></option>`);
203-
204-
/**
205-
* Add Has a Value option to dropdown menu to show all rows
206-
* that contain a detected ScanCode value.
207-
*/
208-
if (filterValues.length > 0) {
209-
select.append(`<option value="Has a Value">Has a Value</option>`);
210-
}
211-
212-
$.each(filterValues, function ( i, filterValue ) {
213-
select.append(`<option value="${filterValue}">${filterValue}</option>`)
214-
});
215-
select.val(val);
196+
.map(filterValue => (filterValue).toString())
197+
.filter((filterValue) => filterValue.length > 0);
198+
199+
filterValues = $.map(filterValues, (filterValue) => filterValue);
200+
filterValues.forEach((filterValue) => {
201+
filterValue.trim();
202+
});
203+
filterValues = $.unique(filterValues).sort();
204+
205+
const select = $(`select#clue-${columnName}`);
206+
let val = select.find("option:selected");
207+
208+
select.empty().append(`<option value=""></option>`);
209+
210+
/**
211+
* Add Has a Value option to dropdown menu to show all rows
212+
* that contain a detected ScanCode value.
213+
*/
214+
if (filterValues.length > 0) {
215+
select.append(`<option value="${HAS_A_VALUE}">Has a Value</option>`);
216+
}
217+
218+
$.each(filterValues, function ( i, filterValue ) {
219+
select.append(`<option value="${filterValue}">${filterValue}</option>`)
216220
});
221+
select.val(val);
222+
});
217223
})
218224
.on( "change", function () {
219225
// Get dropdown element selected value

0 commit comments

Comments
 (0)