diff --git a/frappe/core/doctype/prepared_report/prepared_report.js b/frappe/core/doctype/prepared_report/prepared_report.js index 7b5bb160c6..3081d76030 100644 --- a/frappe/core/doctype/prepared_report/prepared_report.js +++ b/frappe/core/doctype/prepared_report/prepared_report.js @@ -2,7 +2,23 @@ // For license information, please see license.txt frappe.ui.form.on('Prepared Report', { - refresh: function() { + refresh: function(frm) { + frm.add_custom_button(__("Show Report"), function() { + return frm.call({ + method: "frappe.core.doctype.prepared_report.prepared_report.get_report_attachment_data", + args: { + dn: frm.doc.name + }, + callback: function(r) { + if(r.message) { + let data = r.message; + frappe.flags.prepared_report_data = data; + + frappe.set_route("query-report", frm.doc.report_name); + } + } + }); + }); } }); diff --git a/frappe/core/doctype/prepared_report/prepared_report.py b/frappe/core/doctype/prepared_report/prepared_report.py index 185d674154..2fd550886c 100644 --- a/frappe/core/doctype/prepared_report/prepared_report.py +++ b/frappe/core/doctype/prepared_report/prepared_report.py @@ -12,7 +12,7 @@ from frappe.model.document import Document from frappe.utils.background_jobs import enqueue from frappe.desk.query_report import generate_report_result, get_columns_dict from frappe.utils.file_manager import save_file -from frappe.utils.csvutils import to_csv +from frappe.utils.csvutils import to_csv, read_csv_content_from_attached_file class PreparedReport(Document): @@ -55,3 +55,14 @@ def create_csv_file(columns, data, dt, dn): decode=True, is_private=False) + +@frappe.whitelist() +def get_report_attachment_data(dn): + + doc = frappe.get_doc("Prepared Report", dn) + data = read_csv_content_from_attached_file(doc) + + return { + 'columns': data[0], + 'result': data[-1:] + } diff --git a/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.json b/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.json index d0b2eb19c2..a907ccfa81 100644 --- a/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.json +++ b/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.json @@ -6,12 +6,12 @@ "doctype": "Report", "idx": 3, "is_standard": "Yes", - "modified": "2018-06-26 23:25:25.154670", + "modified": "2018-06-28 13:50:17.934400", "modified_by": "Administrator", "module": "Core", "name": "Permitted Documents For User", "owner": "Administrator", - "prepared_report": 0, + "prepared_report": 1, "ref_doctype": "User", "report_name": "Permitted Documents For User", "report_type": "Script Report", diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index 48999a8bb6..0bd406b17a 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -206,6 +206,13 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { refresh() { this.toggle_message(true); const filters = this.get_filter_values(true); + + const prepared_data = frappe.flags.prepared_report_data + if(prepared_data) { + this.init_report_with_data(prepared_data); + return; + } + return new Promise(resolve => frappe.call({ method: 'frappe.desk.query_report.run', type: 'GET', @@ -215,20 +222,24 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { }, callback: resolve })).then(r => { - const data = r.message; - if (data.prepared_report){ - this.toggle_button(true, data.file_attachment); - }else{ - this.toggle_message(false); - if (data.result && data.result.length) { - this.render_chart(data); - this.render_report(data); - } else { - this.toggle_nothing_to_show(true); - } - } + this.init_report_with_data(r.message); }); } + + init_report_with_data(data) { + if (data.prepared_report){ + this.toggle_button(true, data.file_attachment); + }else{ + this.toggle_message(false); + if (data.result && data.result.length) { + this.render_chart(data); + this.render_report(data); + } else { + this.toggle_nothing_to_show(true); + } + } + } + render_background_report() { this.toggle_message(true); const filters = this.get_filter_values(true); @@ -249,6 +260,8 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { render_report(data) { this.columns = this.prepare_columns(data.columns); this.data = this.prepare_data(data.result); + + console.log(data.columns.slice(0, 2), data); this.tree_report = this.data.some(d => 'indent' in d); const columns = this.get_visible_columns(); @@ -258,7 +271,7 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { } this.datatable = new DataTable(this.$report[0], { - columns: columns, + columns: columns.slice(0, 2), data: this.data, inlineFilters: true, treeView: this.tree_report,