diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index f790aea680..6e085f92f3 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -762,9 +762,39 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { let data = r.message; this.hide_status(); clearInterval(this.interval); - + clearInterval(this.stale_report_interval); + this.refreshed_at = frappe.datetime.now_datetime(); this.execution_time = data.execution_time || 0.1; + const check_if_report_is_stale = () => { + let generated_at = this.prepared_report + ? this.prepared_report_document.report_end_time + : this.refreshed_at; + let pretty_diff = frappe.datetime.comment_when(generated_at); + const days_old = frappe.datetime.get_day_diff( + frappe.datetime.now_datetime(), + generated_at + ); + const minutes_old = frappe.datetime.get_minute_diff( + frappe.datetime.now_datetime(), + generated_at + ); + if (days_old > 1) { + pretty_diff = `${pretty_diff}`; + } + if (minutes_old >= 1) { + this.show_status(` +
+ + ${__("This report was generated {0}.", [pretty_diff])} + +
+ `); + } + }; + + this.stale_report_interval = setInterval(check_if_report_is_stale, 60000); + if (data.custom_filters) { this.set_filters(data.custom_filters); this.previous_filters = data.custom_filters; @@ -787,6 +817,7 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { }); } this.add_prepared_report_buttons(data.doc); + check_if_report_is_stale(); } if (data.report_summary) { @@ -865,28 +896,6 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { }, __("Actions") ); - - let pretty_diff = frappe.datetime.comment_when(doc.report_end_time); - const days_old = frappe.datetime.get_day_diff( - frappe.datetime.now_datetime(), - doc.report_end_time - ); - if (days_old > 1) { - pretty_diff = `${pretty_diff}`; - } - const part1 = __("This report was generated {0}.", [pretty_diff]); - const part2 = __("To get the updated report, click on {0}.", [__("Rebuild")]); - const part3 = __("See all past reports."); - - this.show_status(` -
- - ${part1} - ${part2} - ${part3} - -
- `); } // Three cases