fix: show desktop icons instead of workspaces
This commit is contained in:
parent
a1a7e84b5e
commit
0bd2803c0e
2 changed files with 81 additions and 20 deletions
|
|
@ -5,7 +5,7 @@ frappe.ui.SidebarHeader = class SidebarHeader {
|
|||
this.drop_down_expanded = false;
|
||||
this.title = this.sidebar.sidebar_title;
|
||||
const me = this;
|
||||
this.sibling_workspaces = this.fetch_sibling_workspaces();
|
||||
this.sibling_workspaces = this.fetch_related_icons();
|
||||
this.dropdown_items = [
|
||||
{
|
||||
name: "workspaces",
|
||||
|
|
@ -81,29 +81,32 @@ frappe.ui.SidebarHeader = class SidebarHeader {
|
|||
this.populate_dropdown_menu();
|
||||
this.setup_select_options();
|
||||
}
|
||||
fetch_sibling_workspaces() {
|
||||
|
||||
fetch_related_icons() {
|
||||
let sibling_workspaces = [];
|
||||
if (frappe.current_app) {
|
||||
let workspaces = [...frappe.current_app.workspaces];
|
||||
workspaces.splice(workspaces.indexOf(this.title), 1);
|
||||
let workspaces = [...frappe.boot.desktop_icons];
|
||||
workspaces.splice(
|
||||
workspaces.indexOf(frappe.utils.get_desktop_icon_by_label(this.title)),
|
||||
1
|
||||
);
|
||||
workspaces.forEach((w) => {
|
||||
let item = {
|
||||
name: w.toLowerCase(),
|
||||
label: w,
|
||||
url: frappe.utils.generate_route({
|
||||
type: "Workspace",
|
||||
route: frappe.router.slug(w),
|
||||
}),
|
||||
};
|
||||
if (frappe.utils.get_desktop_icon(w, frappe.boot.desktop_icon_style)) {
|
||||
item.icon_url = frappe.utils.get_desktop_icon(
|
||||
w,
|
||||
frappe.boot.desktop_icon_style
|
||||
);
|
||||
} else {
|
||||
item.icon_html = frappe.utils.desktop_icon(w, "gray", "sm");
|
||||
if (w.app && w.app == frappe.current_app.app_name) {
|
||||
let item = {
|
||||
name: w.label.toLowerCase(),
|
||||
label: w.label,
|
||||
url: frappe.utils.get_route_for_icon(w),
|
||||
};
|
||||
if (frappe.utils.get_desktop_icon(w.label, frappe.boot.desktop_icon_style)) {
|
||||
item.icon_url = frappe.utils.get_desktop_icon(
|
||||
w.label,
|
||||
frappe.boot.desktop_icon_style
|
||||
);
|
||||
} else {
|
||||
item.icon_html = frappe.utils.desktop_icon(w.label, "gray", "sm");
|
||||
}
|
||||
sibling_workspaces.push(item);
|
||||
}
|
||||
sibling_workspaces.push(item);
|
||||
});
|
||||
return sibling_workspaces;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1253,6 +1253,64 @@ Object.assign(frappe.utils, {
|
|||
},
|
||||
image_path: "/assets/frappe/images/leaflet/",
|
||||
},
|
||||
get_route_for_icon(desktop_icon) {
|
||||
let route;
|
||||
if (!desktop_icon) return;
|
||||
let item = {};
|
||||
if (desktop_icon.link_type == "External" && desktop_icon.link) {
|
||||
route = window.location.origin + desktop_icon.link;
|
||||
} else {
|
||||
let sidebar = frappe.boot.workspace_sidebar_item[desktop_icon.label.toLowerCase()];
|
||||
if (desktop_icon.link_type == "Workspace Sidebar" && sidebar) {
|
||||
let first_link = sidebar.items.find((i) => i.type == "Link");
|
||||
if (first_link) {
|
||||
if (first_link.link_type === "Report") {
|
||||
let args = {
|
||||
type: first_link.link_type,
|
||||
name: first_link.link_to,
|
||||
};
|
||||
|
||||
if (first_link.report || !frappe.app.sidebar.editor.edit_mode) {
|
||||
args.is_query_report =
|
||||
first_link.report.report_type === "Query Report" ||
|
||||
first_link.report.report_type == "Script Report";
|
||||
args.report_ref_doctype = first_link.report.ref_doctype;
|
||||
}
|
||||
|
||||
route = frappe.utils.generate_route(args);
|
||||
} else if (first_link.link_type == "Workspace") {
|
||||
let workspaces = frappe.workspaces[frappe.router.slug(first_link.link_to)];
|
||||
if (workspaces) {
|
||||
if (workspaces.public) {
|
||||
route = "/desk/" + frappe.router.slug(first_link.link_to);
|
||||
} else {
|
||||
route = "/desk/private/" + frappe.router.slug(workspaces.title);
|
||||
}
|
||||
}
|
||||
|
||||
if (first_link.route) {
|
||||
route = first_link.route;
|
||||
}
|
||||
} else if (first_link.link_type === "URL") {
|
||||
route = first_link.url;
|
||||
} else if (first_link.link_type == "Page" && first_link.route_options) {
|
||||
route = frappe.utils.generate_route({
|
||||
type: first_link.link_type,
|
||||
name: first_link.link_to,
|
||||
route_options: JSON.parse(first_link.route_options),
|
||||
});
|
||||
} else {
|
||||
route = frappe.utils.generate_route({
|
||||
type: first_link.link_type,
|
||||
name: first_link.link_to,
|
||||
tab: first_link.tab,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return route;
|
||||
},
|
||||
desktop_icon(label, color, size) {
|
||||
let letter = label.charAt(0).toUpperCase();
|
||||
let icon_size = size ? size : "md";
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue