From 1eb9562a3cf20eb60fa57b44a0f39b711ed8f654 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Thu, 18 May 2017 11:54:20 +0530 Subject: [PATCH] Obey slickgrid's inline filter for (#3291) - Print PDF - Export to Excel Fixes frappe/erpnext#3747 --- frappe/desk/query_report.py | 5 +++++ .../js/frappe/views/reports/query_report.js | 22 +++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/frappe/desk/query_report.py b/frappe/desk/query_report.py index 069aec7a95..e1c570e341 100644 --- a/frappe/desk/query_report.py +++ b/frappe/desk/query_report.py @@ -127,6 +127,8 @@ def export_query(): report_name = data["report_name"] if isinstance(data.get("file_format_type"), basestring): file_format_type = data["file_format_type"] + if isinstance(data.get("visible_idx"), basestring): + visible_idx = json.loads(data.get("visible_idx")) if file_format_type == "Excel": @@ -150,6 +152,9 @@ def export_query(): result.append(row_list) else: result = result + data.result + + # filter rows by slickgrid's inline filter + result = [x for idx, x in enumerate(result) if idx == 0 or idx in visible_idx] from frappe.utils.xlsxutils import make_xlsx xlsx_file = make_xlsx(result, "Query Report") diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index 3302d7b89c..7f1387fa39 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -228,8 +228,15 @@ frappe.views.QueryReport = Class.extend({ print_settings: this.print_settings }); } else { + // rows filtered by inline_filter of slickgrid + var visible_idx = frappe.slickgrid_tools + .get_view_data(this.columns, this.dataView) + .map(row => row[0]).filter(idx => idx !== 'Sr No'); + var columns = this.grid.getColumns(); var data = this.grid.getData().getItems(); + data = data.filter(d => visible_idx.includes(d._id)); + var content = frappe.render_template("print_grid", { columns:columns, data:data, @@ -813,13 +820,13 @@ frappe.views.QueryReport = Class.extend({ frappe.prompt({fieldtype:"Select", label: __("Select File Type"), fieldname:"file_format_type", options:"Excel\nCSV", default:"Excel", reqd: 1}, function(data) { + var view_data = frappe.slickgrid_tools.get_view_data(me.columns, me.dataView); + var result = view_data.map(row => [row.splice(1)]); - if (data.file_format_type == "CSV") { + // rows filtered by inline_filter of slickgrid + var visible_idx = view_data.map(row => row[0]).filter(sr_no => sr_no !== 'Sr No'); - var result = $.map(frappe.slickgrid_tools.get_view_data(me.columns, me.dataView), - function(row) { - return [row.splice(1)]; - }); + if (data.file_format_type == "CSV") { frappe.tools.downloadify(result, null, me.title); } @@ -833,8 +840,9 @@ frappe.views.QueryReport = Class.extend({ cmd: 'frappe.desk.query_report.export_query', report_name: me.report_name, file_format_type: data.file_format_type, - filters: filters - }; + filters: filters, + visible_idx: visible_idx, + } open_url_post(frappe.request.url, args); }