From 861f98c05882648d72778cc485b88e7c5257e20e Mon Sep 17 00:00:00 2001 From: AjmalCybro Date: Wed, 26 Jul 2023 11:28:32 +0530 Subject: [PATCH] Jul 25 : [UPDT] Updated 'advanced_dynamic_dashboard' --- advanced_dynamic_dashboard/__manifest__.py | 2 +- .../models/dashboard_block.py | 26 ++++++++- .../static/src/js/dynamic_dashboard.js | 25 ++++++++- .../src/xml/dynamic_dashboard_template.xml | 56 ++++++++----------- 4 files changed, 74 insertions(+), 35 deletions(-) diff --git a/advanced_dynamic_dashboard/__manifest__.py b/advanced_dynamic_dashboard/__manifest__.py index f2785b236..c5166cc57 100644 --- a/advanced_dynamic_dashboard/__manifest__.py +++ b/advanced_dynamic_dashboard/__manifest__.py @@ -21,7 +21,7 @@ ################################################################################ { 'name': "Advanced Dynamic Dashboard", - 'version': '16.0.1.0.0', + 'version': '16.0.1.0.1', 'category': 'Productivity', 'summary': """Create Configurable Dashboards Easily""", 'description': """Create Configurable Advanced Dynamic Dashboard to get the diff --git a/advanced_dynamic_dashboard/models/dashboard_block.py b/advanced_dynamic_dashboard/models/dashboard_block.py index c4c27f28b..901f85ce3 100644 --- a/advanced_dynamic_dashboard/models/dashboard_block.py +++ b/advanced_dynamic_dashboard/models/dashboard_block.py @@ -20,6 +20,8 @@ # ################################################################################ from ast import literal_eval +from datetime import datetime + from odoo import fields, models from odoo.osv import expression @@ -87,11 +89,33 @@ class DashboardBlock(models.Model): help="Enable to edit chart and tile", default=False, invisible=True) - def get_dashboard_vals(self, action_id): + def get_dashboard_vals(self, action_id, start_date=None, end_date=None): """Fetch block values from js and create chart""" block_id = [] for rec in self.env['dashboard.block'].sudo().search( [('client_action_id', '=', int(action_id))]): + if rec.filter is False: + rec.filter = "[]" + + filter_list = literal_eval(rec.filter) + + # Remove existing date filters if they exist + filter_list = [filter_item for filter_item in filter_list if not ( + isinstance(filter_item, tuple) and filter_item[ + 0] == 'create_date')] + + if start_date and start_date != 'null': + start_date_obj = datetime.strptime(start_date, '%Y-%m-%d') + filter_list.append( + ('create_date', '>=', start_date_obj.strftime('%Y-%m-%d'))) + + if end_date and end_date != 'null': + end_date_obj = datetime.strptime(end_date, '%Y-%m-%d') + filter_list.append( + ('create_date', '<=', end_date_obj.strftime('%Y-%m-%d'))) + + rec.filter = repr(filter_list) + vals = {'id': rec.id, 'name': rec.name, 'type': rec.type, 'graph_type': rec.graph_type, 'icon': rec.fa_icon, 'cols': rec.graph_size, diff --git a/advanced_dynamic_dashboard/static/src/js/dynamic_dashboard.js b/advanced_dynamic_dashboard/static/src/js/dynamic_dashboard.js index ef82cfda0..bd53562da 100644 --- a/advanced_dynamic_dashboard/static/src/js/dynamic_dashboard.js +++ b/advanced_dynamic_dashboard/static/src/js/dynamic_dashboard.js @@ -20,6 +20,8 @@ odoo.define('advanced_dynamic_dashboard.Dashboard', function (require) { 'click #edit_layout': '_onClick_edit_layout', 'click #save_layout': '_onClick_save_layout', 'change #theme-toggle': 'switch_mode', + 'change #start-date': '_onchangeFilter', + 'change #end-date': '_onchangeFilter', 'mouseenter #theme-change-icon': 'show_mode_text', 'mouseleave #theme-change-icon': 'hide_mode_text', 'click .tile': '_onClick_tile', @@ -76,6 +78,27 @@ odoo.define('advanced_dynamic_dashboard.Dashboard', function (require) { this.$el.find('.theme_icon').toggleClass('bi-moon-stars-fill', !isDarkTheme); this.$el.find('.dropdown-export').toggleClass('dropdown-menu-dark', isDarkTheme); }, + _onchangeFilter: function() { + var start_date = $('#start-date').val(); + var end_date = $('#end-date').val(); + var self = this; + if (!start_date) { + start_date = "null"; + } + if (!end_date) { + end_date = "null"; + } + this._rpc({ + model: 'dashboard.block', + method: 'get_dashboard_vals', + args: [[], this.action_id, start_date, end_date], + }).then(function (result) { + self.block_ids = result; + self.$('.o_dynamic_dashboard').empty(); // Clear existing blocks before rendering + self.render_dashboards(); // Re-render the dashboard with updated data + self.gridstack_init(self); // Reinitialize gridstack after rendering + }); + }, get_colors: function (x_axis) {//Function fetch random color values and set chart color return x_axis.map(() => `rgb(${Math.floor(Math.random() * 255)}, ${Math.floor(Math.random() * 255)}, ${Math.floor(Math.random() * 255)})`); }, @@ -314,7 +337,7 @@ odoo.define('advanced_dynamic_dashboard.Dashboard', function (require) { this.fetch_data().then(function () {//Fetch all datas self.render_dashboards(); self.gridstack_init(self); - location.reload(); + location.reload(); }); }, search_chart: function (e) {// Fetch search input value and filter the chart and tile. diff --git a/advanced_dynamic_dashboard/static/src/xml/dynamic_dashboard_template.xml b/advanced_dynamic_dashboard/static/src/xml/dynamic_dashboard_template.xml index 0b076ddd3..b6a06d625 100644 --- a/advanced_dynamic_dashboard/static/src/xml/dynamic_dashboard_template.xml +++ b/advanced_dynamic_dashboard/static/src/xml/dynamic_dashboard_template.xml @@ -45,39 +45,31 @@ data-chart_type="radar">Radar Chart - - -