generate prepared button report
This commit is contained in:
commit
301a66eb68
5 changed files with 47 additions and 34 deletions
|
|
@ -14,9 +14,13 @@ frappe.ui.form.on('Prepared Report', {
|
|||
let data = r.message;
|
||||
frappe.flags.prepared_report = {
|
||||
data: data,
|
||||
name: frm.doc.name
|
||||
name: frm.doc.name,
|
||||
generated_on: frm.doc.report_end_time,
|
||||
filters: JSON.parse(frm.doc.filters)
|
||||
};
|
||||
|
||||
frappe.route_options = JSON.parse(JSON.parse(frm.doc.filters));
|
||||
|
||||
frappe.set_route("query-report", frm.doc.report_name);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ def get_report_attachment_data(dn):
|
|||
|
||||
return {
|
||||
'columns': data[0],
|
||||
'result': data[-1:]
|
||||
'result': data[1:]
|
||||
}
|
||||
|
||||
@frappe.whitelist()
|
||||
|
|
|
|||
|
|
@ -153,6 +153,7 @@ def run(report_name, filters=None, user=None):
|
|||
doc_list = frappe.get_list("Prepared Report", filters={"status": "Completed", "ref_report_doctype": report})
|
||||
columns = []
|
||||
result = []
|
||||
doc = {}
|
||||
if len(doc_list):
|
||||
doc = frappe.get_doc("Prepared Report", doc_list[0])
|
||||
data = read_csv_content_from_attached_file(doc)
|
||||
|
|
@ -163,8 +164,9 @@ def run(report_name, filters=None, user=None):
|
|||
"prepared_report": True,
|
||||
"data": {
|
||||
"columns": columns,
|
||||
"result": result
|
||||
}
|
||||
"result": result,
|
||||
},
|
||||
"prepared_doc": doc
|
||||
}
|
||||
else:
|
||||
return generate_report_result(report, filters, user)
|
||||
|
|
|
|||
|
|
@ -364,7 +364,7 @@ frappe.ui.Page = Class.extend({
|
|||
* @param {object} action - function to be called when button is clicked
|
||||
* @param {string} group - Label of the group button
|
||||
*/
|
||||
add_inner_button: function(label, action, group) {
|
||||
add_inner_button: function(label, action, group, type="default") {
|
||||
var me = this;
|
||||
let _action = function() {
|
||||
let btn = $(this);
|
||||
|
|
@ -384,7 +384,7 @@ frappe.ui.Page = Class.extend({
|
|||
} else {
|
||||
var button = this.inner_toolbar.find('button[data-label="'+encodeURIComponent(label)+'"]');
|
||||
if( button.length == 0 ) {
|
||||
return $('<button data-label="'+encodeURIComponent(label)+'" class="btn btn-default btn-xs" style="margin-left: 10px;">'+__(label)+'</btn>')
|
||||
return $('<button data-label="'+encodeURIComponent(label)+`" class="btn btn-${type} btn-xs" style="margin-left: 10px;">`+__(label)+'</btn>')
|
||||
.on("click", _action)
|
||||
.appendTo(this.inner_toolbar.removeClass("hide"));
|
||||
} else {
|
||||
|
|
@ -412,6 +412,12 @@ frappe.ui.Page = Class.extend({
|
|||
}
|
||||
},
|
||||
|
||||
add_inner_message: function(message) {
|
||||
let $message = $(`<span class='inner-page-message text-muted small'>${message}</div>`);
|
||||
this.inner_toolbar.find('.inner-page-message').remove();
|
||||
this.inner_toolbar.removeClass("hide").prepend($message);
|
||||
},
|
||||
|
||||
clear_inner_toolbar: function() {
|
||||
this.inner_toolbar.empty().addClass("hide");
|
||||
},
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
set_route_filters() {
|
||||
if(frappe.route_options) {
|
||||
const fields = Object.keys(frappe.route_options);
|
||||
|
||||
const filters_to_set = this.filters.filter(f => fields.includes(f.df.fieldname));
|
||||
|
||||
const promises = filters_to_set.map(f => {
|
||||
|
|
@ -204,8 +205,9 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
|
||||
refresh() {
|
||||
const flags = frappe.flags.prepared_report;
|
||||
|
||||
if(flags) {
|
||||
const prepared_data = flags.data
|
||||
const prepared_data = flags.data;
|
||||
this.init_report_with_data(prepared_data);
|
||||
this.toggle_to_button();
|
||||
return;
|
||||
|
|
@ -240,30 +242,8 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
} else {
|
||||
this.toggle_nothing_to_show(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
render_background_report() {
|
||||
this.toggle_message(true);
|
||||
let mandatory = this.filters.filter(f => f.df.reqd);
|
||||
let missing_mandatory = mandatory.filter(f => !f.get_value());
|
||||
if (!missing_mandatory.length){
|
||||
let filters = this.get_filter_values(true);
|
||||
return new Promise(resolve => frappe.call({
|
||||
method: 'frappe.desk.query_report.background_enqueue_run',
|
||||
type: 'GET',
|
||||
args: {
|
||||
report_name: this.report_name,
|
||||
filters: filters
|
||||
},
|
||||
callback: resolve
|
||||
})).then(r => {
|
||||
const data = r.message;
|
||||
this.toggle_nothing_to_show(true);
|
||||
frappe.msgprint("Prepared report initiated successfully. Track and access results <a class='text-info' target='_blank' href="+data.redirect_url+">here</a>", "Notification");
|
||||
});
|
||||
}
|
||||
}
|
||||
render_report(data) {
|
||||
this.columns = this.prepare_columns(data.columns);
|
||||
this.data = this.prepare_data(data.result);
|
||||
|
|
@ -630,12 +610,33 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
}
|
||||
toggle_to_button(){
|
||||
this.page.add_inner_button(__("Download Report"), function () {
|
||||
frappe.call({
|
||||
method:"frappe.core.doctype.prepared_report.prepared_report.download_attachment",
|
||||
args: {"dn": flags.name}
|
||||
});
|
||||
});
|
||||
frappe.call({
|
||||
method:"frappe.core.doctype.prepared_report.prepared_report.download_attachment",
|
||||
args: {"dn": flags.name}
|
||||
});
|
||||
});
|
||||
|
||||
this.page.add_inner_button(__("Generate Prepared Report"), () => {
|
||||
let mandatory = this.filters.filter(f => f.df.reqd);
|
||||
let missing_mandatory = mandatory.filter(f => !f.get_value());
|
||||
if (!missing_mandatory.length){
|
||||
let filters = this.get_filter_values(true);
|
||||
return new Promise(resolve => frappe.call({
|
||||
method: 'frappe.desk.query_report.background_enqueue_run',
|
||||
type: 'GET',
|
||||
args: {
|
||||
report_name: this.report_name,
|
||||
filters: filters
|
||||
},
|
||||
callback: resolve
|
||||
})).then(r => {
|
||||
const data = r.message;
|
||||
frappe.msgprint("Prepared report initiated successfully. Track and access results <a class='text-info' target='_blank' href="+data.redirect_url+">here</a>", "Notification");
|
||||
this.toggle_nothing_to_show(true);
|
||||
});
|
||||
}
|
||||
});
|
||||
this.page.add_inner_message(__("This report was generated on " + flags.generated_on));
|
||||
}
|
||||
toggle_message(flag, message) {
|
||||
if (flag) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue