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);
});
}