fix: add custom column based on link column
This commit is contained in:
parent
a8589ef484
commit
e2f1ecb780
1 changed files with 21 additions and 19 deletions
|
|
@ -1702,11 +1702,16 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
fieldname: "doctype",
|
||||
label: __("From Document Type"),
|
||||
options: this.linked_doctypes?.map((df) => ({
|
||||
label: df.doctype,
|
||||
value: df.doctype,
|
||||
label: df.doctype + " (" + frappe.unscrub(df.fieldname) + ")",
|
||||
value: JSON.stringify({
|
||||
doctype: df.doctype,
|
||||
fieldname: df.fieldname,
|
||||
}),
|
||||
})),
|
||||
change: () => {
|
||||
let doctype = d.get_value("doctype");
|
||||
const { doctype, fieldname } = JSON.parse(
|
||||
d.get_value("doctype")
|
||||
);
|
||||
frappe.model.with_doctype(doctype, () => {
|
||||
let options = frappe.meta
|
||||
.get_docfields(doctype)
|
||||
|
|
@ -1747,6 +1752,8 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
],
|
||||
primary_action: (values) => {
|
||||
const custom_columns = [];
|
||||
const { doctype, fieldname } = JSON.parse(values.doctype);
|
||||
Object.assign(values, { doctype, fieldname });
|
||||
let df = frappe.meta.get_docfield(values.doctype, values.field);
|
||||
const insert_after_index = this.columns.findIndex(
|
||||
(column) => column.label === values.insert_after
|
||||
|
|
@ -1774,17 +1781,14 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
field: values.field,
|
||||
doctype: values.doctype,
|
||||
names: Array.from(
|
||||
this.doctype_field_map[values.doctype].names
|
||||
this.doctype_field_map[values.doctype][fieldname]
|
||||
),
|
||||
},
|
||||
callback: (r) => {
|
||||
const custom_data = r.message;
|
||||
const link_field =
|
||||
this.doctype_field_map[values.doctype].fieldname;
|
||||
this.add_custom_column(
|
||||
custom_columns,
|
||||
custom_data,
|
||||
link_field,
|
||||
values,
|
||||
insert_after_index
|
||||
);
|
||||
|
|
@ -1866,13 +1870,7 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
}
|
||||
}
|
||||
|
||||
add_custom_column(
|
||||
custom_column,
|
||||
custom_data,
|
||||
link_field,
|
||||
new_column_data,
|
||||
insert_after_index
|
||||
) {
|
||||
add_custom_column(custom_column, custom_data, new_column_data, insert_after_index) {
|
||||
const column = this.prepare_columns(custom_column);
|
||||
const column_field = new_column_data.field;
|
||||
|
||||
|
|
@ -1881,9 +1879,9 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
this.data.forEach((row) => {
|
||||
if (column[0].fieldname.includes("-")) {
|
||||
row[column_field + "-" + frappe.scrub(new_column_data.doctype)] =
|
||||
custom_data[row[link_field]];
|
||||
custom_data[row[new_column_data.fieldname]];
|
||||
} else {
|
||||
row[column_field] = custom_data[row[link_field]];
|
||||
row[column_field] = custom_data[row[new_column_data.fieldname]];
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -1927,14 +1925,18 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
};
|
||||
})
|
||||
);
|
||||
|
||||
doctypes.forEach((doc) => {
|
||||
this.doctype_field_map[doc.doctype] = { fieldname: doc.fieldname, names: new Set() };
|
||||
if (!(doc.doctype in this.doctype_field_map))
|
||||
this.doctype_field_map[doc.doctype] = { [doc.fieldname]: new Set() };
|
||||
|
||||
if (!(doc.fieldname in this.doctype_field_map[doc.doctype]))
|
||||
this.doctype_field_map[doc.doctype][doc.fieldname] = new Set();
|
||||
});
|
||||
|
||||
this.data.forEach((row) => {
|
||||
doctypes.forEach((doc) => {
|
||||
this.doctype_field_map[doc.doctype].names.add(row[doc.fieldname]);
|
||||
row[doc.fieldname] &&
|
||||
this.doctype_field_map[doc.doctype][doc.fieldname].add(row[doc.fieldname]);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue