From 2dde6fbaf0edfdf9326c633e835ad23756a62faf Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Mon, 19 Jul 2021 22:50:13 +0200 Subject: [PATCH] #585 - show filter reset button; show badge if filter is active; cleanup --- .../resources/languages/base_de.properties | 1 + .../resources/languages/base_en.properties | 1 + src/main/resources/static/css/charts.css | 5 ++ src/main/resources/static/js/charts.js | 58 ++++++++----------- .../resources/templates/charts/charts.ftl | 9 +-- .../templates/filter/filterMacros.ftl | 38 ------------ 6 files changed, 36 insertions(+), 76 deletions(-) diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index 4a0529eed..f06777022 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -388,6 +388,7 @@ report.budget.rest=Restbudget: # filter filter.active=Filter aktiv +filter.active.short=aktiv filter.apply=Filter anwenden filter.reset=Zurücksetzen filter.type=Art diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index cd72f649b..a08650762 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -389,6 +389,7 @@ report.budget.rest=Remaining Budget: # filter filter.active=Filter active +filter.active.short=active filter.apply=Apply Filter filter.reset=Reset filter.type=Type diff --git a/src/main/resources/static/css/charts.css b/src/main/resources/static/css/charts.css index d23b28886..d08831bef 100644 --- a/src/main/resources/static/css/charts.css +++ b/src/main/resources/static/css/charts.css @@ -61,4 +61,9 @@ #chart-date-card { background-color: var(--color-grey-dark-almost-transparent); +} + +#filterActiveBadge { + float: none; + margin-left: 1rem; } \ No newline at end of file diff --git a/src/main/resources/static/js/charts.js b/src/main/resources/static/js/charts.js index b605ab720..1da6d0fd9 100644 --- a/src/main/resources/static/js/charts.js +++ b/src/main/resources/static/js/charts.js @@ -1,4 +1,3 @@ -let modalFilter; let chartPickerStartDate; let chartPickerEndDate; @@ -19,11 +18,6 @@ $(document).ready(function() $('#modalConfirmDelete').modal('open'); } - if($("#modalFilter").length) - { - modalFilter = $('#modalFilter').modal(); - } - if($(".datepicker").length) { chartPickerStartDate = M.Datepicker.init(document.getElementById('chart-datepicker'), { @@ -72,15 +66,10 @@ $(document).ready(function() } } - $(".filter-button-close").click(function() - { - applyFilter(modalFilter); - }); - $(".filter-button-reset").click(function() { resetFilter(); - applyFilter(modalFilter); + applyFilter(); }); $(".quick-date").click(function() @@ -111,6 +100,20 @@ $(document).ready(function() checkShowChartButton(); }); + let filterCheckBoxes = document.querySelectorAll('#filterSettings input[type=checkbox]'); + for(let i = 0; i < filterCheckBoxes.length; i++) + { + filterCheckBoxes[i].addEventListener('change', (event) => + { + applyFilter(); + }); + } + + $('#filter-name').on('change keydown paste input', function() + { + applyFilter(); + }); + filterChartPreviews(); }); @@ -151,23 +154,10 @@ function createDatePickerEnd(minDate, selectedDate) }); } -function applyFilter(modal) +function applyFilter() { - let filterButton = document.getElementById("modalFilterTrigger"); - - if(isDefaultFilter()) - { - filterButton.classList.toggle("background-blue", true); - filterButton.classList.toggle("background-red", false); - filterButton.childNodes[1].nodeValue = filterNotActive; - } else - { - filterButton.classList.toggle("background-blue", false); - filterButton.classList.toggle("background-red", true); - filterButton.childNodes[1].nodeValue = filterActive; - } - - modal.modal('close'); + let badge = document.getElementById("filterActiveBadge"); + badge.classList.toggle("hidden", isDefaultFilter()); } function isDefaultFilter() @@ -208,16 +198,16 @@ function handleQuickDate(element) endDate = moment("2100-01-01"); break; case '4': - startDate = moment().subtract(1,'weeks').startOf('isoWeek'); - endDate = moment().subtract(1,'weeks').endOf('isoWeek'); + startDate = moment().subtract(1, 'weeks').startOf('isoWeek'); + endDate = moment().subtract(1, 'weeks').endOf('isoWeek'); break; case '5': - startDate = moment().subtract(1,'months').startOf('month'); - endDate = moment().subtract(1,'months').endOf('month'); + startDate = moment().subtract(1, 'months').startOf('month'); + endDate = moment().subtract(1, 'months').endOf('month'); break; case '6': - startDate = moment().subtract(1,'years').startOf('year'); - endDate = moment().subtract(1,'years').endOf('year'); + startDate = moment().subtract(1, 'years').startOf('year'); + endDate = moment().subtract(1, 'years').endOf('year'); break; case '7': startDate = moment("2000-01-01"); diff --git a/src/main/resources/templates/charts/charts.ftl b/src/main/resources/templates/charts/charts.ftl index 68ac7dc85..6ec06b092 100644 --- a/src/main/resources/templates/charts/charts.ftl +++ b/src/main/resources/templates/charts/charts.ftl @@ -222,13 +222,14 @@ <div class="col s12 no-margin-top center-align"> <ul class="collapsible"> <li> - <div class="collapsible-header"><i class="fas fa-filter"></i>Filter</div> - <div class="collapsible-body"><@filterMacros.filterModalContent chartSettings.getFilterConfiguration() "filterConfiguration"/></div> + <div class="collapsible-header"><i class="fas fa-filter"></i>${locale.getString("title.filter")} <span class="badge background-red hidden text-white" id="filterActiveBadge">${locale.getString("filter.active.short")}</span></div> + <div class="collapsible-body"> + <@filterMacros.filterModalContent chartSettings.getFilterConfiguration() "filterConfiguration"/> + <@filterMacros.buttonResetChart/> + </div> </li> </ul> </div> </div> </div> - - <@filterMacros.filterModalCharts chartSettings.getFilterConfiguration()/> </#macro> diff --git a/src/main/resources/templates/filter/filterMacros.ftl b/src/main/resources/templates/filter/filterMacros.ftl index 35f871588..e1de7a060 100644 --- a/src/main/resources/templates/filter/filterMacros.ftl +++ b/src/main/resources/templates/filter/filterMacros.ftl @@ -25,31 +25,6 @@ </div> </#macro> -<#macro buttonsCharts> - <div class="row hide-on-small-only valign-wrapper"> - <div class="col s6 right-align"> - <@buttonResetChart/> - </div> - - <div class="col s6 left-align"> - <@buttonClose/> - </div> - </div> - - <div class="hide-on-med-and-up valign-wrapper"> - <div class="row center-align"> - <div class="col s12"> - <@buttonResetChart/> - </div> - </div> - <div class="row center-align"> - <div class="col s12"> - <@buttonClose/> - </div> - </div> - </div> -</#macro> - <#macro buttonReset> <a href="<@s.url '/filter/reset'/>" class="waves-effect waves-light btn background-blue"><i class="material-icons left">settings_backup_restore</i>${locale.getString("filter.reset")}</a> </#macro> @@ -95,19 +70,6 @@ </div> </#macro> -<#macro filterModalCharts filterConfiguration> - <div id="modalFilter" class="modal background-color"> - <div class="modal-content"> - <h4>${locale.getString("title.filter")}</h4> - <@filterModalContent filterConfiguration "filterConfiguration"/> - <@buttonsCharts/> - </div> - <div class="modal-footer background-color"> - <@header.buttonLink url='' icon='clear' localizationKey='cancel' color='red' classes='modal-action modal-close text-white'/> - </div> - </div> -</#macro> - <#macro filterModalContent filterConfiguration prefix=""> <#if prefix?length gt 0> <#assign prefixValue = prefix + "."/> -- GitLab