diff --git a/frappe/core/doctype/prepared_report/prepared_report.py b/frappe/core/doctype/prepared_report/prepared_report.py index 9f0694dbba..55ab471fca 100644 --- a/frappe/core/doctype/prepared_report/prepared_report.py +++ b/frappe/core/doctype/prepared_report/prepared_report.py @@ -38,8 +38,13 @@ def run_background(instance): instance.report_end_time = frappe.utils.now() instance.save() + frappe.publish_realtime( + 'report_generated', + {"report_name": instance.report_name}, + user=frappe.session.user + ) + # TODO: - # Show Alert # Send Email to user def remove_header_meta(columns): diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index 9dbca60c63..d73c09cb1d 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -36,7 +36,8 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { let tasks = [ this.setup_defaults, this.setup_page, - this.setup_report_wrapper + this.setup_report_wrapper, + this.setup_events ].map(fn => fn.bind(this)); this.init_promise = frappe.run_serially(tasks); return this.init_promise; @@ -59,6 +60,16 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { this.menu_items = []; } + setup_events() { + frappe.realtime.on("report_generated", (data) => { + if(data.report_name) { + let alert_message = `Report ${this.report_name} generated. + View`; + frappe.show_alert({message: alert_message, indicator: 'orange'}); + } + }) + } + load() { if (frappe.get_route().length < 2) { this.toggle_nothing_to_show(true); @@ -291,8 +302,10 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { }, callback: resolve })).then(r => { - const data = r.message; - frappe.msgprint("Prepared report initiated successfully. Track and access results here", "Notification"); + const data = r.message; + let alert_message = `Report initiated. You can track its status + here`; + frappe.show_alert({message: alert_message, indicator: 'orange'}); this.toggle_nothing_to_show(true); }); }