fix: add custom column based on link column

This commit is contained in:
venkat102 2025-02-11 12:13:43 +05:30
parent a8589ef484
commit e2f1ecb780

View file

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