| @ -0,0 +1,45 @@ | |||||
|  | .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg | ||||
|  |     :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html | ||||
|  |     :alt: License: AGPL-3 | ||||
|  | 
 | ||||
|  | Website Helpdesk Dashboard | ||||
|  | ========================== | ||||
|  | *This module provides the dashboard view for the Website Helpdesk Support Ticket Management module* | ||||
|  | 
 | ||||
|  | Installation | ||||
|  | ============ | ||||
|  |     - www.odoo.com/documentation/14.0/setup/install.html | ||||
|  |     - Install our custom addon | ||||
|  | 
 | ||||
|  | License | ||||
|  | ------- | ||||
|  | GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPL v3) | ||||
|  | (https://www.gnu.org/licenses/agpl-3.0-standalone.html) | ||||
|  | 
 | ||||
|  | Company | ||||
|  | ------- | ||||
|  | * `Cybrosys Techno Solutions <https://cybrosys.com/>`__ | ||||
|  | 
 | ||||
|  | Credits | ||||
|  | ------- | ||||
|  | * Developer: (V14) Sruthi MK, Contact: odoo@cybrosys.com | ||||
|  | 
 | ||||
|  | Contacts | ||||
|  | -------- | ||||
|  | * Mail Contact : odoo@cybrosys.com | ||||
|  | 
 | ||||
|  | Bug Tracker | ||||
|  | ----------- | ||||
|  | Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. | ||||
|  | 
 | ||||
|  | Maintainer | ||||
|  | ========== | ||||
|  | .. image:: https://cybrosys.com/images/logo.png | ||||
|  |    :target: https://cybrosys.com | ||||
|  | This module is maintained by Cybrosys Technologies. | ||||
|  | 
 | ||||
|  | For support and more information, please visit https://www.cybrosys.com | ||||
|  | 
 | ||||
|  | Further information | ||||
|  | =================== | ||||
|  | HTML Description: `<static/description/index.html>`__ | ||||
| @ -0,0 +1,23 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################### | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Cybrosys Techno Solutions (odoo@cybrosys.com) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################### | ||||
|  | from . import controllers | ||||
|  | from . import models | ||||
| @ -0,0 +1,53 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################### | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Cybrosys Techno Solutions (odoo@cybrosys.com) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################### | ||||
|  | { | ||||
|  |     'name': "Website Helpdesk Dashboard", | ||||
|  |     'version': '14.0.1.0.0', | ||||
|  |     'category': 'Website', | ||||
|  |     'summary': 'Website HelpDesk Dashboard module Brings a multipurpose ' | ||||
|  |                'graphical dashboard for Website Helpdesk Support Ticket ' | ||||
|  |                'Management module', | ||||
|  |     'description': 'Helps to show a dashboard view of Website Helpdesk Support ' | ||||
|  |                    'Ticket Management module.We will get the details of ' | ||||
|  |                    'helpdesk teams, received tickets, tickets based on month, ' | ||||
|  |                    'ticket count ratio by teams, tickets by project ratio, ' | ||||
|  |                    'Billed tasks by team ratio, Resolved tickets and  New, ' | ||||
|  |                    'In-progress and Closed tickets.', | ||||
|  |     'author': "Cybrosys Techno Solutions", | ||||
|  |     'company': 'Cybrosys Techno Solutions', | ||||
|  |     'maintainer': 'Cybrosys Techno Solutions', | ||||
|  |     'website': "https://www.cybrosys.com", | ||||
|  |     'depends': ['odoo_website_helpdesk', 'base'], | ||||
|  |     'data': [ | ||||
|  |         'views/help_ticket_views.xml', | ||||
|  |         'views/assets.xml', | ||||
|  |         'views/dashboard_templates.xml' | ||||
|  |     ], | ||||
|  |     'qweb': [ | ||||
|  |         "static/src/xml/helpdesk_dashboard_templates.xml" | ||||
|  |     ], | ||||
|  |     'images': ['static/description/banner.png'], | ||||
|  |     'license': 'AGPL-3', | ||||
|  |     'installable': True, | ||||
|  |     'auto_install': False, | ||||
|  |     'application': False, | ||||
|  | } | ||||
| @ -0,0 +1,22 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################### | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Cybrosys Techno Solutions (odoo@cybrosys.com) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################### | ||||
|  | from . import odoo_website_helpdesk_dashboard | ||||
| @ -0,0 +1,42 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################### | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Cybrosys Techno Solutions (odoo@cybrosys.com) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################### | ||||
|  | from odoo import http | ||||
|  | from odoo.http import request | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class HelpDeskTickets(http.Controller): | ||||
|  |     """HelpDeskTickets will be used to provide information about tickets | ||||
|  |      in a dashboard""" | ||||
|  | 
 | ||||
|  |     @http.route(['/help/tickets'], type="json", auth="user") | ||||
|  |     def elearning_snippet(self): | ||||
|  |         """Retrieves help tickets from the database and renders the helpdesk | ||||
|  |          dashboard template. | ||||
|  |         :return: Rendered helpdesk dashboard template as a JSON response.""" | ||||
|  |         tickets = [ | ||||
|  |             {'name': ticket.name, 'subject': ticket.subject, 'id': ticket.id} | ||||
|  |             for ticket in request.env['help.ticket'].sudo().search( | ||||
|  |                 [('stage_id.name', '=', 'Inbox')])] | ||||
|  |         response = http.Response( | ||||
|  |             template='odoo_website_helpdesk_dashboard.dashboard_tickets', | ||||
|  |             qcontext={'h_tickets': tickets}) | ||||
|  |         return response.render() | ||||
| @ -0,0 +1,6 @@ | |||||
|  | ## Module <odoo_website_helpdesk_dashboard> | ||||
|  | 
 | ||||
|  | #### 09.08.2023 | ||||
|  | #### Version 14.0.1.0.0 | ||||
|  | #### ADD | ||||
|  | - Initial commit for Website Helpdesk Dashboard | ||||
| @ -0,0 +1,22 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################### | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Cybrosys Techno Solutions (odoo@cybrosys.com) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################### | ||||
|  | from . import help_ticket | ||||
| @ -0,0 +1,153 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################### | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | # | ||||
|  | #    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | ||||
|  | #    Author: Cybrosys Techno Solutions (odoo@cybrosys.com) | ||||
|  | # | ||||
|  | #    You can modify it under the terms of the GNU AFFERO | ||||
|  | #    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    This program is distributed in the hope that it will be useful, | ||||
|  | #    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  | #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  | #    GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | ||||
|  | # | ||||
|  | #    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|  | #    (AGPL v3) along with this program. | ||||
|  | #    If not, see <http://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################### | ||||
|  | import calendar | ||||
|  | from odoo import api, models | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class HelpTicket(models.Model): | ||||
|  |     """HelpTicket class helps to create new tickets and inside this class | ||||
|  |      it will show the tickets with different stages. Get ticket information | ||||
|  |       easily.""" | ||||
|  |     _inherit = 'help.ticket' | ||||
|  | 
 | ||||
|  |     @api.model | ||||
|  |     def get_tickets_count(self): | ||||
|  |         """Get the count of tickets based on their stages.""" | ||||
|  |         values = { | ||||
|  |             'inbox_count': self.env['help.ticket'].search_count( | ||||
|  |                 [('stage_id.name', 'in', ['Inbox', 'Draft'])]), | ||||
|  |             'progress_count': self.env['help.ticket'].search_count( | ||||
|  |                 [('stage_id.name', '=', 'In Progress')]), | ||||
|  |             'done_count': self.env['help.ticket'].search_count( | ||||
|  |                 [('stage_id.name', '=', 'Done')]), | ||||
|  |             'team_count': self.env['help.team'].search_count([]), | ||||
|  |             'p_tickets': [ticket.name for ticket in | ||||
|  |                           self.env['help.ticket'].search( | ||||
|  |                               [('stage_id.name', 'in', ['Inbox', 'Draft'])])] | ||||
|  |         } | ||||
|  |         return values | ||||
|  | 
 | ||||
|  |     @api.model | ||||
|  |     def get_tickets_view(self): | ||||
|  |         """Get detailed information about tickets.""" | ||||
|  |         values = { | ||||
|  |             'inbox_count': self.env['help.ticket'].search_count( | ||||
|  |                 [('stage_id.name', 'in', ['Inbox', 'Draft'])]), | ||||
|  |             'progress_count': self.env['help.ticket'].search_count( | ||||
|  |                 [('stage_id.name', '=', 'In Progress')]), | ||||
|  |             'done_count': self.env['help.ticket'].search_count( | ||||
|  |                 [('stage_id.name', '=', 'Done')]), | ||||
|  |             'team_count': self.env['help.team'].search_count([]), | ||||
|  |             'new_ticket': ["{} : {}".format(ticket.name, ticket.subject) for | ||||
|  |                            ticket in self.env['help.ticket'].search( | ||||
|  |                     [('stage_id.name', 'in', ['Inbox', 'Draft'])])], | ||||
|  |             'progress': ["{} : {}".format(ticket.name, ticket.subject) for | ||||
|  |                          ticket in self.env['help.ticket'].search( | ||||
|  |                     [('stage_id.name', '=', 'In Progress')])], | ||||
|  |             'done': ["{} : {}".format(ticket.name, ticket.subject) for ticket in | ||||
|  |                      self.env['help.ticket'].search( | ||||
|  |                          [('stage_id.name', '=', 'Done')])], | ||||
|  |             'teams': [team.name for team in self.env['help.team'].search([])], | ||||
|  |             'p_tickets': [ticket.name for ticket in | ||||
|  |                           self.env['help.ticket'].search( | ||||
|  |                               [('stage_id.name', 'in', ['Inbox', 'Draft'])])] | ||||
|  |         } | ||||
|  |         return values | ||||
|  | 
 | ||||
|  |     @api.model | ||||
|  |     def get_ticket_month_pie(self): | ||||
|  |         """Get ticket counts per month as a pie chart.""" | ||||
|  |         month_count = [rec.create_date.month for rec in | ||||
|  |                        self.env['help.ticket'].search([])] | ||||
|  |         month_val = [{'label': calendar.month_name[month], | ||||
|  |                       'value': month_count.count(month)} for month in | ||||
|  |                      list(set(month_count))] | ||||
|  |         name = [record['label'] for record in month_val] | ||||
|  |         count = [record['value'] for record in month_val] | ||||
|  |         return [count, name] | ||||
|  | 
 | ||||
|  |     @api.model | ||||
|  |     def get_team_ticket_count_pie(self): | ||||
|  |         """Get ticket counts per team as a bar chart""" | ||||
|  |         ticket_count = [] | ||||
|  |         team_list = [] | ||||
|  |         for rec in self.env['help.ticket'].search([]): | ||||
|  |             if rec.team_id: | ||||
|  |                 team = rec.team_id.name | ||||
|  |                 if team not in team_list: | ||||
|  |                     team_list.append(team) | ||||
|  |                 ticket_count.append(team) | ||||
|  |         team_val = [{'label': team_name, 'value': ticket_count.count(team_name)} | ||||
|  |                     for team_name in team_list] | ||||
|  |         return [[record['value'] for record in team_val], | ||||
|  |                 [record['label'] for record in team_val]] | ||||
|  | 
 | ||||
|  |     @api.model | ||||
|  |     def get_project_ticket_count(self): | ||||
|  |         """Get ticket counts per project as a bar chart""" | ||||
|  |         ticket_count = [] | ||||
|  |         project_list = [] | ||||
|  |         for rec in self.env['help.ticket'].search([]): | ||||
|  |             if rec.project_id: | ||||
|  |                 project = rec.project_id.name | ||||
|  |                 if project not in project_list: | ||||
|  |                     project_list.append(project) | ||||
|  |                 ticket_count.append(project) | ||||
|  |         project_val = [ | ||||
|  |             {'label': project_name, 'value': ticket_count.count(project_name)} | ||||
|  |             for project_name in project_list] | ||||
|  |         return [[record['value'] for record in project_val], | ||||
|  |                 [record['label'] for record in project_val]] | ||||
|  | 
 | ||||
|  |     @api.model | ||||
|  |     def get_billed_task_team_chart(self): | ||||
|  |         """Get billed task counts per team as a polarArea chart""" | ||||
|  |         ticket_count = [] | ||||
|  |         team_list = [] | ||||
|  |         tasks = [rec.ticket_id.id for rec in self.env['project.task'].search( | ||||
|  |             [('ticket_billed', '=', True)])] | ||||
|  |         for rec in self.env['help.ticket'].search([('id', 'in', tasks)]): | ||||
|  |             team = rec.team_id.name | ||||
|  |             if team not in team_list: | ||||
|  |                 team_list.append(team) | ||||
|  |             ticket_count.append(team) | ||||
|  |         team_val = [{'label': team_name, 'value': ticket_count.count(team_name)} | ||||
|  |                     for team_name in team_list] | ||||
|  |         return [[record['value'] for record in team_val], | ||||
|  |                 [record['label'] for record in team_val]] | ||||
|  | 
 | ||||
|  |     @api.model | ||||
|  |     def get_team_ticket_done_pie(self): | ||||
|  |         """Get ticket counts per completed tickets as a bar chart""" | ||||
|  |         ticket_count = [] | ||||
|  |         team_list = [] | ||||
|  |         for rec in self.env['help.ticket'].search( | ||||
|  |                 [('stage_id.name', '=', 'Done')]): | ||||
|  |             if rec.team_id: | ||||
|  |                 team = rec.team_id.name | ||||
|  |                 if team not in team_list: | ||||
|  |                     team_list.append(team) | ||||
|  |                 ticket_count.append(team) | ||||
|  |         team_val = [{'label': team_name, 'value': ticket_count.count(team_name)} | ||||
|  |                     for team_name in team_list] | ||||
|  |         return [[record['value'] for record in team_val], | ||||
|  |                 [record['label'] for record in team_val]] | ||||
| After Width: | Height: | Size: 1.3 KiB | 
| After Width: | Height: | Size: 1.4 KiB | 
| After Width: | Height: | Size: 576 B | 
| After Width: | Height: | Size: 733 B | 
| After Width: | Height: | Size: 911 B | 
| After Width: | Height: | Size: 1.1 KiB | 
| After Width: | Height: | Size: 1.2 KiB | 
| After Width: | Height: | Size: 3.4 KiB | 
| After Width: | Height: | Size: 673 B | 
| After Width: | Height: | Size: 878 B | 
| After Width: | Height: | Size: 653 B | 
| After Width: | Height: | Size: 905 B | 
| After Width: | Height: | Size: 839 B | 
| After Width: | Height: | Size: 427 B | 
| After Width: | Height: | Size: 627 B | 
| After Width: | Height: | Size: 1.2 KiB | 
| After Width: | Height: | Size: 988 B | 
| After Width: | Height: | Size: 1.2 KiB | 
| After Width: | Height: | Size: 1.5 KiB | 
| After Width: | Height: | Size: 1.1 KiB | 
| After Width: | Height: | Size: 1.9 KiB | 
| After Width: | Height: | Size: 1.1 KiB | 
| After Width: | Height: | Size: 2.1 KiB | 
| After Width: | Height: | Size: 4.4 KiB | 
| After Width: | Height: | Size: 589 B | 
| After Width: | Height: | Size: 3.4 KiB | 
| After Width: | Height: | Size: 1.7 KiB | 
| After Width: | Height: | Size: 2.3 KiB | 
| After Width: | Height: | Size: 967 B | 
| After Width: | Height: | Size: 1.6 KiB | 
| After Width: | Height: | Size: 3.8 KiB | 
| After Width: | Height: | Size: 5.0 KiB | 
| After Width: | Height: | Size: 46 KiB | 
| After Width: | Height: | Size: 58 KiB | 
| After Width: | Height: | Size: 63 KiB | 
| After Width: | Height: | Size: 56 KiB | 
| After Width: | Height: | Size: 49 KiB | 
| After Width: | Height: | Size: 47 KiB | 
| After Width: | Height: | Size: 84 KiB | 
| After Width: | Height: | Size: 134 KiB | 
| After Width: | Height: | Size: 137 KiB | 
| After Width: | Height: | Size: 134 KiB | 
| After Width: | Height: | Size: 78 KiB | 
| After Width: | Height: | Size: 84 KiB | 
| After Width: | Height: | Size: 84 KiB | 
| After Width: | Height: | Size: 83 KiB | 
| After Width: | Height: | Size: 83 KiB | 
| After Width: | Height: | Size: 86 KiB | 
| After Width: | Height: | Size: 105 KiB | 
| After Width: | Height: | Size: 84 KiB | 
| After Width: | Height: | Size: 530 KiB | 
| After Width: | Height: | Size: 47 KiB | 
| After Width: | Height: | Size: 7.2 KiB | 
| @ -0,0 +1,703 @@ | |||||
|  | <div style="background-color: #714B67; min-height: 600px; width: 100%; padding: 15px; position: relative;"> | ||||
|  |     <!-- TITLE BAR --> | ||||
|  |     <div class="d-flex align-items-center justify-content-between" | ||||
|  |          style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;"> | ||||
|  |         <img src="./assets/misc/cybrosys-logo.png" width="42" height="42" | ||||
|  |              style="width: 42px; height: 42px;"/> | ||||
|  |         <div> | ||||
|  |             <div style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" | ||||
|  |                  class="mr-2"> | ||||
|  |                 <i class="fa fa-check mr-1"></i>Community | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  |     <!-- END OF TITLE BAR --> | ||||
|  |     <div class="container"> | ||||
|  |         <div class="row"> | ||||
|  |             <div class="col-sm-12 col-md-12 col-lg-12"> | ||||
|  |                 <!-- APP HERO --> | ||||
|  |                 <h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;"> | ||||
|  |                     Website Helpdesk Dashboard</h1> | ||||
|  |                 <p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;"> | ||||
|  |                     Detailed Dashboard View for Website Helpdesk Support Ticket | ||||
|  |                     Management Module</p> | ||||
|  |                 <!-- END OF APP HERO --> | ||||
|  |                 <img src="assets/screenshots/hero.gif" class="img-responsive" | ||||
|  |                      style="width: 100%; margin-left: auto; margin-right: auto;"/> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  | </div> | ||||
|  | 
 | ||||
|  | <!-- NAVIGATION SECTION --> | ||||
|  | <div class="d-flex align-items-center" | ||||
|  |      style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;"> | ||||
|  |     <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |         <img src="./assets/misc/compass.png"/> | ||||
|  |     </div> | ||||
|  |     <h2 class="mt-2" | ||||
|  |         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | ||||
|  |         Explore This | ||||
|  |         Module</h2> | ||||
|  | </div> | ||||
|  | <div class="row my-4" style="font-family: 'Montserrat', sans-serif;"> | ||||
|  |     <div class="col-sm-12 col-md-6 my-3"> | ||||
|  |         <a href="#overview"> | ||||
|  |             <div class="d-flex justify-content-between align-items-center" | ||||
|  |                  style="background-color: #f5f5f5; padding: 30px; width: 100%;"> | ||||
|  |                 <div> | ||||
|  |                     <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span> | ||||
|  |                     <span | ||||
|  |                             style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33;  display: block;">Learn | ||||
|  |                         more about this | ||||
|  |                         module</span> | ||||
|  |                 </div> | ||||
|  |                 <img src="./assets/misc/right-arrow.png" width="36" | ||||
|  |                      height="36"/> | ||||
|  |             </div> | ||||
|  |         </a> | ||||
|  |     </div> | ||||
|  |     <div class="col-sm-12 col-md-6 my-3"> | ||||
|  |         <a href="#features"> | ||||
|  |             <div class="d-flex justify-content-between align-items-center" | ||||
|  |                  style="background-color: #f5f5f5; padding: 30px; width: 100%;"> | ||||
|  |                 <div> | ||||
|  |                     <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span> | ||||
|  |                     <span | ||||
|  |                             style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33;  display: block;">View | ||||
|  |                         features of this | ||||
|  |                         module</span> | ||||
|  |                 </div> | ||||
|  |                 <img src="./assets/misc/right-arrow.png" width="36" | ||||
|  |                      height="36"/> | ||||
|  |             </div> | ||||
|  |         </a> | ||||
|  |     </div> | ||||
|  |     <div class="col-sm-12 col-md-6 my-3"> | ||||
|  |         <a href="#screenshots"> | ||||
|  |             <div class="d-flex justify-content-between align-items-center" | ||||
|  |                  style="background-color: #f5f5f5; padding: 30px; width: 100%;"> | ||||
|  |                 <div> | ||||
|  |                     <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span> | ||||
|  |                     <span | ||||
|  |                             style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33;  display: block;">View | ||||
|  |                         screenshots for this | ||||
|  |                         module</span> | ||||
|  |                 </div> | ||||
|  |                 <img src="./assets/misc/right-arrow.png" width="36" | ||||
|  |                      height="36"/> | ||||
|  |             </div> | ||||
|  |         </a> | ||||
|  |     </div> | ||||
|  | </div> | ||||
|  | <!-- END OF NAVIGATION SECTION --> | ||||
|  | 
 | ||||
|  | <!-- OVERVIEW SECTION --> | ||||
|  | <div class="d-flex align-items-center" | ||||
|  |      style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview"> | ||||
|  |     <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |         <img src="./assets/misc/pie-chart.png"/> | ||||
|  |     </div> | ||||
|  |     <h2 class="mt-2" | ||||
|  |         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | ||||
|  |         Overview | ||||
|  |     </h2> | ||||
|  | </div> | ||||
|  | <div class="row" | ||||
|  |      style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> | ||||
|  |     <div class="col-sm-12 py-4"> | ||||
|  |         In the Website Helpdesk Dashboard module, one can analyse and easily | ||||
|  |         manage | ||||
|  |         Helpdesk Tickets according to their stages and also Helpdesk teams.<br/> | ||||
|  |         The dashboard provides a visually engaging palate for seamless | ||||
|  |         management of helpdesk management functions. | ||||
|  |     </div> | ||||
|  | </div> | ||||
|  | <!-- END OF OVERVIEW SECTION --> | ||||
|  | 
 | ||||
|  | <!-- FEATURES SECTION --> | ||||
|  | <div class="d-flex align-items-center" | ||||
|  |      style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features"> | ||||
|  |     <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |         <img src="./assets/misc/features.png"/> | ||||
|  |     </div> | ||||
|  |     <h2 class="mt-2" | ||||
|  |         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | ||||
|  |         Features | ||||
|  |     </h2> | ||||
|  | </div> | ||||
|  | <div class="row" | ||||
|  |      style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> | ||||
|  |     <div class="col-sm-12 col-md-6"> | ||||
|  |         <div class="d-flex align-items-start" | ||||
|  |              style="margin-top: 40px; margin-bottom: 40px"> | ||||
|  |             <img src="./assets/misc/check-box.png" class="mr-2"/> | ||||
|  |             <div> | ||||
|  |                 <span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                     Classified tickets according to their stages. | ||||
|  |                 </span> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |         <div class="d-flex align-items-start" | ||||
|  |              style="margin-top: 40px; margin-bottom: 40px"> | ||||
|  |             <img src="./assets/misc/check-box.png" class="mr-2"/> | ||||
|  |             <div> | ||||
|  |                 <span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                      Manage Tickets in the backend easily. | ||||
|  |                 </span> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |         <div class="d-flex align-items-start" | ||||
|  |              style="margin-top: 40px; margin-bottom: 40px"> | ||||
|  |             <img src="./assets/misc/check-box.png" class="mr-2"/> | ||||
|  |             <div> | ||||
|  |                 <span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">View tickets that are created by customers, from website in the received tickets list.</span> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |         <div class="d-flex align-items-start" | ||||
|  |              style="margin-top: 40px; margin-bottom: 40px"> | ||||
|  |             <img src="./assets/misc/check-box.png" class="mr-2"/> | ||||
|  |             <div> | ||||
|  |                 <span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                    View monthly count of tickets in the Doughnut Chart | ||||
|  |                 </span> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |         <div class="d-flex align-items-start" | ||||
|  |              style="margin-top: 40px; margin-bottom: 40px"> | ||||
|  |             <img src="./assets/misc/check-box.png" class="mr-2"/> | ||||
|  |             <div> | ||||
|  |                 <span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Number of tickets allotted to each team can be seen in the bar chart. | ||||
|  |                 </span> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |     </div> | ||||
|  | </div> | ||||
|  | <!-- END OF FEATURES SECTION --> | ||||
|  | 
 | ||||
|  | <!-- SCREENSHOTS SECTION --> | ||||
|  | <div class="d-flex align-items-center" | ||||
|  |      style="border-bottom: 2px solid #714B67; padding: 15px 0px;" | ||||
|  |      id="screenshots"> | ||||
|  |     <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |         <img src="./assets/misc/pictures.png"/> | ||||
|  |     </div> | ||||
|  |     <h2 class="mt-2" | ||||
|  |         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | ||||
|  |         Screenshots | ||||
|  |     </h2> | ||||
|  | </div> | ||||
|  | <div class="row"> | ||||
|  |     <div class="col-sm-12"> | ||||
|  | 
 | ||||
|  |         <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                 View Tickets created from website and also in the draft stage | ||||
|  |                 together inside 'New Tickets' tile along with the count. | ||||
|  |             </h3> | ||||
|  |             <img src="./assets/screenshots/Ticket1.png" | ||||
|  |                  class="img-thumbnail"><br/> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                 Manage the tickets in backend by clicking on the 'New Tickets' | ||||
|  |                 tiles. | ||||
|  |             </h3> | ||||
|  |             <img src="./assets/screenshots/Ticket2.png" | ||||
|  |                  class="img-thumbnail"> | ||||
|  |         </div> | ||||
|  |         <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                 View Tickets that are In Progress. | ||||
|  |             </h3> | ||||
|  |             <img src="./assets/screenshots/Ticket3.png" | ||||
|  |                  class="img-thumbnail"> | ||||
|  |         </div> | ||||
|  |         <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                 View and manage tickets that are in the Done/Completed state. | ||||
|  |             </h3> | ||||
|  |             <img src="./assets/screenshots/Ticket4.png" | ||||
|  |                  class="img-thumbnail"> | ||||
|  |         </div> | ||||
|  |         <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                 Manage Helpdesk Teams ,also shows the count of teams existing. | ||||
|  |             </h3> | ||||
|  |             <img src="./assets/screenshots/Ticket5.png" | ||||
|  |                  class="img-thumbnail"> | ||||
|  |         </div> | ||||
|  |         <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                 View tickets created from websites that are in Inbox. | ||||
|  |             </h3> | ||||
|  |             <img src="./assets/screenshots/Ticket6.png" | ||||
|  |                  class="img-thumbnail"> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  |     <div class="col-sm-12"> | ||||
|  |         <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                 With the help of doughnut chart, analyse the Monthly Count of | ||||
|  |                 Tickets. | ||||
|  |             </h3> | ||||
|  |             <img src="./assets/screenshots/Ticket7.png" | ||||
|  |                  class="img-thumbnail"> | ||||
|  |         </div> | ||||
|  |         <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                 Hover on the segments in the graph to view the count of tickets. | ||||
|  |             </h3> | ||||
|  |             <img src="./assets/screenshots/Ticket8.png" | ||||
|  |                  class="img-thumbnail"> | ||||
|  |         </div> | ||||
|  |         <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                 With the help of Bar graph, analyse ratio between the Helpdesk | ||||
|  |                 Teams and No. of tickets assigned to them. | ||||
|  |             </h3> | ||||
|  |             <img src="./assets/screenshots/Ticket9.png" | ||||
|  |                  class="img-thumbnail"> | ||||
|  |         </div> | ||||
|  |         <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                 In the Bar graph, view the ratio between Helpdesk Tickets and | ||||
|  |                 related Projects. | ||||
|  |             </h3> | ||||
|  |             <img src="./assets/screenshots/Ticket10.png" | ||||
|  |                  class="img-thumbnail"> | ||||
|  |         </div> | ||||
|  |         <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                 With the help of polararea chart, analyse ratio between the | ||||
|  |                 Helpdesk Teams and No. of Billed Tasks. | ||||
|  |             </h3> | ||||
|  |             <img src="./assets/screenshots/Ticket11.png" | ||||
|  |                  class="img-thumbnail"> | ||||
|  |         </div> | ||||
|  |         <div style="display: block; margin: 30px auto;"> | ||||
|  |             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | ||||
|  |                 The Line chart shows the ratio between Helpdesk Teams and No. of | ||||
|  |                 tickets resolved by them. | ||||
|  |             </h3> | ||||
|  |             <img src="./assets/screenshots/Ticket12.png" | ||||
|  |                  class="img-thumbnail"> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  | </div> | ||||
|  | <!-- END OF SCREENSHOTS SECTION --> | ||||
|  | 
 | ||||
|  | <!-- RELATED PRODUCTS --> | ||||
|  | 
 | ||||
|  | <div class="row"> | ||||
|  |     <div class="col-sm-12 col-md-12-col-lg-2"> | ||||
|  |         <h2 style="font-weight: bold; color: #3D3D4E;">Related Modules</h2> | ||||
|  |         <p style="color: #777783;">Explore our related modules</p> | ||||
|  |         <hr/> | ||||
|  |     </div> | ||||
|  |     <div class="carousel-inner"> | ||||
|  |         <div class="carousel-item active" style="min-height:0px"> | ||||
|  |             <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" | ||||
|  |                  style="float:left"> | ||||
|  |                 <a href="https://apps.odoo.com/apps/modules/14.0/website_product_attachments/" | ||||
|  |                    target="_blank"> | ||||
|  |                     <div style="border-radius:10px"> | ||||
|  |                         <img class="img img-responsive center-block" | ||||
|  |                              style="border-top-left-radius:10px; border-top-right-radius:10px" | ||||
|  |                              src="./assets/modules/web_2.png"> | ||||
|  |                     </div> | ||||
|  |                 </a> | ||||
|  |             </div> | ||||
|  |             <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" | ||||
|  |                  style="float:left"> | ||||
|  |                 <a href="https://apps.odoo.com/apps/modules/14.0/insta_feed_snippet/" | ||||
|  |                    target="_blank"> | ||||
|  |                     <div style="border-radius:10px"> | ||||
|  |                         <img class="img img-responsive center-block" | ||||
|  |                              style="border-top-left-radius:10px; border-top-right-radius:10px" | ||||
|  |                              src="./assets/modules/web_3.png"> | ||||
|  |                     </div> | ||||
|  |                 </a> | ||||
|  |             </div> | ||||
|  |             <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" | ||||
|  |                  style="float:left"> | ||||
|  |                 <a href="https://apps.odoo.com/apps/modules/14.0/featured_brand_snippet/" | ||||
|  |                    target="_blank"> | ||||
|  |                     <div style="border-radius:10px"> | ||||
|  |                         <img class="img img-responsive center-block" | ||||
|  |                              style="border-top-left-radius:10px; border-top-right-radius:10px" | ||||
|  |                              src="./assets/modules/web_4.png"> | ||||
|  |                     </div> | ||||
|  |                 </a> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |         <div class="carousel-item" style="min-height:0px"> | ||||
|  |             <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" | ||||
|  |                  style="float:left"> | ||||
|  |                 <a href="https://apps.odoo.com/apps/modules/14.0/website_return_management/" | ||||
|  |                    target="_blank"> | ||||
|  |                     <div style="border-radius:10px"> | ||||
|  |                         <img class="img img-responsive center-block" | ||||
|  |                              style="border-top-left-radius:10px; border-top-right-radius:10px" | ||||
|  |                              src="./assets/modules/web_5.png"> | ||||
|  |                     </div> | ||||
|  |                 </a> | ||||
|  |             </div> | ||||
|  |             <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" | ||||
|  |                  style="float:left"> | ||||
|  |                 <a href="https://apps.odoo.com/apps/modules/14.0/website_product_publish/" | ||||
|  |                    target="_blank"> | ||||
|  |                     <div style="border-radius:10px"> | ||||
|  |                         <img class="img img-responsive center-block" | ||||
|  |                              style="border-top-left-radius:10px; border-top-right-radius:10px" | ||||
|  |                              src="./assets/modules/web_6.png"> | ||||
|  |                     </div> | ||||
|  |                 </a> | ||||
|  |             </div> | ||||
|  |             <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" | ||||
|  |                  style="float:left"> | ||||
|  |                 <a href="https://apps.odoo.com/apps/modules/14.0/website_multi_product_return_management/" | ||||
|  |                    target="_blank"> | ||||
|  |                     <div style="border-radius:10px"> | ||||
|  |                         <img class="img img-responsive center-block" | ||||
|  |                              style="border-top-left-radius:10px; border-top-right-radius:10px" | ||||
|  |                              src="./assets/modules/web_1.png"> | ||||
|  |                     </div> | ||||
|  |                 </a> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  | </div> | ||||
|  | <!-- END OF RELATED PRODUCTS --> | ||||
|  | 
 | ||||
|  | <!-- OUR SERVICES --> | ||||
|  | 
 | ||||
|  | <div class="d-flex align-items-center" | ||||
|  |      style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | ||||
|  |     <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |         <img src="./assets/misc/star.png"/> | ||||
|  |     </div> | ||||
|  |     <h2 class="mt-2" | ||||
|  |         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | ||||
|  |         Our Services | ||||
|  |     </h2> | ||||
|  | </div> | ||||
|  | 
 | ||||
|  | <div class="container my-5"> | ||||
|  |     <div class="row"> | ||||
|  |         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |                  style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |                 <img src="assets/icons/cogs.png" class="img-responsive" | ||||
|  |                      height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" | ||||
|  |                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |                 Odoo | ||||
|  |                 Customization</h6> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |                  style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |                 <img src="assets/icons/wrench.png" class="img-responsive" | ||||
|  |                      height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" | ||||
|  |                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |                 Odoo | ||||
|  |                 Implementation</h6> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |                  style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |                 <img src="assets/icons/lifebuoy.png" class="img-responsive" | ||||
|  |                      height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" | ||||
|  |                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |                 Odoo | ||||
|  |                 Support</h6> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  | 
 | ||||
|  |         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |                  style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |                 <img src="assets/icons/user.png" class="img-responsive" | ||||
|  |                      height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" | ||||
|  |                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |                 Hire | ||||
|  |                 Odoo | ||||
|  |                 Developer</h6> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |                  style="background-color: #54a0ff  !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |                 <img src="assets/icons/puzzle.png" class="img-responsive" | ||||
|  |                      height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" | ||||
|  |                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |                 Odoo | ||||
|  |                 Integration</h6> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |                  style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |                 <img src="assets/icons/update.png" class="img-responsive" | ||||
|  |                      height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" | ||||
|  |                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |                 Odoo | ||||
|  |                 Migration</h6> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  | 
 | ||||
|  |         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |                  style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |                 <img src="assets/icons/consultation.png" class="img-responsive" | ||||
|  |                      height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" | ||||
|  |                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |                 Odoo | ||||
|  |                 Consultancy</h6> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |                  style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |                 <img src="assets/icons/training.png" class="img-responsive" | ||||
|  |                      height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" | ||||
|  |                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |                 Odoo | ||||
|  |                 Implementation</h6> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | ||||
|  |             <div class="d-flex justify-content-center align-items-center mx-3 my-3" | ||||
|  |                  style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | ||||
|  |                 <img src="assets/icons/license.png" class="img-responsive" | ||||
|  |                      height="48px" width="48px"> | ||||
|  |             </div> | ||||
|  |             <h6 class="text-center" | ||||
|  |                 style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | ||||
|  |                 Odoo | ||||
|  |                 Licensing Consultancy</h6> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  | 
 | ||||
|  | </div> | ||||
|  | 
 | ||||
|  | <!-- END OF OUR SERVICES --> | ||||
|  | 
 | ||||
|  | <!-- OUR INDUSTRIES --> | ||||
|  | 
 | ||||
|  | <div class="d-flex align-items-center" | ||||
|  |      style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | ||||
|  |     <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |         <img src="assets/misc/corporate.png"/> | ||||
|  |     </div> | ||||
|  |     <h2 class="mt-2" | ||||
|  |         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | ||||
|  |         Our | ||||
|  |         Industries | ||||
|  |     </h2> | ||||
|  | </div> | ||||
|  | 
 | ||||
|  | <div class="container my-5"> | ||||
|  |     <div class="row"> | ||||
|  |         <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |                 <img src="assets/icons/trading-black.png" | ||||
|  |                      class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                     Trading | ||||
|  |                 </h5> | ||||
|  |                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                     Easily procure | ||||
|  |                     and | ||||
|  |                     sell your products</p> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |                 <img src="assets/icons/pos-black.png" | ||||
|  |                      class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                     POS | ||||
|  |                 </h5> | ||||
|  |                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                     Easy | ||||
|  |                     configuration | ||||
|  |                     and convivial experience</p> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |                 <img src="assets/icons/education-black.png" | ||||
|  |                      class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                     Education | ||||
|  |                 </h5> | ||||
|  |                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                     A platform for | ||||
|  |                     educational management</p> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |                 <img src="assets/icons/manufacturing-black.png" | ||||
|  |                      class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                     Manufacturing | ||||
|  |                 </h5> | ||||
|  |                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                     Plan, track and | ||||
|  |                     schedule your operations</p> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |                 <img src="assets/icons/ecom-black.png" | ||||
|  |                      class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                     E-commerce & Website | ||||
|  |                 </h5> | ||||
|  |                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                     Mobile | ||||
|  |                     friendly, | ||||
|  |                     awe-inspiring product pages</p> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |                 <img src="assets/icons/service-black.png" | ||||
|  |                      class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                     Service Management | ||||
|  |                 </h5> | ||||
|  |                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                     Keep track of | ||||
|  |                     services and invoice</p> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |                 <img src="assets/icons/restaurant-black.png" | ||||
|  |                      class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                     Restaurant | ||||
|  |                 </h5> | ||||
|  |                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                     Run your bar or | ||||
|  |                     restaurant methodically</p> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  | 
 | ||||
|  |         <div class="col-lg-3"> | ||||
|  |             <div class="my-4 d-flex flex-column justify-content-center" | ||||
|  |                  style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | ||||
|  |                 <img src="assets/icons/hotel-black.png" | ||||
|  |                      class="img-responsive mb-3" height="48px" width="48px"> | ||||
|  |                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | ||||
|  |                     Hotel Management | ||||
|  |                 </h5> | ||||
|  |                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | ||||
|  |                     An | ||||
|  |                     all-inclusive | ||||
|  |                     hotel management application</p> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  | </div> | ||||
|  | 
 | ||||
|  | <!-- END OF OUR INDUSTRIES --> | ||||
|  | 
 | ||||
|  | <!-- SUPPORT --> | ||||
|  | <div class="d-flex align-items-center" | ||||
|  |      style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | ||||
|  |     <div class="d-flex justify-content-center align-items-center mr-2" | ||||
|  |          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | ||||
|  |         <img src="./assets/misc/customer-support.png"/> | ||||
|  |     </div> | ||||
|  |     <h2 class="mt-2" | ||||
|  |         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | ||||
|  |         Support | ||||
|  |     </h2> | ||||
|  | </div> | ||||
|  | <div class="container mt-5"> | ||||
|  |     <div class="row"> | ||||
|  |         <div class="col-sm-12 col-md-6"> | ||||
|  |             <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> | ||||
|  |                 <div class="mr-4" | ||||
|  |                      style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> | ||||
|  |                     <img src="./assets/misc/support.png" height="48" width="48" | ||||
|  |                          style="width: 42px; height: 42px;"/> | ||||
|  |                 </div> | ||||
|  |                 <div> | ||||
|  |                     <h4>Need Help?</h4> | ||||
|  |                     <p style="line-height: 100%;">Got questions or need help? | ||||
|  |                         Get in touch.</p> | ||||
|  |                     <a href="mailto:odoo@cybrosys.com"> | ||||
|  |                         <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> | ||||
|  |                             odoo@cybrosys.com</p> | ||||
|  |                     </a> | ||||
|  |                 </div> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |         <div class="col-sm-12 col-md-6"> | ||||
|  |             <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> | ||||
|  |                 <div class="mr-4" | ||||
|  |                      style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> | ||||
|  |                     <img src="./assets/misc/whatsapp.png" height="52" width="52" | ||||
|  |                          style="width: 52px; height: 52px;"/> | ||||
|  |                 </div> | ||||
|  |                 <div> | ||||
|  |                     <h4>WhatsApp</h4> | ||||
|  |                     <p style="line-height: 100%;">Say hi to us on WhatsApp!</p> | ||||
|  |                     <a href="https://api.whatsapp.com/send?phone=918606827707"> | ||||
|  |                         <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> | ||||
|  |                             +91 86068 | ||||
|  |                             27707</p> | ||||
|  |                     </a> | ||||
|  |                 </div> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  |     <div class="row"> | ||||
|  |         <div class="col-sm-12 my-5 d-flex justify-content-center align-items-center"> | ||||
|  |             <img src="./assets/misc/logo.png" width="144" height="31" | ||||
|  |                  style="width:144px; height: 31px; margin-top: 40px;"/> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  | </div> | ||||
|  | <!-- END OF SUPPORT --> | ||||
| @ -0,0 +1,232 @@ | |||||
|  | 
 | ||||
|  | .o_action_manager { | ||||
|  |     overflow: auto !important; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .help_dashboards { | ||||
|  |     padding-top: 10px; | ||||
|  |     background-color: #f8faff !important; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .dashboard_card h4 { | ||||
|  |     font-size: 1.1rem; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .main-section { | ||||
|  |     margin-left: 6px; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .breadcrumbs { | ||||
|  |     margin-top: 0; | ||||
|  | } | ||||
|  | 
 | ||||
|  | /*    Widget One | ||||
|  | ---------------------------*/ | ||||
|  | .stat-content { | ||||
|  |     display: inline-block; | ||||
|  |     width: 66%; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .stat-icon { | ||||
|  |     display: inline-block; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .stat-widget-one .stat-icon { | ||||
|  |     vertical-align: top; | ||||
|  |     margin: auto; | ||||
|  |     width: 100%; | ||||
|  |     color: #01c490; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .stat-widget-one .stat-icon i { | ||||
|  |     font-size: 30px; | ||||
|  |     font-weight: 900; | ||||
|  |     display: inline-block; | ||||
|  |     color: #01c490; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .stat-widget-one .stat-text { | ||||
|  |     font-size: 11px; | ||||
|  |     color: #868e96; | ||||
|  |     font-weight: bold; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .stat-widget-one .stat-digit { | ||||
|  |     font-size: 24px; | ||||
|  |     color: #02448b; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .stat-count { | ||||
|  |     font-size: 20px; | ||||
|  |     text-align: center; | ||||
|  |     color: #00438b; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .stat-title { | ||||
|  |     font-size: 17px; | ||||
|  |     text-align: center; | ||||
|  |     color: #00438b; | ||||
|  | } | ||||
|  | 
 | ||||
|  | /*=====================Dashboard===========================*/ | ||||
|  | 
 | ||||
|  | .dashboard_card { | ||||
|  |     padding: 0px; | ||||
|  |     margin-bottom: 1.5rem; | ||||
|  |     border-radius: 0px; | ||||
|  |     box-shadow: none; | ||||
|  |     background: none; | ||||
|  |     transition: transform 0.2s ease, box-shadow 0.2s ease; | ||||
|  |     will-change: transform, box-shadow; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .dashboard_card:hover { | ||||
|  |     transform: translateY(-2px) translateZ(0) !important; | ||||
|  |     box-shadow: 0 10px 10px 0 rgba(62, 57, 107, 0.12), 0 0 0 transparent !important; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .helpdesk { | ||||
|  |     margin-top: 3%; | ||||
|  |     margin-bottom: 2%; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .helpdesk .stat-icon { | ||||
|  |     border-radius: 15px 0 0 15px; | ||||
|  |     width: 30%; | ||||
|  |     height: 100px; | ||||
|  |     text-align: center; | ||||
|  |     padding-top: 11%; | ||||
|  |     background: #4a5c9a; | ||||
|  |     color: #fff; | ||||
|  | } | ||||
|  | 
 | ||||
|  | #team_ico { | ||||
|  |     -webkit-text-stroke: 1px #8e8e8e; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .helpdesk .dashboard_card { | ||||
|  |     border-radius: 15px; | ||||
|  |     transition: transform 0.2s ease, box-shadow 0.2s ease; | ||||
|  |     will-change: transform, box-shadow; | ||||
|  |     box-shadow: 0 10px 40px 0 rgba(62, 57, 107, 0.07), | ||||
|  |     0 2px 9px 0 rgba(62, 57, 107, 0.06); | ||||
|  | } | ||||
|  | 
 | ||||
|  | .stat-widget-one .stat-text { | ||||
|  |     font-size: 14px; | ||||
|  |     color: #314384ff; | ||||
|  |     margin: 2rem 0rem 1rem 0rem; | ||||
|  |     text-align: center; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .stat-widget-one .stat-digit { | ||||
|  |     font-size: 20px; | ||||
|  |     font-weight: bolder; | ||||
|  |     padding: 1px 10px 2px 0; | ||||
|  |     color: #8061a9; | ||||
|  |     text-shadow: 0px 0px 20px #000000; | ||||
|  |     text-align: center; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .stat-widget-one .stat-icon i { | ||||
|  |     font-size: 25px; | ||||
|  |     font-weight: 900; | ||||
|  |     display: inline-block; | ||||
|  |     color: #fff; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .stat-widget-one { | ||||
|  |     border-radius: 15px; | ||||
|  |     background-color: white; | ||||
|  |     text-align: inherit !important; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .stat-widget-one { | ||||
|  |     width: 100%; | ||||
|  | } | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | .inbox_tickets .stat-widget-one .stat-text { | ||||
|  |     color: #706F8E; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .inbox_tickets .stat-icon { | ||||
|  |     background: #706F8E !important; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .inprogress_tickets .stat-widget-one .stat-text { | ||||
|  |     color: #9AA8A8; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .inprogress_tickets .stat-icon { | ||||
|  |     background: #9AA8A8 !important; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .done_tickets .stat-icon { | ||||
|  |     background: #847A9F !important; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .done_tickets .stat-widget-one .stat-text { | ||||
|  |     color: #847A9F; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .team_card .stat-icon { | ||||
|  |     background: #66719a !important; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .team_card .stat-widget-one .stat-text { | ||||
|  |     color: #66719a; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .dashboard_card-body { | ||||
|  |     display: flex; | ||||
|  |     justify-content: space-between; | ||||
|  |     align-items: center; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .pending_detail { | ||||
|  |     width: 75%; | ||||
|  |     padding: 0 0 0 40px; | ||||
|  |     margin: 0 0 0 4px; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .ticket_box { | ||||
|  |     height: 32rem; | ||||
|  |     overflow-y: auto; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .ticket_box_head { | ||||
|  |     text-align: center; | ||||
|  |     padding: 12px 0; | ||||
|  |     color: rgb(73 80 87 / 76%); | ||||
|  |     font-weight: bold; | ||||
|  |     font-size: 20px; | ||||
|  |     background: #b1cccc; | ||||
|  |     margin-bottom: 9px; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .tickets_head { | ||||
|  |     margin-left: 10px; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .pending_tickets { | ||||
|  |     padding-left: 0 ! important; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .tickets_list { | ||||
|  |     font-weight: 500; | ||||
|  |     font-size: 14px; | ||||
|  |     margin: 10px; | ||||
|  |     list-style-type: none; | ||||
|  |     border-radius: 5px; | ||||
|  |     border: 1px solid rgba(69, 72, 103, 0.71); | ||||
|  |     background: #f3f3f3bd; | ||||
|  |     padding: 10px !important; | ||||
|  | } | ||||
|  | 
 | ||||
|  | .half_chart.chart-container.card-shadow { | ||||
|  |     height: 32rem; | ||||
|  | } | ||||
|  | .chart-container.card-shadow { | ||||
|  |     height: 32rem; | ||||
|  | } | ||||
| @ -0,0 +1,454 @@ | |||||
|  | odoo.define("odoo_website_helpdesk_dashboard.dashboard_view", function (require) { | ||||
|  |     "use strict"; | ||||
|  |     const AbstractAction = require("web.AbstractAction"); | ||||
|  |     const core = require("web.core"); | ||||
|  |     const rpc = require("web.rpc"); | ||||
|  |     var ajax = require("web.ajax"); | ||||
|  |     const _t = core._t; | ||||
|  |     const QWeb = core.qweb; | ||||
|  |     const DashBoard = AbstractAction.extend({ | ||||
|  |         template: "HelpDesk_Dashboard", | ||||
|  |         events: { | ||||
|  |             "click .inbox_tickets": "tickets_inbox", | ||||
|  |             "click .inprogress_tickets": "tickets_inprogress", | ||||
|  |             "click .done_tickets": "tickets_done", | ||||
|  |             "click .team_card": "helpdesk_teams" | ||||
|  |         }, | ||||
|  | //        Initializes the dashboard and sets the available dashboard templates
 | ||||
|  |         init: function (parent, context) { | ||||
|  |             this._super(parent, context); | ||||
|  |             this.dashboards_templates = ['DashBoardHelpDesk']; | ||||
|  |         }, | ||||
|  | //        Sets the title of the dashboard.Renders the dashboards and graphs.
 | ||||
|  | //        Adds a CSS class to the parent element.
 | ||||
|  |         start: function () { | ||||
|  |             var self = this; | ||||
|  |             this.set("title", 'Dashboard'); | ||||
|  |             return this._super().then(function () { | ||||
|  |                 self.render_dashboards(); | ||||
|  |                 self.render_graphs(); | ||||
|  |                 self.$el.parent().addClass('oe_background_grey'); | ||||
|  |             }); | ||||
|  |         }, | ||||
|  | //        Calls individual methods to render different graphs.
 | ||||
|  |         render_graphs: function () { | ||||
|  |             var self = this; | ||||
|  |             self.render_tickets_month_graph(); | ||||
|  |             self.render_team_ticket_count_graph(); | ||||
|  |             self.render_projects_ticket_graph(); | ||||
|  |             self.render_billed_task_team_graph(); | ||||
|  |             self.render_team_ticket_done_graph(); | ||||
|  |         }, | ||||
|  | //        Fetches data using an RPC call and creates a doughnut chart using
 | ||||
|  | //        the Chart.js library. Renders the ticket month graph.
 | ||||
|  |         render_tickets_month_graph: function () { | ||||
|  |             var self = this | ||||
|  |             var ctx = self.$(".ticket_month"); | ||||
|  |             rpc.query({ | ||||
|  |                 model: "help.ticket", | ||||
|  |                 method: "get_ticket_month_pie", | ||||
|  |             }).then(function (arrays) { | ||||
|  |                 var data = { | ||||
|  |                     labels: arrays[1], | ||||
|  |                     datasets: [{ | ||||
|  |                         label: "", | ||||
|  |                         data: arrays[0], | ||||
|  |                         backgroundColor: [ | ||||
|  |                             "#665191", | ||||
|  |                             "#ff7c43", | ||||
|  |                             "#ffa600", | ||||
|  |                             "#a05195", | ||||
|  |                             "#2f4b7c", | ||||
|  |                             "#f95d6a", | ||||
|  |                             "#6d5c16", | ||||
|  |                             "#003f5c", | ||||
|  |                             "#d45087" | ||||
|  |                         ], | ||||
|  |                         borderColor: [ | ||||
|  |                             "#003f5c", | ||||
|  |                             "#2f4b7c", | ||||
|  |                             "#f95d6a", | ||||
|  |                             "#665191", | ||||
|  |                             "#d45087", | ||||
|  |                             "#ff7c43", | ||||
|  |                             "#ffa600", | ||||
|  |                             "#a05195", | ||||
|  |                             "#6d5c16" | ||||
|  |                         ], | ||||
|  |                         borderWidth: 1 | ||||
|  |                     },] | ||||
|  |                 }; | ||||
|  |                 //Options
 | ||||
|  |                 var options = { | ||||
|  |                     responsive: true, | ||||
|  |                     title: false, | ||||
|  |                     legend: { | ||||
|  |                         display: true, | ||||
|  |                         position: "right", | ||||
|  |                         labels: { | ||||
|  |                             fontColor: "#333", | ||||
|  |                             fontSize: 16 | ||||
|  |                         } | ||||
|  |                     }, | ||||
|  |                     scales: { | ||||
|  |                         yAxes: [{ | ||||
|  |                             gridLines: { | ||||
|  |                                 color: "rgba(0, 0, 0, 0)", | ||||
|  |                                 display: false, | ||||
|  |                             }, | ||||
|  |                             ticks: { | ||||
|  |                                 min: 0, | ||||
|  |                                 display: false, | ||||
|  |                             } | ||||
|  |                         }] | ||||
|  |                     } | ||||
|  |                 }; | ||||
|  |                 //Create Chart class object
 | ||||
|  |                 var chart = new Chart(ctx, { | ||||
|  |                     type: "doughnut", | ||||
|  |                     data: data, | ||||
|  |                     options: options | ||||
|  |                 }); | ||||
|  |             }); | ||||
|  |         }, | ||||
|  | //        Fetches data using an RPC call and get count of pie.
 | ||||
|  | //        Renders the team ticket count graph.
 | ||||
|  |         render_team_ticket_count_graph: function () { | ||||
|  |             var self = this | ||||
|  |             var ctx = self.$(".team_ticket_count"); | ||||
|  |             rpc.query({ | ||||
|  |                 model: "help.ticket", | ||||
|  |                 method: "get_team_ticket_count_pie", | ||||
|  |             }).then(function (arrays) { | ||||
|  |                 var data = { | ||||
|  |                     labels: arrays[1], | ||||
|  |                     datasets: [{ | ||||
|  |                         label: "", | ||||
|  |                         data: arrays[0], | ||||
|  |                         backgroundColor: [ | ||||
|  |                             'rgba(255, 99, 132, 0.2)', | ||||
|  |                             'rgba(255, 159, 64, 0.2)', | ||||
|  |                             'rgba(255, 205, 86, 0.2)', | ||||
|  |                             'rgba(75, 192, 192, 0.2)', | ||||
|  |                             'rgba(54, 162, 235, 0.2)', | ||||
|  |                             'rgba(153, 102, 255, 0.2)', | ||||
|  |                             'rgba(201, 203, 207, 0.2)' | ||||
|  |                         ], | ||||
|  |                         borderColor: ['rgb(255, 99, 132)', | ||||
|  |                             'rgb(255, 159, 64)', | ||||
|  |                             'rgb(255, 205, 86)', | ||||
|  |                             'rgb(75, 192, 192)', | ||||
|  |                             'rgb(54, 162, 235)', | ||||
|  |                             'rgb(153, 102, 255)', | ||||
|  |                             'rgb(201, 203, 207)' | ||||
|  |                         ], | ||||
|  |                         borderWidth: 1 | ||||
|  |                     },] | ||||
|  |                 }; | ||||
|  | 
 | ||||
|  |                 //Options
 | ||||
|  |                 var options = { | ||||
|  |                     responsive: true, | ||||
|  |                     title: false, | ||||
|  |                     maintainAspectRatio: true, | ||||
|  |                     legend: { | ||||
|  |                         display: false | ||||
|  |                     }, | ||||
|  |                     scales: { | ||||
|  |                         yAxes: [{ | ||||
|  |                             display: true, | ||||
|  |                             ticks: { | ||||
|  |                                 beginAtZero: true, | ||||
|  |                                 steps: 10, | ||||
|  |                                 stepValue: 5, | ||||
|  |                             } | ||||
|  |                         }] | ||||
|  |                     } | ||||
|  |                 }; | ||||
|  |                 //Create Chart class object
 | ||||
|  |                 var chart = new Chart(ctx, { | ||||
|  |                     type: "bar", | ||||
|  |                     data: data, | ||||
|  |                     options: options | ||||
|  |                 }); | ||||
|  |             }); | ||||
|  |         }, | ||||
|  | //        Fetches data using an RPC call and get ticket count.
 | ||||
|  | //        Renders the projects ticket graph.
 | ||||
|  |         render_projects_ticket_graph: function () { | ||||
|  |             var self = this | ||||
|  |             var ctx = self.$(".projects_ticket"); | ||||
|  |             rpc.query({ | ||||
|  |                 model: "help.ticket", | ||||
|  |                 method: "get_project_ticket_count", | ||||
|  |             }).then(function (arrays) { | ||||
|  |                 var data = { | ||||
|  |                     labels: arrays[1], | ||||
|  |                     datasets: [{ | ||||
|  |                         label: "", | ||||
|  |                         data: arrays[0], | ||||
|  |                         backgroundColor: [ | ||||
|  |                             "rgba(175,180,255,0.75)", | ||||
|  |                             "rgba(133,208,255,0.9)", | ||||
|  |                             "rgba(113,255,221,0.79)", | ||||
|  |                             "rgba(255,187,95,0.77)", | ||||
|  |                             "#2c7fb8", | ||||
|  |                             "#fa9fb5", | ||||
|  |                             "#2f4b7c", | ||||
|  |                         ], | ||||
|  |                         borderColor: [ | ||||
|  |                             "#003f5c", | ||||
|  |                             "#2f4b7c", | ||||
|  |                             "#f95d6a", | ||||
|  |                             "#665191", | ||||
|  |                             "#d45087", | ||||
|  |                             "#ff7c43", | ||||
|  |                             "#ffa600", | ||||
|  |                             "#a05195", | ||||
|  |                             "#6d5c16" | ||||
|  |                         ], | ||||
|  |                         borderWidth: 1 | ||||
|  |                     },] | ||||
|  |                 }; | ||||
|  |                   //Options
 | ||||
|  |                 var options = { | ||||
|  |                     responsive: true, | ||||
|  |                     title: false, | ||||
|  |                     maintainAspectRatio: true, | ||||
|  |                     legend: { | ||||
|  |                         display: false | ||||
|  |                     }, | ||||
|  |                     scales: { | ||||
|  |                         yAxes: [{ | ||||
|  |                             display: true, | ||||
|  |                             ticks: { | ||||
|  |                                 beginAtZero: true, | ||||
|  |                                 steps: 10, | ||||
|  |                                 stepValue: 5, | ||||
|  |                             } | ||||
|  |                         }] | ||||
|  |                     } | ||||
|  |                 }; | ||||
|  |                 //Create Chart class object
 | ||||
|  |                 var chart = new Chart(ctx, { | ||||
|  |                     type: "bar", | ||||
|  |                     data: data, | ||||
|  |                     options: options | ||||
|  |                 }); | ||||
|  |             }); | ||||
|  |         }, | ||||
|  | //        Fetches data using an RPC call and creates a polar area chart using
 | ||||
|  | //        Chart.js. Renders the billed task team graph
 | ||||
|  |         render_billed_task_team_graph: function () { | ||||
|  |             var self = this | ||||
|  |             var ctx = self.$(".billed_team"); | ||||
|  |             rpc.query({ | ||||
|  |                 model: "help.ticket", | ||||
|  |                 method: "get_billed_task_team_chart", | ||||
|  |             }).then(function (arrays) { | ||||
|  |                 var data = { | ||||
|  |                     labels: arrays[1], | ||||
|  |                     datasets: [{ | ||||
|  |                         label: "", | ||||
|  |                         data: arrays[0], | ||||
|  |                         backgroundColor: [ | ||||
|  |                             "#a07fcd", | ||||
|  |                             "#fea84c", | ||||
|  |                             "#2cb8b1", | ||||
|  |                             "#fa9fb5", | ||||
|  |                             "#2f4b7c", | ||||
|  |                             "#2c7fb8" | ||||
|  |                         ], | ||||
|  |                         borderColor: [ | ||||
|  |                             "#4fc9ff", | ||||
|  |                             "#2f4b7c", | ||||
|  |                             "#f95d6a", | ||||
|  |                             "#665191", | ||||
|  |                             "#d45087", | ||||
|  |                             "#ff7c43", | ||||
|  |                             "#ffa600", | ||||
|  |                             "#a05195", | ||||
|  |                             "#6d5c16" | ||||
|  |                         ], | ||||
|  |                         borderWidth: 1 | ||||
|  |                     },] | ||||
|  |                 }; | ||||
|  |                 //Options
 | ||||
|  |                 var options = { | ||||
|  |                     responsive: true, | ||||
|  |                     title: false, | ||||
|  |                     legend: { | ||||
|  |                         display: true, | ||||
|  |                         position: "right", | ||||
|  |                         labels: { | ||||
|  |                             fontColor: "#333", | ||||
|  |                             fontSize: 16 | ||||
|  |                         } | ||||
|  |                     }, | ||||
|  |                     scales: { | ||||
|  |                         yAxes: [{ | ||||
|  |                             gridLines: { | ||||
|  |                                 color: "rgba(0, 0, 0, 0)", | ||||
|  |                                 display: false, | ||||
|  |                             }, | ||||
|  |                             ticks: { | ||||
|  |                                 min: 0, | ||||
|  |                                 display: false, | ||||
|  |                             } | ||||
|  |                         }] | ||||
|  |                     } | ||||
|  |                 }; | ||||
|  |                 //Create Chart class object
 | ||||
|  |                 var chart = new Chart(ctx, { | ||||
|  |                     type: "polarArea", | ||||
|  |                     data: data, | ||||
|  |                     options: options | ||||
|  |                 }); | ||||
|  |             }); | ||||
|  |         }, | ||||
|  | //        Fetches data using an RPC call and creates a pie chart using Chart.js.
 | ||||
|  | //        Renders the team ticket done graph.
 | ||||
|  |         render_team_ticket_done_graph: function () { | ||||
|  |             var self = this | ||||
|  |             var ctx = self.$(".team_ticket_done"); | ||||
|  |             rpc.query({ | ||||
|  |                 model: "help.ticket", | ||||
|  |                 method: "get_team_ticket_done_pie", | ||||
|  |             }).then(function (arrays) { | ||||
|  |                 var data = { | ||||
|  |                     labels: arrays[1], | ||||
|  |                     datasets: [{ | ||||
|  |                         fill: false, | ||||
|  |                         label: "", | ||||
|  |                         data: arrays[0], | ||||
|  |                         backgroundColor:[ | ||||
|  |                             "#b7c1ff", | ||||
|  |                             "#6159ff", | ||||
|  |                             "#c79bff", | ||||
|  |                             "#0095b2" | ||||
|  |                         ], | ||||
|  |                         borderColor: | ||||
|  |                             'rgba(54,162,235,0.49)' | ||||
|  |                         , | ||||
|  |                         borderWidth: 2 | ||||
|  |                     },] | ||||
|  |                 }; | ||||
|  |                 //Options
 | ||||
|  |                 var options = { | ||||
|  |                     responsive: true, | ||||
|  |                     title: false, | ||||
|  |                     maintainAspectRatio: true, | ||||
|  |                     legend: { | ||||
|  |                         display: false | ||||
|  |                     }, | ||||
|  |                     scales: { | ||||
|  |                         yAxes: [{ | ||||
|  |                             display: true, | ||||
|  |                             ticks: { | ||||
|  |                                 beginAtZero: true, | ||||
|  |                                 steps: 10, | ||||
|  |                                 stepValue: 5, | ||||
|  |                             } | ||||
|  |                         }] | ||||
|  |                     } | ||||
|  |                 }; | ||||
|  |                 //Create Chart class object
 | ||||
|  |                 var chart = new Chart(ctx, { | ||||
|  |                     type: "line", | ||||
|  |                     data: data, | ||||
|  |                     options: options | ||||
|  |                 }); | ||||
|  |             }); | ||||
|  |         }, | ||||
|  | //        Which will render dashboard for helpdesk
 | ||||
|  |         render_dashboards: function () { | ||||
|  |             var self = this; | ||||
|  |             var templates = ['DashBoardHelpDesk']; | ||||
|  |             _.each(templates, function (template) { | ||||
|  |                 self.$('.helpdesk_dashboard_main').append(QWeb.render(template, {widget: self})); | ||||
|  |             }); | ||||
|  |             rpc.query({ | ||||
|  |                 model: "help.ticket", | ||||
|  |                 method: "get_tickets_count", | ||||
|  |                 args: [], | ||||
|  |             }) | ||||
|  |                 .then(function (result) { | ||||
|  |                     $("#inbox_count").append("<span class='stat-digit'>" + result.inbox_count + "</span>"); | ||||
|  |                     $("#inprogress_count").append("<span class='stat-digit'>" + result.progress_count + "</span>"); | ||||
|  |                     $("#done_count").append("<span class='stat-digit'>" + result.done_count + "</span>"); | ||||
|  |                     $("#team_count").append("<span class='stat-digit'>" + result.team_count + "</span>"); | ||||
|  | 
 | ||||
|  |                     ajax.jsonRpc("/help/tickets", "call", {}).then(function (values) { | ||||
|  |                         $('.pending_tickets').append(values); | ||||
|  |                     }); | ||||
|  |                 }); | ||||
|  |         }, | ||||
|  | //        This function opens a new window with the list and form views of
 | ||||
|  | //        the `help.ticket` model. The window displays tickets with the stage
 | ||||
|  | //        names "Inbox" or "Draft". New tickets will have the default stage set
 | ||||
|  | //        to "Draft".
 | ||||
|  |         tickets_inbox: function (ev) { | ||||
|  |             var self = this; | ||||
|  |             ev.stopPropagation(); | ||||
|  |             ev.preventDefault(); | ||||
|  |             this.do_action({ | ||||
|  |                 name: _t("Inbox"), | ||||
|  |                 type: 'ir.actions.act_window', | ||||
|  |                 res_model: 'help.ticket', | ||||
|  |                 view_mode: 'tree,form', | ||||
|  |                 views: [[false, 'list'], [false, 'form']], | ||||
|  |                 domain: [['stage_id.name', 'in', ['Inbox', 'Draft']]], | ||||
|  |                 context: {default_stage_id_name: 'Draft'}, | ||||
|  |                 target: 'current' | ||||
|  |             }); | ||||
|  |         }, | ||||
|  | //        Which will show all In-progress tickets
 | ||||
|  |         tickets_inprogress: function (ev) { | ||||
|  |             var self = this; | ||||
|  |             ev.stopPropagation(); | ||||
|  |             ev.preventDefault(); | ||||
|  |             this.do_action({ | ||||
|  |                 name: _t("In Progress"), | ||||
|  |                 type: 'ir.actions.act_window', | ||||
|  |                 res_model: 'help.ticket', | ||||
|  |                 view_mode: 'tree,form', | ||||
|  |                 views: [[false, 'list'], [false, 'form']], | ||||
|  |                 domain: [['stage_id.name', '=', 'In Progress']], | ||||
|  |                 context: {create: false}, | ||||
|  |                 target: 'current' | ||||
|  |             }); | ||||
|  |         }, | ||||
|  | //        Which will show all done tickets
 | ||||
|  |         tickets_done: function (ev) { | ||||
|  |             var self = this; | ||||
|  |             ev.stopPropagation(); | ||||
|  |             ev.preventDefault(); | ||||
|  |             this.do_action({ | ||||
|  |                 name: _t("Done"), | ||||
|  |                 type: 'ir.actions.act_window', | ||||
|  |                 res_model: 'help.ticket', | ||||
|  |                 view_mode: 'tree,form', | ||||
|  |                 views: [[false, 'list'], [false, 'form']], | ||||
|  |                 domain: [['stage_id.name', '=', 'Done']], | ||||
|  |                 context: {create: false}, | ||||
|  |                 target: 'current' | ||||
|  |             }); | ||||
|  |         }, | ||||
|  | //        All helpdesk teams
 | ||||
|  |         helpdesk_teams: function (ev) { | ||||
|  |             var self = this; | ||||
|  |             ev.stopPropagation(); | ||||
|  |             ev.preventDefault(); | ||||
|  |             this.do_action({ | ||||
|  |                 name: _t("Teams"), | ||||
|  |                 type: 'ir.actions.act_window', | ||||
|  |                 res_model: 'help.team', | ||||
|  |                 view_mode: 'tree,form', | ||||
|  |                 views: [[false, 'list'], [false, 'form']], | ||||
|  |                 target: 'current' | ||||
|  |             }); | ||||
|  |         }, | ||||
|  |     }); | ||||
|  |     core.action_registry.add("helpdesk_dashboard", DashBoard); | ||||
|  |     return DashBoard; | ||||
|  | }); | ||||
| @ -0,0 +1,172 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <templates id="template" xml:space="preserve"> | ||||
|  | <!--  DashBoardHelpDesk template--> | ||||
|  |     <t t-name="HelpDesk_Dashboard"> | ||||
|  |       <div class="helpdesk_dashboards"> | ||||
|  |         <div class="container-fluid helpdesk_dashboard_main"/> | ||||
|  |       </div> | ||||
|  |     </t> | ||||
|  |     <t t-name="DashBoardHelpDesk"> | ||||
|  |         <link rel="stylesheet" | ||||
|  |               href="/odoo_website_helpdesk_dashboard/static/src/css/dashboard.css"/> | ||||
|  |         <h2 class="section-header" | ||||
|  |             style="font-size: 2em; color:#4a5c9a;margin-top: 19px;margin-bottom: -47px;">HelpDesk Dashboard</h2> | ||||
|  |         <div class="row main-section mt-5"> | ||||
|  |             <div class="col-sm-6 col-md-3-12 col-md-6 col-lg-3 helpdesk inbox_tickets"> | ||||
|  |                 <div class="dashboard_card" data-toggle="collapse"> | ||||
|  |                     <div class="dashboard_card-body panel panel-new"> | ||||
|  |                         <div class="stat-widget-one"> | ||||
|  |                             <div class="stat-icon"> | ||||
|  |                                 <i class="fa fa-inbox"/> | ||||
|  |                             </div> | ||||
|  |                             <div class="stat-content"> | ||||
|  |                                 <div class="stat-text">New Tickets</div> | ||||
|  |                                 <div class="stat-digit" id="inbox_count"/> | ||||
|  |                             </div> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                     <div class="panel-new-collapse collapse"> | ||||
|  |                         <div id="help_new_tickets" | ||||
|  |                              style="border:none; font-size:14px; padding:0 15px 15px 15px;"> | ||||
|  |                             <br/> | ||||
|  |                             <br/> | ||||
|  |                             <p style="font-style:italic; font-weight:700;"/> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |             </div> | ||||
|  |             <div class="col-sm-6 col-md-3-12 col-md-6 col-lg-3 salon_spa_orders helpdesk inprogress_tickets"> | ||||
|  |                 <div class="dashboard_card" data-toggle="collapse"> | ||||
|  |                     <div class="dashboard_card-body panel panel-progress"> | ||||
|  |                         <div class="stat-widget-one"> | ||||
|  |                             <div class="stat-icon"> | ||||
|  |                                 <i class="fa fa-spinner"/> | ||||
|  |                             </div> | ||||
|  |                             <div class="stat-content"> | ||||
|  |                                 <div class="stat-text">Tickets In Progress</div> | ||||
|  |                                 <div class="stat-digit" id="inprogress_count"> | ||||
|  |                                 </div> | ||||
|  |                             </div> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                     <div class="panel-progress-collapse collapse"> | ||||
|  |                         <div id="help_progress_tickets" | ||||
|  |                              style="border:none; font-size:14px; padding:0 15px 15px 15px;"> | ||||
|  |                             <br/> | ||||
|  |                             <br/> | ||||
|  |                             <p style="font-style:italic; font-weight:700;"/> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |             </div> | ||||
|  |             <div class="col-sm-6 col-md-3-12 col-md-6 col-lg-3 helpdesk done_tickets"> | ||||
|  |                 <div class="dashboard_card" data-toggle="collapse"> | ||||
|  |                     <div class="dashboard_card-body panel panel-done"> | ||||
|  |                         <div class="stat-widget-one"> | ||||
|  |                             <div class="stat-icon"> | ||||
|  |                                 <i class="fa fa-check"/> | ||||
|  |                             </div> | ||||
|  |                             <div class="stat-content"> | ||||
|  |                                 <div class="stat-text">Closed Tickets</div> | ||||
|  |                                 <div class="stat-digit" id="done_count"> | ||||
|  |                                 </div> | ||||
|  |                             </div> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                     <div class="panel-done-collapse collapse"> | ||||
|  |                         <div id="help_done_tickets" | ||||
|  |                              style="border:none; font-size:14px; padding:0 15px 15px 15px;"> | ||||
|  |                             <br/> | ||||
|  |                             <br/> | ||||
|  |                             <p style="font-style:italic; font-weight:700;"/> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |             </div> | ||||
|  |             <div class="col-sm-6 col-md-3-12 col-md-6 col-lg-3 helpdesk team_card"> | ||||
|  |                 <div class="dashboard_card" data-toggle="collapse"> | ||||
|  |                     <div class="dashboard_card-body panel panel-team"> | ||||
|  |                         <div class="stat-widget-one"> | ||||
|  |                             <div class="stat-icon"> | ||||
|  |                                 <i class="fa fa-group" id="team_ico"/> | ||||
|  |                             </div> | ||||
|  |                             <div class="stat-content"> | ||||
|  |                                 <div class="stat-text">HelpDesk Teams</div> | ||||
|  |                                 <div class="stat-digit" id="team_count"> | ||||
|  |                                 </div> | ||||
|  |                             </div> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                     <div class="panel-team-collapse collapse"> | ||||
|  |                         <div id="help_teams" | ||||
|  |                              style="border:none; font-size:14px; padding:0 15px 15px 15px;"> | ||||
|  |                             <br/> | ||||
|  |                             <br/> | ||||
|  |                             <p style="font-style:italic; font-weight:700;"/> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |             </div> | ||||
|  |             <div class="row ticket-section"> | ||||
|  |                 <div class="col-12 col-sm-12 col-md-4 ticket_box chart-container card-shadow" | ||||
|  |                      style="top: -21px;left: 0;z-index: 999;padding: 20px;box-sizing: border-box;"> | ||||
|  |                     <h2 class="tickets_head">Received Tickets</h2> | ||||
|  |                     <hr/> | ||||
|  |                     <div class="col-xs-12 text-align"> | ||||
|  |                         <div class="text-color"> | ||||
|  |                             <ul class="pending_tickets"/> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |                 <div class="col-12 col-sm-12 col-md-4"> | ||||
|  |                     <div class="leads_month_pie_div half_chart chart-container card-shadow"> | ||||
|  |                         <h2>Tickets by Month</h2> | ||||
|  |                         <hr/> | ||||
|  |                         <div class="graph_canvas"> | ||||
|  |                             <canvas class="ticket_month"/> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |                 <div class="col-12 col-sm-12 col-md-4"> | ||||
|  |                     <div class="team_ticket_div half_chart chart-container card-shadow"> | ||||
|  |                         <h2>Team - Tickets Count Ratio</h2> | ||||
|  |                         <hr/> | ||||
|  |                         <div class="graph_canvas"> | ||||
|  |                             <canvas class="team_ticket_count"/> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |                 <div class="col-12 col-sm-12 col-md-4"> | ||||
|  |                     <div class="projects_ticket_div half_chart chart-container card-shadow"> | ||||
|  |                         <h2>Tickets - Projects Ratio</h2> | ||||
|  |                         <hr/> | ||||
|  |                         <div class="graph_canvas"> | ||||
|  |                             <canvas class="projects_ticket" width="150" | ||||
|  |                                     height="120"/> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |                 <div class="col-12 col-sm-12 col-md-4"> | ||||
|  |                     <div class="billed_team_div half_chart chart-container card-shadow"> | ||||
|  |                         <h2>Billed Task - Team ratio</h2> | ||||
|  |                         <hr/> | ||||
|  |                         <div class="graph_canvas"> | ||||
|  |                             <canvas class="billed_team" width="150" | ||||
|  |                                     height="120"/> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |                 <div class="col-12 col-sm-12 col-md-4"> | ||||
|  |                     <div class="team_ticket_div half_chart chart-container card-shadow"> | ||||
|  |                         <h2>Team - Resolved Tickets</h2> | ||||
|  |                         <hr/> | ||||
|  |                         <div class="graph_canvas"> | ||||
|  |                             <canvas class="team_ticket_done" width="150" | ||||
|  |                                     height="100"/> | ||||
|  |                         </div> | ||||
|  |                     </div> | ||||
|  |                 </div> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |     </t> | ||||
|  | </templates> | ||||
| @ -0,0 +1,11 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  | <!--    Website helpdesk assets--> | ||||
|  |     <template id="help_desk_assets_backend" name="website_helpdesk assets" inherit_id="web.assets_backend"> | ||||
|  |         <xpath expr="." position="inside"> | ||||
|  |             <link rel="stylesheet" href="/odoo_website_helpdesk_dashboard/static/src/css/helpdesk_dashboard.css"/> | ||||
|  |             <script type="text/javascript" src="/odoo_website_helpdesk_dashboard/static/src/js/lib/Chart.bundle.js"/> | ||||
|  |             <script type="text/javascript" src="/odoo_website_helpdesk_dashboard/static/src/js/helpdesk_dashboard.js"/> | ||||
|  |         </xpath> | ||||
|  |     </template> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,47 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  |     <!--        Website Pending Tickets template--> | ||||
|  |     <template id="dashboard_tickets" name="Pending Tickets template"> | ||||
|  |         <t t-foreach="h_tickets" t-as="ticket"> | ||||
|  |             <div class="tickets_list" t-att-id="ticket['id']" | ||||
|  |                  t-att-value="ticket['id']"> | ||||
|  |                 <t t-esc="ticket['name']+' | '+ticket['subject']"/> | ||||
|  |             </div> | ||||
|  |         </t> | ||||
|  |     </template> | ||||
|  |     <!--        Tickets template--> | ||||
|  |     <template id="dashboard_ticket_detailed" name="Tickets template"> | ||||
|  |         <t t-foreach="h_tickets" t-as="ticket"> | ||||
|  |             <div class="col-xs-12 " style="padding:0;"> | ||||
|  |                 <div class="ticket_box_head"> | ||||
|  |                     <t t-esc="ticket['name']+' - ('+ticket['create_date'].strftime('%d-%b-%y')"/> | ||||
|  |                     ) | ||||
|  |                 </div> | ||||
|  |             </div> | ||||
|  |             <div class="row m-4 pt-3 w-75"> | ||||
|  |                 <div class="col-sm-6 col-md-3-12 col-md-6 col-lg-6 "> | ||||
|  |                     <h3 class="ticket_name"> | ||||
|  |                         Ticket Name : | ||||
|  |                         <t t-esc="ticket['name']"/> | ||||
|  |                     </h3> | ||||
|  |                     <h3 class="ticket_subject"> | ||||
|  |                         Ticket Issue : | ||||
|  |                         <t t-esc="ticket['subject']"/> | ||||
|  |                     </h3> | ||||
|  |                 </div> | ||||
|  |                 <div class="col-sm-6 col-md-3-12 col-md-6 col-lg-3"> | ||||
|  |                     <h4 class="ticket_customer"> | ||||
|  |                         <t t-if="ticket['customer_name']"> | ||||
|  |                             Customer : | ||||
|  |                             <t t-esc="ticket['customer_name']"/> | ||||
|  |                         </t> | ||||
|  |                     </h4> | ||||
|  |                     <h4 class="ticket_subject"> | ||||
|  |                         Description : | ||||
|  |                         <t t-esc="ticket['description']"/> | ||||
|  |                     </h4> | ||||
|  |                 </div> | ||||
|  |             </div> | ||||
|  |         </t> | ||||
|  |     </template> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,14 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  |     <!--        HelpDesk Ticket action--> | ||||
|  |     <record id="helpdesk_dashboard_action" model="ir.actions.client"> | ||||
|  |         <field name="name">HelpDesk</field> | ||||
|  |         <field name="tag">helpdesk_dashboard</field> | ||||
|  |     </record> | ||||
|  |     <menuitem id="odoo_website_helpdesk.helpdesk_menu" name="Helpdesk" | ||||
|  |               action="helpdesk_dashboard_action" | ||||
|  |               sequence="5"/> | ||||
|  |     <menuitem name="Dashboard" id="helpdesk_dashboard_menu" | ||||
|  |               parent="odoo_website_helpdesk.helpdesk_menu" sequence="0" | ||||
|  |               action="helpdesk_dashboard_action"/> | ||||
|  | </odoo> | ||||