ソースを参照

set the dynamic filters in the reports (#4539)

version-14
Manas Solanki 7年前
committed by Nabin Hait
コミット
db2a6093fb
2個のファイルの変更34行の追加17行の削除
  1. +12
    -6
      frappe/public/js/frappe/form/controls/dynamic_link.js
  2. +22
    -11
      frappe/public/js/frappe/views/reports/query_report.js

+ 12
- 6
frappe/public/js/frappe/form/controls/dynamic_link.js ファイルの表示

@@ -7,13 +7,19 @@ frappe.ui.form.ControlDynamicLink = frappe.ui.form.ControlLink.extend({
//for dialog box //for dialog box
return cur_dialog.get_value(this.df.options); return cur_dialog.get_value(this.df.options);
} }
if (cur_frm==null && cur_list){
//for list page
let list_filter = cur_list.wrapper.find("input[data-fieldname*="+this.df.options+"]");
if(list_filter.length > 0) {
return list_filter.val();
if (!cur_frm) {
const selector = `input[data-fieldname="${this.df.options}"]`;
let input = null;
if (cur_list) {
// for list page
input = cur_list.wrapper.find(selector);
}
if (cur_page) {
input = $(cur_page.page).find(selector);
}
if (input) {
return input.val();
} }
return $(cur_page.page).find("input[data-fieldname*="+this.df.options+"]").val();
} }
var options = frappe.model.get_value(this.df.parent, this.docname, this.df.options); var options = frappe.model.get_value(this.df.parent, this.docname, this.df.options);
// if(!options) { // if(!options) {


+ 22
- 11
frappe/public/js/frappe/views/reports/query_report.js ファイルの表示

@@ -335,34 +335,45 @@ frappe.views.QueryReport = Class.extend({
var $filters = $(this.parent).find('.page-form .filters'); var $filters = $(this.parent).find('.page-form .filters');
$(this.parent).find('.page-form').toggle($filters.length ? true : false); $(this.parent).find('.page-form').toggle($filters.length ? true : false);


// set the field 'query_report_filters_by_name' first as they can be used in
// setting/triggering the filters
this.set_filters_by_name();

this.setting_filters = true; this.setting_filters = true;
this.set_route_filters(); this.set_route_filters();
this.setting_filters = false; this.setting_filters = false;


this.set_filters_by_name();
this.flags.filters_set = true; this.flags.filters_set = true;
}, },
clear_filters: function() { clear_filters: function() {
this.filters = []; this.filters = [];
$(this.parent).find('.page-form .filters').remove(); $(this.parent).find('.page-form .filters').remove();
}, },
set_filters_by_name: function() {
frappe.query_report_filters_by_name = {};
for(var i in this.filters) {
frappe.query_report_filters_by_name[this.filters[i].df.fieldname] = this.filters[i];
}
},
set_route_filters: function() { set_route_filters: function() {
var me = this; var me = this;
if(frappe.route_options) { if(frappe.route_options) {
$.each(this.filters || [], function(i, f) {
if(frappe.route_options[f.df.fieldname]!=null) {
f.set_value(frappe.route_options[f.df.fieldname]);
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 => {
return () => {
const value = frappe.route_options[f.df.fieldname];
return f.set_value(value);
} }
}); });
}
frappe.route_options = null;
},
set_filters_by_name: function() {
frappe.query_report_filters_by_name = {};
promises.push(() => {
frappe.route_options = null;
});


for(var i in this.filters) {
frappe.query_report_filters_by_name[this.filters[i].df.fieldname] = this.filters[i];
return frappe.run_serially(promises);
} }

}, },
refresh: function() { refresh: function() {
// throttle // throttle


読み込み中…
キャンセル
保存