148 lines
5.3 KiB
JavaScript
148 lines
5.3 KiB
JavaScript
/** @odoo-module **/
|
|
|
|
import { registry } from "@web/core/registry";
|
|
import { ErrorHandler } from "@web/core/utils/components";
|
|
import { session } from '@web/session'
|
|
import { Component, useState, useExternalListener } from "@odoo/owl";
|
|
|
|
const systrayRegistry = registry.category("systray");
|
|
import { useService, useBus } from "@web/core/utils/hooks";
|
|
|
|
|
|
export class AwesomeHeader extends Component {
|
|
|
|
setup() {
|
|
this.userService = useService('user')
|
|
this.overlay = useService("awesome_overlay");
|
|
this.orm = useService("orm");
|
|
this.action = useService("action");
|
|
|
|
let company = session.company_id;
|
|
|
|
// config.device.bus.on('size_changed', this, () => {
|
|
// if (config.device.isMobile) {
|
|
// if ($('body').hasClass('navigation-show')) {
|
|
// this.overlay.show()
|
|
// }
|
|
// } else {
|
|
// this.overlay.hide()
|
|
// }
|
|
// });
|
|
|
|
// if click outside the panel close it
|
|
useExternalListener(window, 'click', (event) => {
|
|
if ($('body').hasClass("navigation-show")) {
|
|
if (!$(event.target).is($(".sidebar_menu, .sidebar_menu *, .navigation-toggler *"))) {
|
|
this.overlay.hide()
|
|
$('body').removeClass("navigation-show");
|
|
}
|
|
}
|
|
});
|
|
|
|
this.state = useState({
|
|
logo_url: '/web/binary/company_logo' + '?db=' + session.db + (
|
|
company ? '&company=' + company : ''),
|
|
})
|
|
|
|
useBus(this.env.bus, "ACTION_MANAGER:UI-UPDATED", ({ detail: mode }) => {
|
|
if (mode !== "new") {
|
|
this.state.fullscreen = mode === "fullscreen";
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
handleItemError(error, item) {
|
|
// remove the faulty component
|
|
item.isDisplayed = () => false;
|
|
Promise.resolve().then(() => {
|
|
throw error;
|
|
});
|
|
}
|
|
|
|
get systrayItems() {
|
|
return systrayRegistry
|
|
.getEntries()
|
|
.map(([key, value]) => ({ key, ...value }))
|
|
.filter((item) => ("isDisplayed" in item ? item.isDisplayed(this.env) : true))
|
|
.reverse();
|
|
}
|
|
|
|
// This dummy setter is only here to prevent conflicts between the
|
|
// Enterprise NavBar extension and the Website NavBar patch.
|
|
set systrayItems(_) {}
|
|
|
|
async on_logo_click() {
|
|
// this.action.doAction({
|
|
// type: 'ir.actions.act_window',
|
|
// res_model: 'res.company',
|
|
// views: [[false, 'form']],
|
|
// context: {
|
|
// 'form_view_ref': 'base.action_res_company_form',
|
|
// },
|
|
// res_id: session.user_context.current_company,
|
|
// target: 'new',
|
|
// }, {
|
|
// onClosed: () => {
|
|
// this.update_logo(true)
|
|
// }
|
|
// });
|
|
}
|
|
|
|
get logo_url() {
|
|
return '/web/binary/company_logo' + '?db=' + session.db + (company ? '&company=' + session.user_context.current_company : '')
|
|
}
|
|
|
|
update_logo(reload) {
|
|
let company = session.company_id
|
|
this.state.logo_url = '/web/binary/company_logo' + '?db=' + session.db + (company ?
|
|
'&company=' + session.user_context.current_company : '') + moment().format('x')
|
|
}
|
|
|
|
on_toggler_click() {
|
|
|
|
let $body = $('body');
|
|
|
|
if (this.env.isSmall) {
|
|
$body.addClass("navigation-show");
|
|
this.overlay.show()
|
|
} else {
|
|
this.overlay.hide()
|
|
if ($body.hasClass("navigation-toggle-one")) {
|
|
$body.removeClass("navigation-toggle-one");
|
|
$body.removeClass("navigation-show");
|
|
$body.addClass("navigation-toggle-none");
|
|
localStorage.setItem('awesome_menu_mode', 'navigation-toggle-none')
|
|
} else if ($body.hasClass("navigation-toggle-two")) {
|
|
// jump one to none
|
|
if (!$body.hasClass('not_have_child')) {
|
|
$body.removeClass("navigation-toggle-two");
|
|
$body.removeClass("navigation-show");
|
|
$body.addClass("navigation-toggle-one");
|
|
localStorage.setItem('awesome_menu_mode', 'navigation-toggle-one')
|
|
} else {
|
|
$body.removeClass("navigation-toggle-two");
|
|
$body.removeClass("navigation-show");
|
|
$body.addClass("navigation-toggle-none");
|
|
localStorage.setItem('awesome_menu_mode', 'navigation-toggle-one')
|
|
}
|
|
} else if ($body.hasClass("navigation-toggle-none")) {
|
|
$body.removeClass("navigation-toggle-none");
|
|
$body.removeClass("navigation-show");
|
|
$body.addClass("navigation-toggle-two");
|
|
localStorage.setItem('awesome_menu_mode', 'navigation-toggle-two')
|
|
} else {
|
|
// if nothing
|
|
$body.removeClass("navigation-toggle-two");
|
|
$body.removeClass("navigation-show");
|
|
$body.addClass("navigation-toggle-one");
|
|
localStorage.setItem('awesome_menu_mode', 'navigation-toggle-one')
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
AwesomeHeader.props = {};
|
|
AwesomeHeader.template = "awesome_theme.header";
|
|
AwesomeHeader.components = { ErrorHandler };
|