From 1ca3b3df3421961caec3b747a364071c80f5c7da Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 10 May 2022 17:14:58 +0700 Subject: initial commit --- code_backend_theme/static/src/js/chrome/sidebar.js | 44 +++++++++ .../static/src/js/chrome/sidebar_menu.js | 108 +++++++++++++++++++++ 2 files changed, 152 insertions(+) create mode 100644 code_backend_theme/static/src/js/chrome/sidebar.js create mode 100644 code_backend_theme/static/src/js/chrome/sidebar_menu.js (limited to 'code_backend_theme/static/src/js/chrome') diff --git a/code_backend_theme/static/src/js/chrome/sidebar.js b/code_backend_theme/static/src/js/chrome/sidebar.js new file mode 100644 index 0000000..6506f33 --- /dev/null +++ b/code_backend_theme/static/src/js/chrome/sidebar.js @@ -0,0 +1,44 @@ +odoo.define('code_backend_theme.SideBar', function (require) { + "use strict"; + + var Widget = require('web.Widget'); + var SideBar = Widget.extend({ + events: _.extend({}, Widget.prototype.events, { + 'click .nav-link': '_onAppsMenuItemClicked', + }), + template: "code_backend_theme.Sidebar", + + init: function (parent, menuData) { + this._super.apply(this, arguments); + this._apps = _.map(menuData.children, function (appMenuData) { + return { + actionID: parseInt(appMenuData.action.split(',')[1]), + menuID: appMenuData.id, + name: appMenuData.name, + xmlID: appMenuData.xmlid, + web_icon_data: appMenuData.web_icon_data, + }; + }); + }, + + getApps: function () { + return this._apps; + }, + + _openApp: function (app) { + this.trigger_up('app_clicked', { + action_id: app.actionID, + menu_id: app.menuID, + }); + }, + + _onAppsMenuItemClicked: function (ev) { + var $target = $(ev.currentTarget); + var actionID = $target.data('action-id'); + var menuID = $target.data('menu-id'); + var app = _.findWhere(this._apps, { actionID: actionID, menuID: menuID }); + this._openApp(app); + }, + }); + return SideBar; +}); \ No newline at end of file diff --git a/code_backend_theme/static/src/js/chrome/sidebar_menu.js b/code_backend_theme/static/src/js/chrome/sidebar_menu.js new file mode 100644 index 0000000..7858ad1 --- /dev/null +++ b/code_backend_theme/static/src/js/chrome/sidebar_menu.js @@ -0,0 +1,108 @@ +odoo.define('code_backend_theme.SidebarMenu', function (require) { + "use strict"; + + const config = require("web.config"); + const Menu = require("web.Menu"); + const SideBar = require("code_backend_theme.SideBar"); + + Menu.include({ + start() { + var res = this._super.apply(this, arguments); + this.sidebar_apps = this.$('.sidebar_panel'); + this._sideBar = new SideBar(this, this.menu_data); + var sideBar = this._sideBar.appendTo(this.sidebar_apps); + + return res, sideBar + }, + }); + + //sidebar toggle effect + $(document).on("click", "#closeSidebar", function(event){ + $("#closeSidebar").hide(); + $("#openSidebar").show(); + }); + $(document).on("click", "#openSidebar", function(event){ + $("#openSidebar").hide(); + $("#closeSidebar").show(); + }); + $(document).on("click", "#openSidebar", function(event){ + $("#sidebar_panel").css({'display':'block'}); + $(".o_action_manager").css({'margin-left': '200px','transition':'all .1s linear'}); + $(".top_heading").css({'margin-left': '180px','transition':'all .1s linear'}); + + //add class in navbar + var navbar = $(".o_main_navbar"); + var navbar_id = navbar.data("id"); + $("nav").addClass(navbar_id); + navbar.addClass("small_nav"); + + //add class in action-manager + var action_manager = $(".o_action_manager"); + var action_manager_id = action_manager.data("id"); + $("div").addClass(action_manager_id); + action_manager.addClass("sidebar_margin"); + + //add class in top_heading + var top_head = $(".top_heading"); + var top_head_id = top_head.data("id"); + $("div").addClass(top_head_id); + top_head.addClass("sidebar_margin"); + }); + $(document).on("click", "#closeSidebar", function(event){ + $("#sidebar_panel").css({'display':'none'}); + $(".o_action_manager").css({'margin-left': '0px'}); + $(".top_heading").css({'margin-left': '0px'}); + + //remove class in navbar + var navbar = $(".o_main_navbar"); + var navbar_id = navbar.data("id"); + $("nav").removeClass(navbar_id); + navbar.removeClass("small_nav"); + + //remove class in action-manager + var action_manager = $(".o_action_manager"); + var action_manager_id = action_manager.data("id"); + $("div").removeClass(action_manager_id); + action_manager.removeClass("sidebar_margin"); + + //remove class in top_heading + var top_head = $(".top_heading"); + var top_head_id = top_head.data("id"); + $("div").removeClass(top_head_id); + top_head.removeClass("sidebar_margin"); + }); + + $(document).on("click", ".sidebar a", function(event){ + var menu = $(".sidebar a"); + var $this = $(this); + var id = $this.data("id"); + $("header").removeClass().addClass(id); + menu.removeClass("active"); + $this.addClass("active"); + + //sidebar close on menu-item click + $("#sidebar_panel").css({'display':'none'}); + $(".o_action_manager").css({'margin-left': '0px'}); + $(".top_heading").css({'margin-left': '0px'}); + $("#closeSidebar").hide(); + $("#openSidebar").show(); + + //remove class in navbar + var navbar = $(".o_main_navbar"); + var navbar_id = navbar.data("id"); + $("nav").removeClass(navbar_id); + navbar.removeClass("small_nav"); + + //remove class in action-manager + var action_manager = $(".o_action_manager"); + var action_manager_id = action_manager.data("id"); + $("div").removeClass(action_manager_id); + action_manager.removeClass("sidebar_margin"); + + //remove class in top_heading + var top_head = $(".top_heading"); + var top_head_id = top_head.data("id"); + $("div").removeClass(top_head_id); + top_head.removeClass("sidebar_margin"); + }); +}); \ No newline at end of file -- cgit v1.2.3