From 2185c01847ad7c9ac79e30f9f4810e0a0b8b0c7d Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Tue, 3 Aug 2021 21:47:07 +0200 Subject: [PATCH] #633 - show chart button: enable on prefill if chart is selected --- src/main/resources/static/js/charts.js | 12 ++++--- .../resources/templates/charts/charts.ftl | 6 +--- .../integration/selenium/ChartTest.java | 32 ++++++++++++++++--- 3 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/main/resources/static/js/charts.js b/src/main/resources/static/js/charts.js index 3e583d4c7..a1eddfc84 100644 --- a/src/main/resources/static/js/charts.js +++ b/src/main/resources/static/js/charts.js @@ -76,18 +76,18 @@ $(document).ready(function() { toggleChartTypeButtons('button-display-type', this); hideGroupTypeButtonsIfOnlyOneDistinctGroup(); - filterChartPreviews(-1); + filterChartPreviews(''); }); $('.button-group-type').click(function() { toggleChartTypeButtons('button-group-type', this); - filterChartPreviews(-1); + filterChartPreviews(''); }); $('.chart-preview-column').click(function() { - unsetActiveChartPreview(); + unsetActiveChartPreview(''); this.querySelector('.chart-preview').classList.toggle('active', true); document.getElementsByName('displayType')[0].value = this.dataset.displayType; @@ -114,11 +114,13 @@ $(document).ready(function() { document.getElementsByName('NewChartSettings')[0].classList.toggle('hidden', false); document.getElementById('buttonShowChartSettings').classList.toggle('hidden', true); + + checkShowChartButton(); }); if($(".chart-preview-column").length) { - filterChartPreviews(selectChartID); + filterChartPreviews(document.getElementsByName('chartID')[0].value); let showEditSettingsButton = document.getElementsByName('NewChartSettings')[0].classList.contains('hidden'); document.getElementById('buttonShowChartSettings').classList.toggle('hidden', !showEditSettingsButton); @@ -328,7 +330,7 @@ function unsetActiveChartPreview(initiallySelectedChartID) column.querySelector('.chart-preview').classList.toggle('active', column.dataset.id === initiallySelectedChartID); } - document.getElementsByName('chartID')[0].value = ''; + document.getElementsByName('chartID')[0].value = initiallySelectedChartID; checkShowChartButton(); } diff --git a/src/main/resources/templates/charts/charts.ftl b/src/main/resources/templates/charts/charts.ftl index 93465fdcc..5db5d1610 100644 --- a/src/main/resources/templates/charts/charts.ftl +++ b/src/main/resources/templates/charts/charts.ftl @@ -66,11 +66,7 @@ </div> </div> </div> - <input type="hidden" name="chartID" value=""> - - <script> - selectChartID="${chartSettings.getChartID()!-1}"; - </script> + <input type="hidden" name="chartID" value="${chartSettings.getChartID()!''}"> <@dateSelect/> diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java index 9c80fb0fc..5208fbff0 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java @@ -78,7 +78,7 @@ class ChartTest extends SeleniumTestBase assertThat(displayedChartPreviews) .hasSize(3); assertThat(displayedChartPreviews.get(0).findElement(By.cssSelector(".card-action span")).getText()) - .isEqualTo("Incomes/Expenditures per month"); + .isEqualTo("Incomes/Expenditures"); // filter assertThat(driver.findElement(By.id("filterActiveBadge")).isDisplayed()).isFalse(); @@ -111,7 +111,7 @@ class ChartTest extends SeleniumTestBase assertThat(displayedChartPreviews) .hasSize(1); assertThat(displayedChartPreviews.get(0).findElement(By.cssSelector(".card-action span")).getText()) - .isEqualTo("Incomes/Expenditures per month"); + .isEqualTo("Incomes/Expenditures"); // filter assertThat(driver.findElement(By.id("filterActiveBadge")).isDisplayed()).isFalse(); @@ -188,7 +188,7 @@ class ChartTest extends SeleniumTestBase assertThat(displayedChartPreviews) .hasSize(1); assertThat(displayedChartPreviews.get(0).findElement(By.cssSelector(".card-action span")).getText()) - .isEqualTo("Incomes/Expenditures per year"); + .isEqualTo("Incomes/Expenditures"); // filter assertThat(driver.findElement(By.id("filterActiveBadge")).isDisplayed()).isFalse(); @@ -213,7 +213,7 @@ class ChartTest extends SeleniumTestBase assertThat(activeChartPreviews) .hasSize(1); assertThat(activeChartPreviews.get(0).findElement(By.cssSelector(".card-action span")).getText()) - .isEqualTo("Incomes/Expenditures per month by categories"); + .isEqualTo("Incomes/Expenditures by categories"); // button assertThat(driver.findElement(By.name("buttonSave")).isEnabled()).isTrue(); @@ -317,6 +317,30 @@ class ChartTest extends SeleniumTestBase assertThat(driver.findElements(By.cssSelector(".chart-canvas .plot-container"))).hasSize(1); } + @Test + void test_EnabledButtonAfterShowChart() + { + driver.get(helper.getUrl() + "/charts"); + + final String chartPreviewSelector = ".chart-preview-column[data-id='6']"; + driver.findElement(By.cssSelector(chartPreviewSelector)).click(); + + WebDriverWait wait = new WebDriverWait(driver, 5); + wait.until(ExpectedConditions.attributeContains(By.cssSelector(chartPreviewSelector + " .chart-preview"), "class", "active")); + + driver.findElement(By.name("buttonSave")).click(); + + wait = new WebDriverWait(driver, 5); + wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("chart-canvas"))); + + driver.findElement(By.id("buttonShowChartSettings")).click(); + + wait = new WebDriverWait(driver, 5); + wait.until(ExpectedConditions.attributeContains(By.cssSelector(chartPreviewSelector + " .chart-preview"), "class", "active")); + + assertThat(driver.findElement(By.name("buttonSave")).isEnabled()).isTrue(); + } + private String getSelectedType(String selector) { final List<WebElement> activeTypeButtons = driver.findElements(By.cssSelector(selector)); -- GitLab