[init] add show report in prepared report

This commit is contained in:
Prateeksha Singh 2018-06-28 15:18:39 +05:30
parent 0cf28e70f5
commit c2714903fe
4 changed files with 57 additions and 17 deletions

View file

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

View file

@ -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:]
}

View file

@ -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",

View file

@ -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,