Browse Source

Sep 26 : [ADD] Initial Commit 'education_erp_dashboard'

pull/254/merge
RisvanaCybro 2 years ago
parent
commit
3ce33297f5
  1. 46
      education_erp_dashboard/README.rst
  2. 22
      education_erp_dashboard/__init__.py
  3. 55
      education_erp_dashboard/__manifest__.py
  4. 6
      education_erp_dashboard/doc/RELEASE_NOTES.md
  5. 22
      education_erp_dashboard/models/__init__.py
  6. 166
      education_erp_dashboard/models/erp_dashboard.py
  7. 2
      education_erp_dashboard/security/ir.model.access.csv
  8. BIN
      education_erp_dashboard/static/description/assets/icons/cogs.png
  9. BIN
      education_erp_dashboard/static/description/assets/icons/consultation.png
  10. BIN
      education_erp_dashboard/static/description/assets/icons/ecom-black.png
  11. BIN
      education_erp_dashboard/static/description/assets/icons/education-black.png
  12. BIN
      education_erp_dashboard/static/description/assets/icons/hotel-black.png
  13. BIN
      education_erp_dashboard/static/description/assets/icons/license.png
  14. BIN
      education_erp_dashboard/static/description/assets/icons/lifebuoy.png
  15. BIN
      education_erp_dashboard/static/description/assets/icons/manufacturing-black.png
  16. BIN
      education_erp_dashboard/static/description/assets/icons/pos-black.png
  17. BIN
      education_erp_dashboard/static/description/assets/icons/puzzle.png
  18. BIN
      education_erp_dashboard/static/description/assets/icons/restaurant-black.png
  19. BIN
      education_erp_dashboard/static/description/assets/icons/service-black.png
  20. BIN
      education_erp_dashboard/static/description/assets/icons/trading-black.png
  21. BIN
      education_erp_dashboard/static/description/assets/icons/training.png
  22. BIN
      education_erp_dashboard/static/description/assets/icons/update.png
  23. BIN
      education_erp_dashboard/static/description/assets/icons/user.png
  24. BIN
      education_erp_dashboard/static/description/assets/icons/wrench.png
  25. BIN
      education_erp_dashboard/static/description/assets/misc/categories.png
  26. BIN
      education_erp_dashboard/static/description/assets/misc/check-box.png
  27. BIN
      education_erp_dashboard/static/description/assets/misc/compass.png
  28. BIN
      education_erp_dashboard/static/description/assets/misc/config.png
  29. BIN
      education_erp_dashboard/static/description/assets/misc/corporate.png
  30. BIN
      education_erp_dashboard/static/description/assets/misc/customer-support.png
  31. BIN
      education_erp_dashboard/static/description/assets/misc/e_logo.png
  32. BIN
      education_erp_dashboard/static/description/assets/misc/features.png
  33. BIN
      education_erp_dashboard/static/description/assets/misc/logo.png
  34. BIN
      education_erp_dashboard/static/description/assets/misc/pictures.png
  35. BIN
      education_erp_dashboard/static/description/assets/misc/pie-chart.png
  36. BIN
      education_erp_dashboard/static/description/assets/misc/right-arrow.png
  37. BIN
      education_erp_dashboard/static/description/assets/misc/star.png
  38. BIN
      education_erp_dashboard/static/description/assets/misc/support.png
  39. BIN
      education_erp_dashboard/static/description/assets/misc/whatsapp.png
  40. BIN
      education_erp_dashboard/static/description/assets/modules/1.png
  41. BIN
      education_erp_dashboard/static/description/assets/modules/2.png
  42. BIN
      education_erp_dashboard/static/description/assets/modules/3.png
  43. BIN
      education_erp_dashboard/static/description/assets/modules/4.png
  44. BIN
      education_erp_dashboard/static/description/assets/modules/5.png
  45. BIN
      education_erp_dashboard/static/description/assets/modules/6.png
  46. BIN
      education_erp_dashboard/static/description/assets/screenshots/application.png
  47. BIN
      education_erp_dashboard/static/description/assets/screenshots/attendance.png
  48. BIN
      education_erp_dashboard/static/description/assets/screenshots/average_marks.png
  49. BIN
      education_erp_dashboard/static/description/assets/screenshots/dashboard.png
  50. BIN
      education_erp_dashboard/static/description/assets/screenshots/exam_result.png
  51. BIN
      education_erp_dashboard/static/description/assets/screenshots/hero.gif
  52. BIN
      education_erp_dashboard/static/description/assets/screenshots/rejected_applications.png
  53. BIN
      education_erp_dashboard/static/description/assets/screenshots/student_strength.png
  54. BIN
      education_erp_dashboard/static/description/assets/screenshots/tiles.png
  55. BIN
      education_erp_dashboard/static/description/banner.jpg
  56. BIN
      education_erp_dashboard/static/description/icon.png
  57. 735
      education_erp_dashboard/static/description/index.html
  58. 176
      education_erp_dashboard/static/src/css/dashboard.css
  59. 742
      education_erp_dashboard/static/src/js/dashboard.js
  60. 228
      education_erp_dashboard/static/src/xml/dashboard_content_templates.xml
  61. 9
      education_erp_dashboard/static/src/xml/dashboard_templates.xml
  62. 9
      education_erp_dashboard/views/dashboard_tag_views.xml
  63. 11
      education_erp_dashboard/views/erp_dashboard_menu.xml

46
education_erp_dashboard/README.rst

@ -0,0 +1,46 @@
.. 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
Education ERP Dashboard
=======================
A visually informative interface of education ERP system provides an at-a-glance overview of essential data.
Configuration
=============
- No additional configuration required
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
Developer: (V15) Sruthi Renjith, Contact: odoo@cybrosys.com
Contacts
--------
* Mail Contact : odoo@cybrosys.com
* Website : https://cybrosys.com
License
-------
GNU AFFERO GENERAL PUBLIC LICENSE, Version 3 (AGPLv3)
(https://www.gnu.org/licenses/agpl-3.0-standalone.html)
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 `Our Website <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

22
education_erp_dashboard/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Sruthi Renjith (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 models

55
education_erp_dashboard/__manifest__.py

@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Sruthi Renjith (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': 'Education ERP Dashboard',
'version': '15.0.1.0.0',
'category': 'Industries, Productivity',
'summary': 'An integrated view of the education ERP system',
'description': """A comprehensive module designed to provide educational
institutions to manage and monitor various operations""",
'author': "Cybrosys Techno Solutions",
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'depends': ['base', 'education_attendances', 'education_promotion',
'education_time_table'],
'data': [
'security/ir.model.access.csv',
'views/dashboard_tag_views.xml',
'views/erp_dashboard_menu.xml'],
'assets': {
'web.assets_backend': [
'education_erp_dashboard/static/src/js/dashboard.js',
'education_erp_dashboard/static/src/css/dashboard.css',
'https://cdn.jsdelivr.net/npm/chart.js'
],
'web.assets_qweb': [
'education_erp_dashboard/static/src/xml/dashboard_templates.xml',
'education_erp_dashboard/static/src/xml/dashboard_content_templates.xml'
],
},
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': True,
}

6
education_erp_dashboard/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <education_erp_dashboard>
#### 22.09.2023
#### Version 15.0.1.0.0
#### ADD
- Initial commit for Education ERP Dashboard

22
education_erp_dashboard/models/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Sruthi Renjith (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 erp_dashboard

166
education_erp_dashboard/models/erp_dashboard.py

@ -0,0 +1,166 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Sruthi Renjith (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 api, fields, models
class ERPDashboard(models.Model):
""" Class to get all the required data for the dashboard """
_name = "erp.dashboard"
_description = "Education ERP Dashboard"
@api.model
def erp_data(self):
""" Function to get the datas like number of application, number of
students, number of faculties, number of amenities and number of
exams """
return {
'applications': self.env['education.application'].search_count([]),
'students': self.env['education.student'].search_count([]),
'faculties': self.env['education.faculty'].search_count([]),
'amenities': self.env['education.amenities'].search_count([]),
'exams': self.env['education.exam'].search_count([]),
}
@api.model
def get_all_applications(self):
""" Function to get count of applications in each academic year """
years = self.env['education.application'].search([]).mapped(
'academic_year_id')
application_count_dict = {
year.name: self.env['education.application'].search_count(
[('academic_year_id', '=', year.name)]) for year in years}
return application_count_dict
@api.model
def get_rejected_accepted_applications(self):
""" Function to get count of all accepted and rejected applications """
application_dict = {}
academic_year_date = 0
academic_year_year = ''
academic_year = self.env['education.academic.year'].search([])
for years in academic_year:
academic_year_date = years.ay_end_date
academic_year_year = years.name
for year in academic_year:
if academic_year_date < year.ay_end_date:
academic_year_date = year.ay_end_date
academic_year_year = year.name
rejected_applications = self.env['education.application'].search_count(
[('state', '=', 'reject'),
('academic_year_id', '=', academic_year_year)])
accepted_applications = self.env['education.application'].search_count(
[('state', '=', 'done'),
('academic_year_id', '=', academic_year_year)])
application_dict.update(
{'Done': accepted_applications, 'Reject': rejected_applications})
return application_dict
@api.model
def get_exam_result(self):
""" Function to get total exam result """
exam_result_dict = {}
pass_count = self.env['results.subject.line'].search_count(
[('pass_or_fail', '=', True)])
fail_count = self.env['results.subject.line'].search_count(
[('pass_or_fail', '=', False)])
exam_result_dict.update({'Pass': pass_count, 'Fail': fail_count})
return exam_result_dict
@api.model
def get_attendance(self):
""" Function to get total attendance """
attendance_dict = {}
absents = self.env['education.attendance.line'].search_count(
[('date', '=', fields.Date.today()), ('full_day_absent', '=', 1)])
total = self.env['education.student'].search_count([])
presents = total - absents
attendance_dict.update({'Presents': presents, 'Absents': absents})
return attendance_dict
@api.model
def get_student_strength(self):
""" Function to get class wise student strength """
classes = self.env['education.class.division'].search([])
class_wise_dict = {
clas.name: self.env['education.student'].search_count(
[('class_id', '=', clas.id)]) for clas in classes}
return class_wise_dict
@api.model
def get_average_marks(self):
""" Function to get class wise average marks """
class_average_mark_dict = {}
classes = self.env['education.class.division'].search([])
for clas in classes:
all_students = self.env['education.student'].search(
[('class_id', '=', clas.id)])
if all_students:
class_mark_list = [sum(
self.env['education.exam.results'].search(
[('student_id', '=', student.id)]).mapped(
'total_mark_scored')) for student in all_students]
count = len(class_mark_list)
total_marks = sum(class_mark_list)
average_mark = total_marks / count
class_average_mark_dict.update({clas.name: average_mark})
return class_average_mark_dict
@api.model
def get_academic_year(self):
""" Function to get the academic year """
academic_dict = {year.id: year.name for year in
self.env['education.academic.year'].search([])}
return academic_dict
@api.model
def get_academic_year_exam_result(self, *args):
""" Function to get exam results in each academic year """
academic_exam_result_dict = {}
academic_pass_count = self.env['results.subject.line'].search_count(
[('academic_year.id', '=', *args), ('pass_or_fail', '=', True)])
academic_fail_count = self.env['results.subject.line'].search_count(
[('academic_year.id', '=', *args), ('pass_or_fail', '=', False)])
academic_exam_result_dict.update(
{'Pass': academic_pass_count, 'Fail': academic_fail_count})
return academic_exam_result_dict
@api.model
def get_classes(self):
""" Function to get the classes """
class_dict = {clas.id: clas.name for clas in
self.env['education.class.division'].search([])}
return class_dict
@api.model
def get_class_attendance_today(self, *args):
""" Function to get class wise attendance """
class_attendance_dict = {}
class_absents = self.env['education.attendance.line'].search_count(
[('division_id.id', '=', *args),
('date', '=', fields.Date.today()),
('full_day_absent', '=', 1)])
class_total = self.env['education.student'].search_count(
[('class_id.id', '=', *args)])
class_presents = class_total - class_absents
class_attendance_dict.update(
{'Presents': class_presents, 'Absents': class_absents})
return class_attendance_dict

2
education_erp_dashboard/security/ir.model.access.csv

@ -0,0 +1,2 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_erp_dashboard,access.erp.dashboard,model_erp_dashboard,base.group_user,1,1,1,1
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_erp_dashboard access.erp.dashboard model_erp_dashboard base.group_user 1 1 1 1

BIN
education_erp_dashboard/static/description/assets/icons/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
education_erp_dashboard/static/description/assets/icons/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
education_erp_dashboard/static/description/assets/icons/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
education_erp_dashboard/static/description/assets/icons/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
education_erp_dashboard/static/description/assets/icons/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
education_erp_dashboard/static/description/assets/icons/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
education_erp_dashboard/static/description/assets/icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
education_erp_dashboard/static/description/assets/icons/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
education_erp_dashboard/static/description/assets/icons/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
education_erp_dashboard/static/description/assets/icons/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
education_erp_dashboard/static/description/assets/icons/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
education_erp_dashboard/static/description/assets/icons/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
education_erp_dashboard/static/description/assets/icons/trading-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

BIN
education_erp_dashboard/static/description/assets/icons/training.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

BIN
education_erp_dashboard/static/description/assets/icons/update.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
education_erp_dashboard/static/description/assets/icons/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

BIN
education_erp_dashboard/static/description/assets/icons/wrench.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
education_erp_dashboard/static/description/assets/misc/categories.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
education_erp_dashboard/static/description/assets/misc/check-box.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
education_erp_dashboard/static/description/assets/misc/compass.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
education_erp_dashboard/static/description/assets/misc/config.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
education_erp_dashboard/static/description/assets/misc/corporate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
education_erp_dashboard/static/description/assets/misc/customer-support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
education_erp_dashboard/static/description/assets/misc/e_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
education_erp_dashboard/static/description/assets/misc/features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
education_erp_dashboard/static/description/assets/misc/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
education_erp_dashboard/static/description/assets/misc/pictures.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
education_erp_dashboard/static/description/assets/misc/pie-chart.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
education_erp_dashboard/static/description/assets/misc/right-arrow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

BIN
education_erp_dashboard/static/description/assets/misc/star.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
education_erp_dashboard/static/description/assets/misc/support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
education_erp_dashboard/static/description/assets/misc/whatsapp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
education_erp_dashboard/static/description/assets/modules/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
education_erp_dashboard/static/description/assets/modules/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
education_erp_dashboard/static/description/assets/modules/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
education_erp_dashboard/static/description/assets/modules/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
education_erp_dashboard/static/description/assets/modules/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
education_erp_dashboard/static/description/assets/modules/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
education_erp_dashboard/static/description/assets/screenshots/application.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
education_erp_dashboard/static/description/assets/screenshots/attendance.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
education_erp_dashboard/static/description/assets/screenshots/average_marks.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
education_erp_dashboard/static/description/assets/screenshots/dashboard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
education_erp_dashboard/static/description/assets/screenshots/exam_result.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
education_erp_dashboard/static/description/assets/screenshots/hero.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

BIN
education_erp_dashboard/static/description/assets/screenshots/rejected_applications.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
education_erp_dashboard/static/description/assets/screenshots/student_strength.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
education_erp_dashboard/static/description/assets/screenshots/tiles.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
education_erp_dashboard/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
education_erp_dashboard/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

735
education_erp_dashboard/static/description/index.html

@ -0,0 +1,735 @@
<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/e_logo.png" width="162" height="60"
style="width:auto !important; height:60px !important"/>
<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;">
Education ERP Dashboard</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
Insight to Educational ERP</p>
<!-- END OF APP HERO -->
<img src="assets/screenshots/hero.gif"
style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; top: 45%; left: 12%; 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="#config">
<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;">Configuration</span>
<span
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
configuration 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="#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">
Education ERP Dashboard give an insight to Education ERP Core.
This dashboard allows a quick analysis of the details related to
students, faculties, exams and all.
</div>
</div>
<!-- END OF OVERVIEW SECTION -->
<!-- CONFIGURATION SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="config">
<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/config.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Configuration
</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">
No additional configuration is required.
</div>
</div>
<!-- END OF CONFIGURATION 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;">Clickable dashboard cards.</span>
</div>
</div>
<div class="d-flex align-items-start"
style="margin-top: 30px; margin-bottom: 30px">
<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;">A quick analysis of the counts.</span>
</div>
</div>
<div class="d-flex align-items-start"
style="margin-top: 30px; margin-bottom: 30px">
<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;">Insight of upcoming and recent activities.</span>
</div>
</div>
<div class="d-flex align-items-start"
style="margin-top: 30px; margin-bottom: 30px">
<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;">Academic wise exam results.</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;">Attendance details as doughnut chart.</span>
</div>
</div>
<div class="d-flex align-items-start"
style="margin-top: 30px; margin-bottom: 30px">
<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;">Exam result in pie chart.</span>
</div>
</div>
<div class="d-flex align-items-start"
style="margin-top: 30px; margin-bottom: 30px">
<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;">Class wise student strength.</span>
</div>
</div>
<div class="d-flex align-items-start"
style="margin-top: 30px; margin-bottom: 30px">
<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;">Student application details.</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;">
Dashboard view</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
This is the overall view of the dashboard.</p>
<img src="assets/screenshots/dashboard.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;">
Clickable tiles</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
This gives all the details in one click.</p>
<img src="assets/screenshots/tiles.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;">
Application Bar Chart</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
This gives the count of applications in each academic year.</p>
<img src="assets/screenshots/application.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;">
Student Attendance</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
A doughnut chart that gives the total and class wise attendance
details.</p>
<img src="assets/screenshots/attendance.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;">
Exam Result</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
A pie chart the gives the academic wise and total exam
results.</p>
<img src="assets/screenshots/exam_result.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;">
Student Strength</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
A line chart that gives the details related to the class
strength.</p>
<img src="assets/screenshots/student_strength.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;">
Average Marks</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
A bar chart that gives the details of average marks in
each class.</p>
<img src="assets/screenshots/average_marks.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;">
Rejected Applications</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
A bar chart that shows the count of accepted and rejected
applications.</p>
<img src="assets/screenshots/rejected_applications.png"
class="img-thumbnail">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- SUGGESTED PRODUCTS -->
<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/categories.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Suggested
Products
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner" style="padding: 30px;">
<div class="carousel-item" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/education_core/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/1.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/15.0/education_promotion/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/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/15.0/education_time_table/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/3.png">
</div>
</a>
</div>
</div>
<div class="carousel-item active"
style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/education_exam/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/4.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/15.0/education_attendances/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/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/15.0/education_hostel/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/6.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
style="width:35px; color:#000"> <span
class="carousel-control-prev-icon"><i
class="fa fa-chevron-left"
style="font-size:24px"></i></span>
</a> <a class="carousel-control-next" href="#demo1"
data-slide="next" style="width:35px; color:#000">
<span class="carousel-control-next-icon"><i
class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF SUGGESTED 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 &amp; 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 -->

176
education_erp_dashboard/static/src/css/dashboard.css

@ -0,0 +1,176 @@
.stat-icon {
width: 30%;
height: 65px;
text-align: center;
background: #ffa07a;
color: #fff;
padding-top: 2%;
font-size: xx-large;
display: inline-block;
border-radius: 10px;
}
.stat-content {
text-align: center;
color: black !important;
display: inline-block;
width: 50%;
}
.stat-count{
text-align: center;
width: 50%;
}
.stat-head {
text-align: left !important;
font-weight: 300;
font-size: 18px;
margin-left: 10px;
width: 100%;
}
.stat-widget-one .stat-icon {
vertical-align: top;
margin: auto;
font-weight: 900;
display: inline-block;
}
.stat-widget-one{
font-weight: bold;
}
.content-card-body {
display: flex;
justify-content: space-between;
align-items: center;
}
.stat-widget-one {
margin-top: 2.3rem;
margin-left: 1rem;
}
.stat-widget-one{
margin-left: 1rem;
margin-top: -1px;
font-family: initial
}
.stat-widget-one .stat-icon{
font-weight: 900;
display: inline-block;
color: #fff;
}
.stat-widget-one {
background-color: white;
text-align: left;
}
.stat-widget-one {
background: none;
}
.stat-widget-one .stat-icon {
text-align: center;
padding-top: 9px;
}
.stat-widget-one{
margin: 0;
text-align: center;
width: 100% !important;
padding: 0;
color: #fff;
}
.stat-widget-one .stat-icon .fa {
font-size: 30px;
margin: 0px;
box-shadow: none;
}
.content-card {
font-size: 1rem;
}
.content-card:hover {
transform:none !important;
box-shadow: none !important;
}
.content-card {
padding-top: 0px;
padding: 0px;
margin-bottom: 1.5rem;
border-radius: 10px;
box-shadow: none;
background: none;
transition: transform 0.2s ease, box-shadow 0.2s ease;
will-change: transform, box-shadow;
}
.content-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;
}
.content-card {
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);
}
.content-card {
margin: 0;
margin-bottom: 0px;
margin-bottom: 0px;
padding-bottom: 7px;
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);
}
.content-card {
background: #fafad2;
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);
padding: 15px;
}
.content-card{
transition: none !important;
will-change: none !important;
box-shadow: none !important;
margin-bottom: 5px;
}
.content-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;
}
.row{
margin-right: 0px; !important;
padding:30px;
}
.stat-count {
font-size: 20px;
text-align: center;
color: #000 !important;
width: 100%;
float: left;
}
.render_graph_div {
text-align: center;
width: 100%;
}
.inline {
display: inline-block;
width: 50%;
float: left;
padding: 80px;
}
.pie_canvas{
margin-left: 50px;
height: 400px;
width: 100%;
text-align: center;
}
.graph_canvas{
margin-top: 30px;
}
.doughnut_canvas{
margin-left: 50px;
height: 380px;
width: 100%;
text-align: center;
display: flex;
}
.pie-chart-filter{
width: 50%;
margin-left:60px;
}
.doughnut-chart-filter{
width: 50%;
margin-left:60px;
}

742
education_erp_dashboard/static/src/js/dashboard.js

@ -0,0 +1,742 @@
odoo.define("education_erp_dashboard.EducationalDashboard", function (require) {
"use strict";
var AbstractAction = require('web.AbstractAction');
var core = require('web.core');
var QWeb = core.qweb;
var rpc = require('web.rpc');
var DashBoard = AbstractAction.extend({
contentTemplate: 'EducationalDashboard',
/* Loading the dashboard template */
init: function(parent, context) {
this._super(parent, context);
this.dashboard_templates = ['MainSection'];
},
/* Showing the total exam result and total attendance and hiding
the academic wise exam result and class wise attendance
when loading */
start: function() {
var self = this;
self.set("title", 'Dashboard');
return self._super().then(function() {
self.$('.academic_exam_result').hide();
self.$('.exam_result').show();
self.$('.class_attendance_today').hide();
self.$('.total_attendance_today').show();
/* Rendering the dashboard, graphs and filters */
self.render_dashboards();
self.render_graphs();
self.render_filters();
});
},
/* This function is called before the actual start */
willStart: function(){
var self = this;
return self._super()
},
/* Function to render dashboard */
render_dashboards: function() {
var self = this;
self.fetch_data()
var templates = []
var templates = ['MainSection'];
_.each(templates, function(template) {
self.$('.o_hr_dashboard').append(QWeb.render(template, {widget: self}))
});
},
/* RPC call to fetch the count of applications, students, faculties,
amenities and total exams */
fetch_data: function() {
var self = this;
rpc.query({
model: 'erp.dashboard',
method: "erp_data",
}).then(function (result) {
self.$('#all_applications').append('<span>' + result.applications + '</span>');
self.$('#all_students').append('<span>' + result.students + '</span>');
self.$('#all_faculties').append('<span>' + result.faculties + '</span>');
self.$('#all_amenities').append('<span>' + result.amenities + '</span>');
self.$('#all_exams').append('<span>' + result.exams + '</span>');
});
},
/* Click events for the tiles and change event for the filters */
events:{
'click #all_applications':'application_list',
'click #all_students':'student_list',
'click #all_faculties':'faculty_list',
'click #all_amenities':'amenity_list',
'click #all_attendance':'attendance_list',
'click #exams':'exam_result',
'click #timetable':'timetable',
'click #promotion':'promotions',
'change #select_period': function(e){
e.preventDefault();
if(e.target.value == 'select'){
this.$('.academic_exam_result').hide();
this.$('.exam_result').show();
this.render_exam_result_pie();
}
else{
this.$('.exam_result').hide();
this.$('.academic_exam_result').show();
this.get_academic_exam_result(e.target.value);
}
},
'change #select_class': function(e){
e.preventDefault();
if(e.target.value == 'select'){
this.$('.class_attendance_today').hide();
this.$('.total_attendance_today').show();
this.render_attendance_doughnut();
}
else{
this.$('.total_attendance_today').hide();
this.$('.class_attendance_today').show();
this.get_class_attendance(e.target.value);
}
}
},
/* Functions that to show the details on click event */
/* Click event function to show the applications */
application_list:function(e){
e.preventDefault();
this.do_action({
type: "ir.actions.act_window",
name: "Applications",
res_model: "education.application",
views: [[false,'list'],[false,'form']],
target: 'current',
view_type : 'list',
view_mode : 'list',
});
},
/* Click event function to show the students */
student_list:function(e){
e.preventDefault();
this.do_action({
type: "ir.actions.act_window",
name: "Students",
res_model: "education.student",
views: [[false,'list'],[false,'form']],
target: 'current',
view_type : 'list',
view_mode : 'list',
});
},
/* Click event function to show the faculties */
faculty_list:function(e){
e.preventDefault();
this.do_action({
type: "ir.actions.act_window",
name: "Faculties",
res_model: "education.faculty",
views: [[false,'list'],[false,'form']],
target: 'current',
view_type : 'list',
view_mode : 'list',
});
},
/* Click event function to show the amenities */
amenity_list:function(e){
e.preventDefault();
this.do_action({
type: "ir.actions.act_window",
name: "Amenities",
res_model: "education.amenities",
views: [[false,'list'],[false,'form']],
target: 'current',
view_type : 'list',
view_mode : 'list',
});
},
/* Click event function to show the attendance list */
attendance_list:function(e){
e.preventDefault();
this.do_action({
type: "ir.actions.act_window",
name: "Attendance",
res_model: "education.attendance",
views: [[false,'list'],[false,'form']],
target: 'current',
view_type : 'list',
view_mode : 'list',
});
},
/* Click event function to show the exam results */
exam_result:function(e){
e.preventDefault();
this.do_action({
type: "ir.actions.act_window",
name: "Exam Result",
res_model: "education.exam",
views: [[false,'list'],[false,'form']],
target: 'current',
view_type : 'list',
view_mode : 'list',
});
},
/* Click event function to show the time table */
timetable:function(e){
e.preventDefault();
this.do_action({
type: "ir.actions.act_window",
name: "Timetable",
res_model: "education.timetable",
views: [[false,'list'],[false,'form']],
target: 'current',
view_type : 'list',
view_mode : 'list',
});
},
/* Click event function to show the promotions */
promotions:function(e){
e.preventDefault();
this.do_action({
type: "ir.actions.act_window",
name: "Student Promotions",
res_model: "education.student.final.result",
views: [[false,'list'],[false,'form']],
target: 'current',
view_type : 'list',
view_mode : 'list',
});
},
/* Calling the functions to creates charts */
render_graphs:function(){
var self = this;
self.render_total_application_graph();
self.render_exam_result_pie();
self.render_attendance_doughnut();
self.render_rejected_accepted_applications();
self.render_student_strength();
self.render_class_wise_average_marks();
},
/* Calling the filter functions */
render_filters:function(){
var self = this;
self.render_pie_chart_filter();
self.render_doughnut_chart_filter();
},
/* Function to create a bar chart to show application counts in each
academic year */
render_total_application_graph:function(){
var self = this
var ctx = self.$(".application_count");
rpc.query({
model: "erp.dashboard",
method: "get_all_applications",
}).then(function (result) {
var data = {
labels : Object.keys(result),
datasets: [{
label: 'Application',
data: Object.values(result),
backgroundColor: [
"#87cefa",
"#b0c4de",
"#20b2aa",
],
borderColor: [
"#87cefa",
"#b0c4de",
"#20b2aa",
],
borderWidth: 1
},]
};
//Options to add appearance for the graph
var options = {
responsive: true,
title: false,
scales: {
yAxes: [{
ticks: {
min: 0
}
}]
}
};
//Create Chart class object
new Chart(ctx, {
type: "bar",
data: data,
options: {
responsive:true,
maintainAspectRatio: false,
legend: {
display: false
},
}
});
});
},
/* Function to create a bar chart that shows the count of accepted and
rejected applications */
render_rejected_accepted_applications:function(){
var self = this
var ctx = self.$(".rejected_accepted_count");
rpc.query({
model: "erp.dashboard",
method: "get_rejected_accepted_applications",
}).then(function (result) {
var data = {
labels : Object.keys(result),
datasets: [{
label: 'Application',
data: Object.values(result),
backgroundColor: [
"#778899",
"#f08080",
],
borderColor: [
"#778899",
"#f08080",
],
borderWidth: 1
},]
};
//Options to add appearance for the graph
var options = {
responsive: true,
title: false,
scales: {
yAxes: [{
ticks: {
min: 0
}
}]
}
};
//Create Chart class object
new Chart(ctx, {
type: "bar",
data: data,
options: {
scales : {
y : {
beginAtZero: true,
suggestedMin: 0,
}
},
responsive:true,
maintainAspectRatio: false,
legend: {
display: false
},
}
});
});
},
/* Function to create a pie chart that shows the exam results */
chart_total_result : false,
render_exam_result_pie:function(){
var self = this;
if (this.chart_total_result){
this.chart_total_result.destroy()
}
var ctx = self.$(".exam_result")[0].getContext('2d');
rpc.query({
model: "erp.dashboard",
method: "get_exam_result"
}).then(function (result) {
var data;
if (! result.Fail && ! result.Pass){
data = {
labels : ['No data'],
datasets: [{
label: "No Result",
data: [1],
backgroundColor: [
"#f6f7f9"
],
borderColor: [
"#f6f7f9"
],
borderWidth: 1
},]
};
}
else{
data = {
labels : Object.keys(result),
datasets: [{
label: "Exam Result",
data: Object.values(result),
backgroundColor: [
"#003f5c",
"#dc143c"
],
borderColor: [
"#003f5c",
"#dc143c",
],
borderWidth: 1
},]
};
}
//Options to add appearance for the graph
var options = {
responsive: true,
title: false,
legend: {
display: true,
position: "bottom",
labels: {
fontColor: "#333",
fontSize: 16
}
},
scales: {
yAxes: [{
ticks: {
min: 0,
}
}]
}
};
/* Create Chart class object */
self.chart_total_result = new Chart(ctx, {
type: "pie",
data: data,
options: options
});
});
},
/* Function to create a doughnut chart that shows attendance details */
chart_total_attendance : false,
render_attendance_doughnut:function(){
var self = this;
if(this.chart_total_attendance){
this.chart_total_attendance.destroy()
}
var ctx = self.$(".total_attendance_today")[0].getContext('2d');
rpc.query({
model: "erp.dashboard",
method: "get_attendance"
}).then(function (result) {
var data = {
labels : Object.keys(result),
datasets: [{
label: "Attendance",
data: Object.values(result),
backgroundColor: [
"#006400",
"#e9967a"
],
borderColor: [
"#006400",
"#e9967a",
],
borderWidth: 1
},]
};
//Options to add appearance for the graph
var options = {
responsive: true,
title: false,
legend: {
display: true,
position: "bottom",
labels: {
fontColor: "#333",
fontSize: 16
}
},
scales: {
yAxes: [{
ticks: {
min: 0,
}
}]
}
};
/* Create Chart class object */
self.chart_total_attendance = new Chart(ctx, {
type: "doughnut",
data: data,
options: options
});
});
},
/* Function to create a line chart that shows the class wise student strength */
render_student_strength:function(){
var self = this
var ctx = self.$(".student_strength");
rpc.query({
model: "erp.dashboard",
method: "get_student_strength",
}).then(function (result) {
var data = {
labels : Object.keys(result),
datasets: [{
label: 'Student Strength',
data: Object.values(result),
Color: [
"#8b0000",
],
borderColor: [
"#8b0000",
],
borderWidth: 1
},]
};
//Options to add appearance for the graph
var options = {
responsive: true,
title: false,
scales: {
yAxes: [{
ticks: {
min: 0,
}
}]
}
};
//Create Chart class object
new Chart(ctx, {
type: "line",
data: data,
options: {
responsive:true,
maintainAspectRatio: false,
legend: {
display: false
},
}
});
});
},
/* Function to create a bar chart that shows the average marks in each class */
render_class_wise_average_marks:function(){
var self = this
var ctx = self.$(".average_marks");
rpc.query({
model: "erp.dashboard",
method: "get_average_marks",
}).then(function (result) {
var data
if (Object.values(result) == 0){
data = {
labels : ['No data'],
datasets: [{
label: "No Marks",
data: [1],
backgroundColor: [
"#f6f7f9"
],
borderColor: [
"#f6f7f9"
],
borderWidth: 1
},]
};
}
else{
data = {
labels : Object.keys(result),
datasets: [{
label: 'Average Marks',
data: Object.values(result),
backgroundColor: [
"#cd5c5c",
],
borderColor: [
"#cd5c5c",
],
borderWidth: 1
},]
};
}
//Options to add appearance for the graph
var options = {
responsive: true,
title: false,
scales: {
yAxes: [{
ticks: {
min: 0,
}
}]
}
};
/* Create Chart class object */
new Chart(ctx, {
type: "bar",
data: data,
options: {
scales : {
y : {
beginAtZero: true,
suggestedMin: 0,
}
},
responsive:true,
maintainAspectRatio: false,
legend: {
display: false
}
}
});
});
},
/* Function to add the filter option */
render_pie_chart_filter:function(){
var self = this
rpc.query({
model: "erp.dashboard",
method: "get_academic_year",
}).then(function (result) {
self.$('#select_period').append('<option value=' + 'select' + '>' + 'Total Result' + '</option>')
for (let key in result){
self.$('#select_period').append('<option value=' + key + '>' + result[key] + '</option>')
}
})
},
/* Function to get academic wise exam result and to create chart accordingly */
chart_academy_result : false,
get_academic_exam_result:function(academic_year){
var self = this;
if (this.chart_academy_result){
this.chart_academy_result.destroy()
}
var ctx = self.$(".academic_exam_result")[0].getContext('2d');
rpc.query({
model: "erp.dashboard",
method: "get_academic_year_exam_result",
args: [academic_year]
}).then(function (result) {
var data
if (! result.Fail && ! result.Pass){
data = {
labels : ['No data'],
datasets: [{
label: "No Result",
data: [1],
backgroundColor: [
"#f6f7f9"
],
borderColor: [
"#f6f7f9"
],
borderWidth: 1
},]
};
}
else{
data = {
labels : Object.keys(result),
datasets: [{
label: "Exam Result",
data: Object.values(result),
backgroundColor: [
"#003f5c",
"#dc143c"
],
borderColor: [
"#003f5c",
"#dc143c",
],
borderWidth: 1
},]
};
}
//Options to add appearance for the graph
var options = {
responsive: true,
title: false,
legend: {
display: true,
position: "bottom",
labels: {
fontColor: "#333",
fontSize: 16
}
},
scales: {
yAxes: [{
ticks: {
min: 0,
}
}]
}
};
self.chart_academy_result = new Chart(ctx, {
type: "pie",
data: data,
options: options
});
});
},
/* Function to add filter option for doughnut chart */
render_doughnut_chart_filter:function(){
var self = this
rpc.query({
model: "erp.dashboard",
method: "get_classes",
}).then(function (result) {
self.$('#select_class').append('<option value=' + 'select' + '>' + 'Total Attendance' + '</option>')
for (let key in result){
self.$('#select_class').append('<option value=' + key + '>' + result[key] + '</option>')
}
})
},
/* Function to get class wise attendance and to create chart accordingly */
chart_class_attendance : false,
get_class_attendance:function(clas){
var self = this;
if(this.chart_class_attendance){
this.chart_class_attendance.destroy()
}
var ctx = self.$(".class_attendance_today")[0].getContext('2d');
rpc.query({
model: "erp.dashboard",
method: "get_class_attendance_today",
args: [clas]
}).then(function (result) {
var data = {
labels : Object.keys(result),
datasets: [{
label: "Attendance",
data: Object.values(result),
backgroundColor: [
"#006400",
"#e9967a"
],
borderColor: [
"#006400",
"#e9967a"
],
borderWidth: 1
},]
};
var options = {
responsive: true,
title: false,
legend: {
display: true,
position: "bottom",
labels: {
fontColor: "#333",
fontSize: 16
}
},
scales: {
yAxes: [{
ticks: {
min: 0,
}
}]
}
};
/* Create Chart class object */
self.chart_class_attendance = new Chart(ctx, {
type: "doughnut",
data: data,
options: options
});
});
},
})
core.action_registry.add('erp_dashboard_tag', DashBoard);
return DashBoard;
});

228
education_erp_dashboard/static/src/xml/dashboard_content_templates.xml

@ -0,0 +1,228 @@
<?xml version="1.0" encoding="UTF-8" ?>
<template>
<!-- Template represents the main section of the dashboard -->
<t t-name="MainSection">
<!-- Tiles -->
<div class="row main-section">
<!-- Tile that shows the number of applications -->
<div class="col-md-3 col-sm-3">
<div class="content-card" style="width: 288px;">
<div class="content-card-body">
<div class="stat-widget-one">
<div class="stat-icon">
<i class="fa fa-wpforms"/>
</div>
<div class="stat-content">
<div class="stat-head">Applications</div>
<div class="stat-count">
<span id="templates">
<div id="all_applications"/>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Tile that shows the number of students -->
<div class="col-md-3 col-sm-3">
<div class="content-card" style="width: 288px;">
<div class="content-card-body">
<div class="stat-widget-one">
<div class="stat-icon">
<i class="fa fa-user"/>
</div>
<div class="stat-content">
<div class="stat-head">Students</div>
<div class="stat-count">
<span id="templates">
<div id="all_students"/>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Tile that shows the number of faculties -->
<div class="col-md-3 col-sm-3">
<div class="content-card" style="width: 288px;">
<div class="content-card-body">
<div class="stat-widget-one">
<div class="stat-icon">
<i class="fa fa-male"/>
</div>
<div class="stat-content">
<div class="stat-head">Faculties</div>
<div class="stat-count">
<span id="templates">
<div id="all_faculties"/>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Tile that shows the number of amenities -->
<div class="col-md-3 col-sm-3">
<div class="content-card" style="width: 288px;">
<div class="content-card-body">
<div class="stat-widget-one">
<div class="stat-icon">
<i class="fa fa-list"/>
</div>
<div class="stat-content">
<div class="stat-head">Amenities</div>
<div class="stat-count">
<span id="templates">
<div id="all_amenities"/>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Tile that shows the attendance table -->
<div class="col-md-3 col-sm-3">
<div class="content-card" id="all_attendance"
style="width: 288px;">
<div class="content-card-body">
<div class="stat-widget-one">
<div class="stat-icon">
<i class="fa fa-check-square-o"/>
</div>
<div class="stat-content">
<div class="stat-head">Attendance Table</div>
</div>
</div>
</div>
</div>
</div>
<!-- Tile that shows the exam results -->
<div class="col-md-3 col-sm-3">
<div class="content-card" id="exams" style="width: 288px;">
<div class="content-card-body">
<div class="stat-widget-one">
<div class="stat-icon">
<i class="fa fa-line-chart"/>
</div>
<div class="stat-content">
<div class="stat-head">Exam Result</div>
<div class="stat-count">
<span id="templates">
<div id="all_exams"/>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Tile that shows the timetable -->
<div class="col-md-3 col-sm-3">
<div class="content-card" id="timetable" style="width: 288px;">
<div class="content-card-body">
<div class="stat-widget-one">
<div class="stat-icon">
<i class="fa fa-calendar"/>
</div>
<div class="stat-content">
<div class="stat-head">Time Table</div>
</div>
</div>
</div>
</div>
</div>
<!-- Tile that shows the student promotions -->
<div class="col-md-3 col-sm-3">
<div class="content-card" id="promotion" style="width: 288px;">
<div class="content-card-body">
<div class="stat-widget-one">
<div class="stat-icon">
<i class="fa fa-graduation-cap"/>
</div>
<div class="stat-content">
<div class="stat-head">Student Promotions</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="render_graph_div col-lg-12 col-md-2">
<!-- Division to show the bar chart for applications -->
<div class="chart-container inline">
<h2>Applications</h2>
<hr/>
<div class="graph_canvas">
<canvas class="application_count" width="340px"
height="400px"/>
</div>
</div>
<!-- Division to show the pie chart for exam results -->
<div class="pie-container inline">
<h2>Exam Result</h2>
<hr/>
<!-- Division for chart filter -->
<div class="pie-chart-filter" style="margin-left:180px;">
<select class="academic_year_filter" id="select_period"
required="true">
</select>
</div>
<!-- Division to show the chart -->
<div class="pie_canvas" style="margin-left:180px;">
<canvas class="exam_result" width="100%"/>
<canvas id="academic_exam_result"
class="academic_exam_result" width="100%"/>
<canvas class="no_data_exam_result" width="100%"/>
</div>
</div>
<!-- Division to show the line chart for student strength -->
<div class="student-strength-container inline">
<h2>Student Strength</h2>
<hr/>
<div class="student_strength_canvas">
<canvas class="student_strength" width="340px"
height="400px"/>
</div>
</div>
<!-- Division to show the bar chart for rejected and accepted
applications -->
<div class="rejected-application-container inline">
<h2>Rejected Applications</h2>
<hr/>
<div class="rejected_canvas">
<canvas class="rejected_accepted_count" width="340px"
height="400px"/>
</div>
</div>
<!-- Division to show the bar chart for average marks -->
<div class="class-average-marks-container inline">
<h2>Average Marks</h2>
<hr/>
<div class="average_mark_canvas">
<canvas class="average_marks" width="340px"
height="400px"/>
</div>
</div>
<!-- Division to show the doughnut chart for attendance -->
<div class="doughnut-container inline">
<h2>Attendance</h2>
<hr/>
<!-- Division for attendance filter -->
<div class="doughnut-chart-filter" style="margin-left:180px;">
<select class="class_attendance_filter" id="select_class"
required="true">
</select>
</div>
<!-- Division to show the chart -->
<div class="doughnut_canvas" style="margin-left:180px;">
<canvas class="total_attendance_today" width="100%"/>
<canvas class="class_attendance_today" width="100%"/>
</div>
</div>
</div>
</t>
</template>

9
education_erp_dashboard/static/src/xml/dashboard_templates.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Main template for the dashboard -->
<template>
<t t-name="EducationalDashboard">
<div class="oh_dashboards">
<div class="container-fluid my-5 o_hr_dashboard"/>
</div>
</t>
</template>

9
education_erp_dashboard/views/dashboard_tag_views.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Record to create a tag for Educational Dashboard -->
<record id="education_erp_dashboard_action" model="ir.actions.client">
<field name="name">Educational Dashboard</field>
<field name="tag">erp_dashboard_tag</field>
<field name="target">current</field>
</record>
</odoo>

11
education_erp_dashboard/views/erp_dashboard_menu.xml

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Root menu item representing the Educational Dashboard -->
<menuitem id="education_erp_dashboard_menu_root"
name="Educational Dashboard"
web_icon="education_erp_dashboard,static/description/icon.png"/>
<!-- Submenu of Educational Dashboard which linked to an action -->
<menuitem id="education_erp_dashboard_menu" name="Dashboard"
action="education_erp_dashboard_action"
parent="education_erp_dashboard_menu_root"/>
</odoo>
Loading…
Cancel
Save