diff --git a/webserver/src/main/java/io/kestra/webserver/controllers/api/DashboardController.java b/webserver/src/main/java/io/kestra/webserver/controllers/api/DashboardController.java index 75bc0ea3ea0..1bfc2283922 100644 --- a/webserver/src/main/java/io/kestra/webserver/controllers/api/DashboardController.java +++ b/webserver/src/main/java/io/kestra/webserver/controllers/api/DashboardController.java @@ -157,22 +157,23 @@ public PagedResults> dashboardChart( @Parameter(description = "The chart id") @PathVariable String chartId, @Parameter(description = "The filters to apply, some can override chart definition like labels & namespace") @Body GlobalFilter globalFilter ) throws IOException { - ZonedDateTime startDate = globalFilter.getStartDate(); + String tenantId = tenantService.resolveTenant(); + Dashboard dashboard = dashboardRepository.get(tenantId, id).orElse(null); + if (dashboard == null) { + return null; + } + ZonedDateTime endDate = globalFilter.getEndDate(); + ZonedDateTime startDate = globalFilter.getStartDate(); if (startDate == null || endDate == null) { - throw new IllegalArgumentException("`startDate` and `endDate` filters are required."); + endDate = ZonedDateTime.now(); + startDate = endDate.minus(dashboard.getTimeWindow().getDefaultDuration()); } if (endDate.isBefore(startDate)) { throw new IllegalArgumentException("`endDate` must be after `startDate`."); } - String tenantId = tenantService.resolveTenant(); - Dashboard dashboard = dashboardRepository.get(tenantId, id).orElse(null); - if (dashboard == null) { - return null; - } - Duration windowDuration = Duration.ofSeconds(endDate.minus(Duration.ofSeconds(startDate.toEpochSecond())).toEpochSecond()); if (windowDuration.compareTo(dashboard.getTimeWindow().getMax()) > 0) { throw new IllegalArgumentException("The queried window is larger than the max allowed one.");