Merge pull request #7067 from prssanna/assigned-to
feat(Sidebar): Add "Assigned To" Dropdown
This commit is contained in:
commit
2067792264
4 changed files with 42 additions and 15 deletions
|
|
@ -10,21 +10,14 @@ frappe.listview_settings['ToDo'] = {
|
|||
},
|
||||
hide_name_column: true,
|
||||
refresh: function(me) {
|
||||
// override assigned to me by owner
|
||||
if (me.todo_sidebar_setup) return;
|
||||
|
||||
me.page.sidebar.find(".assigned-to-me a").off("click").on("click", function() {
|
||||
me.filter_area.remove("assigned_by");
|
||||
me.filter_area.add([[me.doctype, "owner", '=', frappe.session.user]]);
|
||||
});
|
||||
|
||||
// add assigned by me
|
||||
me.page.add_sidebar_item(__("Assigned By Me"), function() {
|
||||
me.filter_area.remove("owner");
|
||||
me.filter_area.add([[me.doctype, "assigned_by", '=', frappe.session.user]]);
|
||||
}, ".assigned-to-me");
|
||||
}, ('.list-link[data-view="Kanban"]'));
|
||||
|
||||
me.todo_sidebar_setup = true;
|
||||
},
|
||||
add_fields: ["reference_type", "reference_name"],
|
||||
}
|
||||
}
|
||||
|
|
@ -24,3 +24,10 @@ def set_list_settings(doctype, values):
|
|||
frappe.clear_messages()
|
||||
doc.update(json.loads(values))
|
||||
doc.save()
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_user_assignments_and_count():
|
||||
user_list = frappe.get_list("User", filters={"user_type": "System User"})
|
||||
assignment_data = sorted([{"count":frappe.db.count('ToDo', filters = {'reference_type': 'Issue', 'owner': user['name'], 'status': 'Open'}),
|
||||
"name": user['name']} for user in user_list], key=lambda k: k['count'], reverse = True)
|
||||
return assignment_data
|
||||
|
|
@ -45,8 +45,12 @@
|
|||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li class="assigned-to-me">
|
||||
<a>{%= __("Assigned To Me") %}</a>
|
||||
<li class="assigned-to">
|
||||
<a class = "dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
{%= __("Assigned To") %} <span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu assigned-dropdown" style="max-height: 300px; overflow-y: auto;">
|
||||
</ul>
|
||||
</li>
|
||||
{% if(frappe.help.has_help(doctype)) { %}
|
||||
<li><a class="help-link" data-doctype="{{ doctype }}">{{ __("Help") }}</a></li>
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ frappe.views.ListSidebar = class ListSidebar {
|
|||
|
||||
this.setup_reports();
|
||||
this.setup_list_filter();
|
||||
this.setup_assigned_to_me();
|
||||
this.setup_assigned_to();
|
||||
this.setup_views();
|
||||
this.setup_kanban_boards();
|
||||
this.setup_calendar_view();
|
||||
|
|
@ -216,12 +216,35 @@ frappe.views.ListSidebar = class ListSidebar {
|
|||
});
|
||||
}
|
||||
|
||||
setup_assigned_to_me() {
|
||||
this.page.sidebar.find(".assigned-to-me a").on("click", () => {
|
||||
this.list_view.filter_area.add(this.list_view.doctype, "_assign", "like", `%${frappe.session.user}%`);
|
||||
setup_assigned_to() {
|
||||
let dropdown = this.page.sidebar.find('.assigned-dropdown');
|
||||
if(this.doctype === 'ToDo') {
|
||||
$('.assigned-to').remove();
|
||||
}
|
||||
frappe.call('frappe.desk.listview.get_user_assignments_and_count').then((data) => {
|
||||
let current_user_count = data.message.find(user => user.name === frappe.session.user).count;
|
||||
this.get_html_for_assigned(frappe.session.user, current_user_count).appendTo(dropdown);
|
||||
let user_list = data.message.filter(user => !['Guest', frappe.session.user, 'Administrator'].includes(user.name));
|
||||
user_list.forEach((user) => {
|
||||
this.get_html_for_assigned(user.name, user.count).appendTo(dropdown);
|
||||
});
|
||||
$(".assigned-dropdown li a").on("click", (e) => {
|
||||
let assigned_user = $(e.currentTarget).find($('.assigned-user')).text();
|
||||
if(assigned_user === 'Me') assigned_user = frappe.session.user;
|
||||
this.list_view.filter_area.remove('_assign');
|
||||
this.list_view.filter_area.add(this.list_view.doctype, "_assign", "like", `%${assigned_user}%`);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
get_html_for_assigned(name, count) {
|
||||
if (name === frappe.session.user) name='Me';
|
||||
if (count > 99) count='99+';
|
||||
let html = $('<li class="assigned"><a class="badge-hover" role="assigned-item"><span class="assigned-user">'
|
||||
+ name + '</span><span class="badge pull-right" style="position:relative">' + count + '</span></a></li>');
|
||||
return html;
|
||||
}
|
||||
|
||||
setup_upgrade_box() {
|
||||
let upgrade_list = $(`<ul class="list-unstyled sidebar-menu"></ul>`).appendTo(this.sidebar);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue