perf: Optimise Rendering

- optimise get_children function

- use promises instead of callbacks

- optimise selectors

- use const wherever possible

- use pure js instead of jquery for connectors for faster rendering
This commit is contained in:
Rucha Mahabal
2021-07-08 09:53:31 +05:30
parent 31a0f36ed9
commit a48b23e6a5
3 changed files with 78 additions and 91 deletions

View File

@@ -2,33 +2,25 @@ from __future__ import unicode_literals
import frappe
@frappe.whitelist()
def get_children(parent=None, company=None, exclude_node=None, is_root=False, is_tree=False, fields=None):
def get_children(parent=None, company=None):
filters = [['status', '!=', 'Left']]
if company and company != 'All Companies':
filters.append(['company', '=', company])
if not fields:
fields = ['employee_name as name', 'name as id', 'reports_to', 'image', 'designation as title']
if is_root:
parent = ''
if exclude_node:
filters.append(['name', '!=', exclude_node])
if parent and company and parent != company:
filters.append(['reports_to', '=', parent])
else:
filters.append(['reports_to', '=', ''])
employees = frappe.get_list('Employee', fields=fields,
filters=filters, order_by='name')
employees = frappe.get_list('Employee',
fields=['employee_name as name', 'name as id', 'reports_to', 'image', 'designation as title'],
filters=filters,
order_by='name'
)
for employee in employees:
is_expandable = frappe.get_all('Employee', filters=[
['reports_to', '=', employee.get('id')]
])
is_expandable = frappe.db.count('Employee', filters={'reports_to': employee.get('id')})
employee.connections = get_connections(employee.id)
employee.expandable = 1 if is_expandable else 0