Merge pull request #16509 from gavindsouza/kanban-fixes
fix: new Kanban Dialog
This commit is contained in:
commit
8ffbef08ae
3 changed files with 44 additions and 42 deletions
|
|
@ -13,8 +13,9 @@ class KanbanBoard(Document):
|
|||
def validate(self):
|
||||
self.validate_column_name()
|
||||
|
||||
def on_update(self):
|
||||
def on_change(self):
|
||||
frappe.clear_cache(doctype=self.reference_doctype)
|
||||
frappe.cache().delete_keys("_user_settings")
|
||||
|
||||
def before_insert(self):
|
||||
for column in self.columns:
|
||||
|
|
@ -245,9 +246,3 @@ def set_indicator(board_name, column_name, indicator):
|
|||
|
||||
board.save()
|
||||
return board
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def save_filters(board_name, filters):
|
||||
"""Save filters silently"""
|
||||
frappe.db.set_value("Kanban Board", board_name, "filters", filters, update_modified=False)
|
||||
|
|
|
|||
|
|
@ -262,19 +262,27 @@ frappe.views.ListViewSelect = class ListViewSelect {
|
|||
|
||||
setup_kanban_boards() {
|
||||
const last_opened_kanban =
|
||||
frappe.model.user_settings[this.doctype]["Kanban"] &&
|
||||
frappe.model.user_settings[this.doctype]["Kanban"]
|
||||
.last_kanban_board;
|
||||
if (last_opened_kanban) {
|
||||
frappe.set_route(
|
||||
"list",
|
||||
?.last_kanban_board;
|
||||
|
||||
if (!last_opened_kanban) {
|
||||
return frappe.views.KanbanView.show_kanban_dialog(
|
||||
this.doctype,
|
||||
"kanban",
|
||||
last_opened_kanban
|
||||
true
|
||||
);
|
||||
} else {
|
||||
frappe.views.KanbanView.show_kanban_dialog(this.doctype, true);
|
||||
}
|
||||
frappe.db.exists("Kanban Board", last_opened_kanban).then(exists => {
|
||||
if (exists) {
|
||||
frappe.set_route(
|
||||
"list",
|
||||
this.doctype,
|
||||
"kanban",
|
||||
last_opened_kanban
|
||||
);
|
||||
} else {
|
||||
frappe.views.KanbanView.show_kanban_dialog(this.doctype, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
get_calendars() {
|
||||
|
|
|
|||
|
|
@ -107,13 +107,7 @@ frappe.views.KanbanView = class KanbanView extends frappe.views.ListView {
|
|||
save_kanban_board_filters() {
|
||||
const filters = this.filter_area.get();
|
||||
|
||||
frappe.call({
|
||||
method: 'frappe.desk.doctype.kanban_board.kanban_board.save_filters',
|
||||
args: {
|
||||
board_name: this.board_name,
|
||||
filters: filters
|
||||
}
|
||||
}).then(r => {
|
||||
frappe.db.set_value("Kanban Board", this.board_name, "filters", filters).then(r => {
|
||||
if (r.exc) {
|
||||
frappe.show_alert({
|
||||
indicator: 'red',
|
||||
|
|
@ -253,25 +247,36 @@ frappe.views.KanbanView.show_kanban_dialog = function (doctype, show_existing) {
|
|||
}
|
||||
|
||||
function new_kanban_dialog(kanbans, show_existing) {
|
||||
/* Kanban dialog can show either "Save" or "Customize Form" option depending if any Select fields exist in the DocType for Kanban creation
|
||||
*/
|
||||
if (dialog) return dialog;
|
||||
|
||||
const fields = get_fields_for_dialog(kanbans.map(kanban => kanban.name), show_existing);
|
||||
|
||||
let primary_action_label = __('Save');
|
||||
const dialog_fields = get_fields_for_dialog(kanbans.map(kanban => kanban.name), show_existing);
|
||||
const select_fields = frappe.get_meta(doctype).fields.filter(df => {
|
||||
return (df.fieldtype === 'Select') && (df.fieldname !== 'kanban_column')
|
||||
});
|
||||
const to_save = select_fields.length > 0;
|
||||
const primary_action_label = to_save ? __('Save') : __('Customize Form');
|
||||
|
||||
let primary_action = () => {
|
||||
const values = dialog.get_values();
|
||||
if (!values.selected_kanban || values.selected_kanban == 'Create New Board') {
|
||||
make_kanban_board(values.board_name, values.field_name, values.project)
|
||||
.then(() => dialog.hide(), (err) => frappe.msgprint(err));
|
||||
if (to_save) {
|
||||
const values = dialog.get_values();
|
||||
if (!values.selected_kanban || values.selected_kanban == 'Create New Board') {
|
||||
make_kanban_board(values.board_name, values.field_name, values.project).then(
|
||||
() => dialog.hide(),
|
||||
(err) => frappe.msgprint(err)
|
||||
);
|
||||
} else {
|
||||
frappe.set_route(kanbans.find(kanban => kanban.name == values.selected_kanban).route);
|
||||
}
|
||||
} else {
|
||||
frappe.set_route(kanbans.find(kanban => kanban.name == values.selected_kanban).route);
|
||||
frappe.set_route("Form", "Customize Form", {"doc_type": doctype});
|
||||
}
|
||||
};
|
||||
|
||||
dialog = new frappe.ui.Dialog({
|
||||
title: __('New Kanban Board'),
|
||||
fields,
|
||||
fields: dialog_fields,
|
||||
primary_action_label,
|
||||
primary_action
|
||||
});
|
||||
|
|
@ -280,6 +285,9 @@ frappe.views.KanbanView.show_kanban_dialog = function (doctype, show_existing) {
|
|||
|
||||
function get_fields_for_dialog(kanban_options, show_existing = false) {
|
||||
kanban_options.push('Create New Board');
|
||||
const select_fields = frappe.get_meta(doctype).fields.filter(df => {
|
||||
return df.fieldtype === 'Select' && df.fieldname !== 'kanban_column';
|
||||
});
|
||||
|
||||
let fields = [
|
||||
{
|
||||
|
|
@ -290,6 +298,7 @@ frappe.views.KanbanView.show_kanban_dialog = function (doctype, show_existing) {
|
|||
depends_on: `eval: ${show_existing}`,
|
||||
mandatory_depends_on: `eval: ${show_existing}`,
|
||||
options: kanban_options,
|
||||
default: kanban_options[0]
|
||||
},
|
||||
{
|
||||
fieldname: 'new_kanban_board_sb',
|
||||
|
|
@ -315,13 +324,6 @@ frappe.views.KanbanView.show_kanban_dialog = function (doctype, show_existing) {
|
|||
});
|
||||
}
|
||||
|
||||
const select_fields =
|
||||
frappe.get_meta(doctype).fields
|
||||
.filter(df => {
|
||||
return df.fieldtype === 'Select' &&
|
||||
df.fieldname !== 'kanban_column';
|
||||
});
|
||||
|
||||
if (select_fields.length > 0) {
|
||||
fields.push({
|
||||
fieldtype: 'Select',
|
||||
|
|
@ -339,9 +341,6 @@ frappe.views.KanbanView.show_kanban_dialog = function (doctype, show_existing) {
|
|||
<p class="text-medium">
|
||||
${__('No fields found that can be used as a Kanban Column. Use the Customize Form to add a Custom Field of type "Select".')}
|
||||
</p>
|
||||
<a class="btn btn-xs btn-default" href="/app/customize-form?doc_type=${doctype}">
|
||||
${__('Customize Form')}
|
||||
</a>
|
||||
</div>
|
||||
`
|
||||
}];
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue