diff --git a/InvenTree/InvenTree/static/css/inventree.css b/InvenTree/InvenTree/static/css/inventree.css index 21a5c32575..1bd35052c2 100644 --- a/InvenTree/InvenTree/static/css/inventree.css +++ b/InvenTree/InvenTree/static/css/inventree.css @@ -171,14 +171,13 @@ .filter-list { display: inline-block; *display: inline; - border: 1px solid #555; - border-radius: 3px; - padding: 3px; margin-bottom: 1px; margin-top: 1px; vertical-align: middle; margin: 1px; - padding: 1px; + padding: 2px; + border: 1px solid #aaa; + border-radius: 3px; } .filter-list .close { @@ -199,14 +198,15 @@ padding-right: 3px; padding-top: 2px; padding-bottom: 2px; - border: 1px solid; - border-color: #aaa; + border: 1px solid #aaa; border-radius: 3px; background: #eee; margin: 1px; + margin-left: 5px; + margin-right: 5px; } -.filter-list > li:hover { +.filter-tag:hover { background: #ddd; } diff --git a/InvenTree/InvenTree/static/script/inventree/filters.js b/InvenTree/InvenTree/static/script/inventree/filters.js index 97f9d5b722..989d97643b 100644 --- a/InvenTree/InvenTree/static/script/inventree/filters.js +++ b/InvenTree/InvenTree/static/script/inventree/filters.js @@ -169,7 +169,7 @@ function generateAvailableFilterList(tableKey) { var id = 'filter-tag-' + tableKey.toLowerCase(); - var html = ``; html += ``; @@ -202,10 +202,10 @@ function generateFilterInput(tableKey, filterKey) { // A 'null' options list means that a simple text-input dialog should be used if (options == null) { - html = ``; + html = ``; } else { // Return a 'select' input with the available values - html = ``; for (var opt in options) { html += ``; @@ -227,6 +227,8 @@ function generateFilterInput(tableKey, filterKey) { */ function setupFilterList(tableKey, table, target) { + var addClicked = false; + if (!target || target.length == 0) { target = '#filter-list-" + tableKey'; } @@ -236,15 +238,23 @@ function setupFilterList(tableKey, table, target) { var clear = `filter-clear-${tableKey}`; var make = `filter-make-${tableKey}`; - console.log(`Refilling filter list: ${tableKey}`); + console.log(`Generating filter list: ${tableKey}`); var filters = loadTableFilters(tableKey); + console.log("Filters: " + filters.count); + var element = $(target); // One blank slate, please element.empty(); + element.append(``); + + if (Object.keys(filters).length > 0) { + element.append(``); + } + for (var key in filters) { var value = getFilterOptionValue(tableKey, key, filters[key]); var title = getFilterTitle(tableKey, key); @@ -252,42 +262,48 @@ function setupFilterList(tableKey, table, target) { element.append(`
${title} = ${value}x
`); } - element.append(``); - element.append(``); - // Add a callback for adding a new filter - element.find(`#${add}`).click(function() { + element.find(`#${add}`).click(function clicked() { - var html = '
'; + if (!addClicked) { - html += generateAvailableFilterList(tableKey); - html += generateFilterInput(tableKey); + addClicked = true; - html += ``; + var html = '
'; - html += '
'; + html += generateAvailableFilterList(tableKey); + html += generateFilterInput(tableKey); - element.append(html); + html += ``; - // Add a callback for when the filter tag selection is changed - element.find(`#filter-tag-${tableKey}`).on('change', function() { - var list = element.find(`#filter-value-${tableKey}`); + html += '
'; - list.replaceWith(generateFilterInput(tableKey, this.value)); - }); + element.append(html); - // Add a callback for when the new filter is created - element.find(`#filter-make-${tableKey}`).click(function() { - var tag = element.find(`#filter-tag-${tableKey}`).val(); - var val = element.find(`#filter-value-${tableKey}`).val(); + // Add a callback for when the filter tag selection is changed + element.find(`#filter-tag-${tableKey}`).on('change', function() { + var list = element.find(`#filter-value-${tableKey}`); - var filters = addTableFilter(tableKey, tag, val); + list.replaceWith(generateFilterInput(tableKey, this.value)); + }); - reloadStockTable(table, filters); + // Add a callback for when the new filter is created + element.find(`#filter-make-${tableKey}`).click(function() { + var tag = element.find(`#filter-tag-${tableKey}`).val(); + var val = element.find(`#filter-value-${tableKey}`).val(); + + var filters = addTableFilter(tableKey, tag, val); + + reloadStockTable(table, filters); + + // Run this function again + setupFilterList(tableKey, table, target); + }); + } else { + addClicked = false; - // Run this function again setupFilterList(tableKey, table, target); - }); + } });