fix: kanban switcher in page custom actions

This commit is contained in:
prssanna 2021-01-21 10:30:16 +05:30
parent e54a1262b4
commit 3026801cf0
3 changed files with 38 additions and 18 deletions

View file

@ -113,16 +113,9 @@ frappe.views.ListViewSelect = class ListViewSelect
condition: true,
action: () => this.setup_kanban_boards(),
current_view_handler: () => {
frappe.views.KanbanView.get_kanbans(this.doctype).then((kanbans) => {
this.setup_dropdown_in_sidebar(
'Kanban',
kanbans,
{
label: __('New Kanban Board'),
action: () => frappe.views.KanbanView.show_kanban_dialog(this.doctype)
}
);
});
frappe.views.KanbanView.get_kanbans(this.doctype).then((kanbans) =>
this.setup_kanban_switcher(kanbans)
);
}
},
}
@ -154,7 +147,7 @@ frappe.views.ListViewSelect = class ListViewSelect
</div>`;
} else {
items.map(item => {
if (item.name == frappe.utils.to_title_case(frappe.get_route().slice(-1)[0] || '')) {
if (item.name == this.get_page_name()) {
placeholder = item.name;
}
html += `<li><a class="dropdown-item" href="${item.route}">${item.name}</a></li>`;
@ -173,6 +166,33 @@ frappe.views.ListViewSelect = class ListViewSelect
views_wrapper.removeClass('hide');
}
setup_kanban_switcher(kanbans) {
const kanban_switcher =
this.page.add_custom_button_group(
__('Select Kanban'), null, this.list_view.$filter_section
);
kanbans.map(k => {
this.page.add_custom_menu_item(
kanban_switcher,
k.name,
() => this.set_route('kanban', k.name),
false
);
});
this.page.add_custom_menu_item(
kanban_switcher,
__('Create New Kanban Board'),
() => frappe.views.KanbanView.show_kanban_dialog(this.doctype),
true
);
}
get_page_name() {
return frappe.utils.to_title_case(frappe.get_route().slice(-1)[0] || '')
}
get_reports() {
// add reports linked to this doctype to the dropdown
let added = [];

View file

@ -436,9 +436,9 @@ frappe.ui.Page = Class.extend({
if (standard) {
$li.appendTo(parent);
} else {
this.divider = parent.find(".divider");
this.divider = parent.find(".dropdown-divider");
if(!this.divider.length) {
this.divider = $('<li class="divider user-action"></li>').prependTo(parent);
this.divider = $('<li class="dropdown-divider user-action"></li>').prependTo(parent);
}
$li.addClass("user-action").insertBefore(this.divider);
}
@ -506,7 +506,7 @@ frappe.ui.Page = Class.extend({
},
add_divider: function() {
return $('<li class="divider"></li>').appendTo(this.menu);
return $('<li class="dropdown-divider"></li>').appendTo(this.menu);
},
get_or_add_inner_group_button: function(label) {
@ -693,7 +693,7 @@ frappe.ui.Page = Class.extend({
add_custom_button_group: function(label, icon, parent) {
let dropdown_label = `<span class="hidden-xs">
<span class="custom-btn-group-label">${__(label)}</span>
<span class="caret"></span>
${frappe.utils.icon('select', 'xs')}
</span>`;
if (icon) {
@ -708,7 +708,7 @@ frappe.ui.Page = Class.extend({
}
let custom_btn_group = $(`
<div class="custom-btn-group hide">
<div class="custom-btn-group">
<button type="button" class="btn btn-default btn-sm ellipsis" data-toggle="dropdown" aria-expanded="false">
${dropdown_label}
</button>
@ -717,7 +717,7 @@ frappe.ui.Page = Class.extend({
`);
if (!parent) parent = this.custom_actions;
this.custom_actions.removeClass('hide').append(custom_btn_group);
parent.removeClass('hide').append(custom_btn_group);
return custom_btn_group.find('.dropdown-menu');
},

View file

@ -205,7 +205,7 @@ frappe.views.KanbanView.get_kanbans = function (doctype) {
.then((kanban_boards) => {
if (kanban_boards) {
kanban_boards.forEach(board => {
let route = `/app/${frappe.router.slug(board.reference_doctype)}/kanban/${board.name}`;
let route = `/app/${frappe.router.slug(board.reference_doctype)}/view/kanban/${board.name}`;
kanbans.push({ name: board.name, route: route });
});
}