From 7abb3e48e1df3b5a266d8d8ce9e0fd82fd0d5ca6 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Tue, 28 Feb 2023 10:56:56 +0530 Subject: [PATCH] fix: only allow to add existing number card on workspace separated logic for dashboard and workspace implementation --- .../js/frappe/views/workspace/blocks/block.js | 1 + .../views/workspace/blocks/number_card.js | 1 + .../public/js/frappe/widgets/base_widget.js | 1 + .../js/frappe/widgets/number_card_widget.js | 2 +- .../public/js/frappe/widgets/widget_dialog.js | 34 +++++++++++++++++-- 5 files changed, 36 insertions(+), 3 deletions(-) diff --git a/frappe/public/js/frappe/views/workspace/blocks/block.js b/frappe/public/js/frappe/views/workspace/blocks/block.js index 54c59df05a..f00e0c252d 100644 --- a/frappe/public/js/frappe/views/workspace/blocks/block.js +++ b/frappe/public/js/frappe/views/workspace/blocks/block.js @@ -95,6 +95,7 @@ export default class Block { const dialog_class = get_dialog_constructor(widget_type); let block_name = block + "_name"; this.dialog = new dialog_class({ + for_workspace: true, label: this.label, type: widget_type, primary_action: (widget) => { diff --git a/frappe/public/js/frappe/views/workspace/blocks/number_card.js b/frappe/public/js/frappe/views/workspace/blocks/number_card.js index a952d7666b..9b57bb1e29 100644 --- a/frappe/public/js/frappe/views/workspace/blocks/number_card.js +++ b/frappe/public/js/frappe/views/workspace/blocks/number_card.js @@ -23,6 +23,7 @@ export default class NumberCard extends Block { allow_hiding: false, allow_edit: true, allow_resize: true, + for_workspace: true, }; } diff --git a/frappe/public/js/frappe/widgets/base_widget.js b/frappe/public/js/frappe/widgets/base_widget.js index 714a447b94..63d1ee4db2 100644 --- a/frappe/public/js/frappe/widgets/base_widget.js +++ b/frappe/public/js/frappe/widgets/base_widget.js @@ -131,6 +131,7 @@ export default class Widget { const dialog_class = get_dialog_constructor(this.widget_type); this.edit_dialog = new dialog_class({ + for_workspace: this.options?.for_workspace, label: this.label, type: this.widget_type, values: this.get_config(), diff --git a/frappe/public/js/frappe/widgets/number_card_widget.js b/frappe/public/js/frappe/widgets/number_card_widget.js index 7eb0a49427..af89f95197 100644 --- a/frappe/public/js/frappe/widgets/number_card_widget.js +++ b/frappe/public/js/frappe/widgets/number_card_widget.js @@ -11,7 +11,7 @@ export default class NumberCardWidget extends Widget { get_config() { return { name: this.name, - number_card_name: this.number_card_name || this.name, + number_card_name: this.number_card_name, label: this.label, color: this.color, hidden: this.hidden, diff --git a/frappe/public/js/frappe/widgets/widget_dialog.js b/frappe/public/js/frappe/widgets/widget_dialog.js index 9462feac2f..0062e42ac5 100644 --- a/frappe/public/js/frappe/widgets/widget_dialog.js +++ b/frappe/public/js/frappe/widgets/widget_dialog.js @@ -511,6 +511,32 @@ class NumberCardDialog extends WidgetDialog { get_fields() { let fields; + + if (this.for_workspace) { + return [ + { + fieldtype: "Link", + fieldname: "number_card_name", + label: __("Number Cards"), + options: "Number Card", + reqd: 1, + get_query: () => { + return { + query: "frappe.desk.doctype.number_card.number_card.get_cards_for_user", + filters: { + document_type: this.document_type, + }, + }; + }, + }, + { + fieldtype: "Data", + fieldname: "label", + label: __("Label"), + }, + ]; + } + fields = [ { fieldtype: "Select", @@ -605,7 +631,7 @@ class NumberCardDialog extends WidgetDialog { } setup_dialog_events() { - if (!this.document_type) { + if (!this.document_type && !this.for_workspace) { if (this.default_values && this.default_values["doctype"]) { this.document_type = this.default_values["doctype"]; this.setup_filter(this.default_values["doctype"]); @@ -638,12 +664,16 @@ class NumberCardDialog extends WidgetDialog { } process_data(data) { + if (this.for_workspace) { + data.label = data.label ? data.label : data.number_card_name; + return data; + } + if (data.new_or_existing == "Existing Card") { data.name = data.card; } data.stats_filter = this.filter_group && JSON.stringify(this.filter_group.get_filters()); data.document_type = this.document_type; - data.label = data.label ? data.label : data.card; return data; } }