From 64ae24f0741111edb49a0a0327098c2b91e455ff Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Tue, 18 Dec 2018 13:17:04 +0530 Subject: [PATCH 1/2] fix(Kanban): Fix for New Kanban DDL issue --- .../desk/doctype/kanban_board/kanban_board.py | 12 +--- .../js/frappe/views/kanban/kanban_view.js | 55 +++++++++---------- 2 files changed, 28 insertions(+), 39 deletions(-) diff --git a/frappe/desk/doctype/kanban_board/kanban_board.py b/frappe/desk/doctype/kanban_board/kanban_board.py index a1df694f6e..b63d446d6d 100644 --- a/frappe/desk/doctype/kanban_board/kanban_board.py +++ b/frappe/desk/doctype/kanban_board/kanban_board.py @@ -8,7 +8,6 @@ import json from frappe import _ from frappe.model.document import Document from six import iteritems -from frappe.custom.doctype.custom_field.custom_field import create_custom_field class KanbanBoard(Document): @@ -130,17 +129,8 @@ def update_order(board_name, order): @frappe.whitelist() def quick_kanban_board(doctype, board_name, field_name, project=None): '''Create new KanbanBoard quickly with default options''' + doc = frappe.new_doc('Kanban Board') - - if field_name == 'kanban_column': - create_custom_field(doctype, { - 'label': 'Kanban Column', - 'fieldname': 'kanban_column', - 'fieldtype': 'Select', - 'hidden': 1, - 'owner': 'Administrator' - }) - meta = frappe.get_meta(doctype) options = '' diff --git a/frappe/public/js/frappe/views/kanban/kanban_view.js b/frappe/public/js/frappe/views/kanban/kanban_view.js index 74dc283326..0f85875233 100644 --- a/frappe/public/js/frappe/views/kanban/kanban_view.js +++ b/frappe/public/js/frappe/views/kanban/kanban_view.js @@ -225,21 +225,18 @@ frappe.views.KanbanView.setup_dropdown_in_sidebar = function(doctype, $dropdown) const fields = get_fields_for_dialog(); + let primary_action_label = fields.length > 1 ? __('Save') : ''; + let primary_action = fields.length > 1 ? + ({ board_name, field_name, project }) => { + make_kanban_board(board_name, field_name, project) + .then(() => dialog.hide(), (err) => frappe.msgprint(err)); + } : null; + dialog = new frappe.ui.Dialog({ title: __('New Kanban Board'), - fields: fields, - - primary_action_label: __('Save'), - primary_action(values) { - const custom_column = - values.custom_column !== undefined ? - values.custom_column : 1; - - let field_name = custom_column ? 'kanban_column' : values.field_name; - - make_kanban_board(values.board_name, field_name, values.project) - .then(() => dialog.hide(), (err) => frappe.msgprint(err)); - } + fields, + primary_action_label, + primary_action }); return dialog; } @@ -272,26 +269,28 @@ frappe.views.KanbanView.setup_dropdown_in_sidebar = function(doctype, $dropdown) }); if (select_fields.length > 0) { - fields = fields.concat([{ + fields.push({ fieldtype: 'Select', fieldname: 'field_name', label: __('Columns based on'), options: select_fields.map(df => ({label: df.label, value: df.fieldname})), default: select_fields[0], - depends_on: 'eval:doc.custom_column===0', - reqd: 1 - }, - - { - fieldtype: 'Check', - fieldname: 'custom_column', - label: __('Custom Column'), - default: 0, - onchange() { - const value = this.get_value(); - this.layout.set_df_property('field_name', 'reqd', !value); - } - }]); + reqd: 1, + }); + } else { + fields = [{ + fieldtype: 'HTML', + options: ` +
+

+ ${__('No fields found that can be used as a Kanban Column. Use the Customize Form to add a Custom Field of type "Select".')} +

+ + ${__('Customize Form')} + +
+ ` + }] } return fields; From ccea2e2b0076e085999cc7d902b5ba03787107cf Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Sat, 22 Dec 2018 00:22:10 +0530 Subject: [PATCH 2/2] style: Add semicolon --- frappe/public/js/frappe/views/kanban/kanban_view.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/views/kanban/kanban_view.js b/frappe/public/js/frappe/views/kanban/kanban_view.js index 0f85875233..edf3061b43 100644 --- a/frappe/public/js/frappe/views/kanban/kanban_view.js +++ b/frappe/public/js/frappe/views/kanban/kanban_view.js @@ -290,7 +290,7 @@ frappe.views.KanbanView.setup_dropdown_in_sidebar = function(doctype, $dropdown) ` - }] + }]; } return fields;