Merge pull request #15738 from resilient-tech/custom-columns-for-multi-select-dialog
feat: custom columns for `MultiSelectDialog`
This commit is contained in:
commit
ba60d44402
1 changed files with 12 additions and 13 deletions
|
|
@ -1,6 +1,6 @@
|
|||
frappe.ui.form.MultiSelectDialog = class MultiSelectDialog {
|
||||
constructor(opts) {
|
||||
/* Options: doctype, target, setters, get_query, action, add_filters_group, data_fields, primary_action_label */
|
||||
/* Options: doctype, target, setters, get_query, action, add_filters_group, data_fields, primary_action_label, columns */
|
||||
Object.assign(this, opts);
|
||||
this.for_select = this.doctype == "[Select]";
|
||||
if (!this.for_select) {
|
||||
|
|
@ -400,23 +400,22 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog {
|
|||
return this.results.filter(res => checked_values.includes(res.name));
|
||||
}
|
||||
|
||||
get_datatable_columns() {
|
||||
if (this.get_query && this.get_query().query && this.columns) return this.columns;
|
||||
|
||||
if (Array.isArray(this.setters))
|
||||
return ["name", ...this.setters.map(df => df.fieldname)];
|
||||
|
||||
return ["name", ...Object.keys(this.setters)];
|
||||
}
|
||||
|
||||
make_list_row(result = {}) {
|
||||
var me = this;
|
||||
// Make a head row by default (if result not passed)
|
||||
let head = Object.keys(result).length === 0;
|
||||
|
||||
let contents = ``;
|
||||
let columns = ["name"];
|
||||
|
||||
if ($.isArray(this.setters)) {
|
||||
for (let df of this.setters) {
|
||||
columns.push(df.fieldname);
|
||||
}
|
||||
} else {
|
||||
columns = columns.concat(Object.keys(this.setters));
|
||||
}
|
||||
|
||||
columns.forEach(function (column) {
|
||||
this.get_datatable_columns().forEach(function (column) {
|
||||
contents += `<div class="list-item__content ellipsis">
|
||||
${
|
||||
head ? `<span class="ellipsis text-muted" title="${__(frappe.model.unscrub(column))}">${__(frappe.model.unscrub(column))}</span>`
|
||||
|
|
@ -486,7 +485,7 @@ frappe.ui.form.MultiSelectDialog = class MultiSelectDialog {
|
|||
|
||||
get_filters_from_setters() {
|
||||
let me = this;
|
||||
let filters = this.get_query ? this.get_query().filters : {} || {};
|
||||
let filters = (this.get_query ? this.get_query().filters : {}) || {};
|
||||
let filter_fields = [];
|
||||
|
||||
if ($.isArray(this.setters)) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue