summaryrefslogtreecommitdiff
path: root/code_backend_theme/static/src/js
diff options
context:
space:
mode:
Diffstat (limited to 'code_backend_theme/static/src/js')
-rw-r--r--code_backend_theme/static/src/js/chrome/sidebar.js44
-rw-r--r--code_backend_theme/static/src/js/chrome/sidebar_menu.js108
-rw-r--r--code_backend_theme/static/src/js/fields/basic_fields.js53
-rw-r--r--code_backend_theme/static/src/js/fields/graph.js101
4 files changed, 306 insertions, 0 deletions
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
diff --git a/code_backend_theme/static/src/js/fields/basic_fields.js b/code_backend_theme/static/src/js/fields/basic_fields.js
new file mode 100644
index 0000000..1680bd9
--- /dev/null
+++ b/code_backend_theme/static/src/js/fields/basic_fields.js
@@ -0,0 +1,53 @@
+odoo.define('code_backend_theme.fields', function (require) {
+ "use strict";
+
+ var basic_fields = require("web.basic_fields");
+
+ //Changing Sales Team Graph color
+ var SalesTeamGraph = basic_fields.JournalDashboardGraph.include({
+
+ _getBarChartConfig: function () {
+ this._super();
+ var data = [];
+ var labels = [];
+ var backgroundColor = [];
+
+ this.data[0].values.forEach(function (pt) {
+ data.push(pt.value);
+ labels.push(pt.label);
+ var color = pt.type === 'past' ? '#ccbdc8' : (pt.type === 'future' ? '#f1b44c' : '#556ee6');
+ backgroundColor.push(color);
+ });
+ return {
+ type: 'bar',
+ data: {
+ labels: labels,
+ datasets: [{
+ data: data,
+ fill: 'start',
+ label: this.data[0].key,
+ backgroundColor: backgroundColor,
+ }]
+ },
+ options: {
+ legend: {display: false},
+ scales: {
+ yAxes: [{display: false}],
+ },
+ maintainAspectRatio: false,
+ tooltips: {
+ intersect: false,
+ position: 'nearest',
+ caretSize: 0,
+ },
+ elements: {
+ line: {
+ tension: 0.000001
+ }
+ },
+ },
+ };
+ },
+ });
+});
+
diff --git a/code_backend_theme/static/src/js/fields/graph.js b/code_backend_theme/static/src/js/fields/graph.js
new file mode 100644
index 0000000..e5f7c67
--- /dev/null
+++ b/code_backend_theme/static/src/js/fields/graph.js
@@ -0,0 +1,101 @@
+odoo.define('code_backend_theme.graph', function (require) {
+ "use strict";
+
+ var GraphRenderer = require('web.GraphRenderer');
+
+ var MyCOLORS = ["#556ee6", "#f1b44c", "#50a5f1", "#ffbb78", "#34c38f", "#98df8a", "#d62728",
+ "#ff9896", "#9467bd", "#c5b0d5", "#8c564b", "#c49c94", "#e377c2", "#f7b6d2",
+ "#7f7f7f", "#c7c7c7", "#bcbd22", "#dbdb8d", "#17becf", "#9edae5"];
+ var MyCOLOR_NB = MyCOLORS.length;
+
+ function hexToRGBA(hex, opacity) {
+ var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
+ var rgb = result.slice(1, 4).map(function (n) {
+ return parseInt(n, 16);
+ }).join(',');
+ return 'rgba(' + rgb + ',' + opacity + ')';
+ }
+
+ return GraphRenderer.include({
+
+ _getMyColor: function (index) {
+ return MyCOLORS[index % MyCOLOR_NB];
+ },
+
+ _renderBarChart: function (dataPoints) {
+ var self = this;
+
+ // prepare data
+ var data = this._prepareData(dataPoints);
+
+ data.datasets.forEach(function (dataset, index) {
+ // used when stacked
+ dataset.stack = self.state.stacked ? self.state.origins[dataset.originIndex] : undefined;
+ // set dataset color
+ var color = self._getMyColor(index);
+ dataset.backgroundColor = color;
+ });
+
+ // prepare options
+ var options = this._prepareOptions(data.datasets.length);
+
+ // create chart
+ var ctx = document.getElementById(this.chartId);
+ this.chart = new Chart(ctx, {
+ type: 'bar',
+ data: data,
+ options: options,
+ });
+ },
+
+ _renderLineChart: function (dataPoints) {
+ var self = this;
+
+ // prepare data
+ var data = this._prepareData(dataPoints);
+ data.datasets.forEach(function (dataset, index) {
+ if (self.state.processedGroupBy.length <= 1 && self.state.origins.length > 1) {
+ if (dataset.originIndex === 0) {
+ dataset.fill = 'origin';
+ dataset.backgroundColor = hexToRGBA(MyCOLORS[0], 0.4);
+ dataset.borderColor = hexToRGBA(MyCOLORS[0], 1);
+ } else if (dataset.originIndex === 1) {
+ dataset.borderColor = hexToRGBA(MyCOLORS[1], 1);
+ } else {
+ dataset.borderColor = self._getMyColor(index);
+ }
+ } else {
+ dataset.borderColor = self._getMyColor(index);
+ }
+ if (data.labels.length === 1) {
+ // shift of the real value to right. This is done to center the points in the chart
+ // See data.labels below in Chart parameters
+ dataset.data.unshift(undefined);
+ }
+ dataset.pointBackgroundColor = dataset.borderColor;
+ dataset.pointBorderColor = 'rgba(0,0,0,0.2)';
+ });
+ if (data.datasets.length === 1) {
+ const dataset = data.datasets[0];
+ dataset.fill = 'origin';
+ dataset.backgroundColor = hexToRGBA(MyCOLORS[0], 0.4);
+ }
+
+ // center the points in the chart (without that code they are put on the left and the graph seems empty)
+ data.labels = data.labels.length > 1 ?
+ data.labels :
+ Array.prototype.concat.apply([], [[['']], data.labels, [['']]]);
+
+ // prepare options
+ var options = this._prepareOptions(data.datasets.length);
+
+ // create chart
+ var ctx = document.getElementById(this.chartId);
+ this.chart = new Chart(ctx, {
+ type: 'line',
+ data: data,
+ options: options,
+ });
+ },
+ });
+}); \ No newline at end of file