diff --git a/addons/hr_org_chart/models/hr_org_chart_mixin.py b/addons/hr_org_chart/models/hr_org_chart_mixin.py index 4e76945df7266..3668a4dfdefdb 100644 --- a/addons/hr_org_chart/models/hr_org_chart_mixin.py +++ b/addons/hr_org_chart/models/hr_org_chart_mixin.py @@ -12,6 +12,12 @@ class HrEmployeeBase(models.AbstractModel): 'Indirect Subordinates Count', compute='_compute_subordinates', recursive=True, store=False, compute_sudo=True) + department_color = fields.Integer("Department Color", related="department_id.color") + child_count = fields.Integer( + 'Direct Subordinates Count', + compute='_compute_child_count', recursive=True, + compute_sudo=True, + ) def _get_subordinates(self, parents=None): """ @@ -56,3 +62,13 @@ def _search_is_subordinate(self, operator, value): if not self.env.user.employee_id.subordinate_ids: return [('id', operator, self.env.user.employee_id.id)] return (['!'] if operator == '!=' else []) + [('id', 'in', self.env.user.employee_id.subordinate_ids.ids)] + + def _compute_child_count(self): + employee_read_group = self._read_group( + [('parent_id', 'in', self.ids)], + ['parent_id'], + ['id:count'], + ) + child_count_per_parent_id = dict(employee_read_group) + for employee in self: + employee.child_count = child_count_per_parent_id.get(employee._origin, 0) diff --git a/addons/hr_org_chart/static/src/views/hr_employee_hierarchy/hr_employee_hierarchy_renderer.js b/addons/hr_org_chart/static/src/views/hr_employee_hierarchy/hr_employee_hierarchy_renderer.js new file mode 100644 index 0000000000000..972a1f744556b --- /dev/null +++ b/addons/hr_org_chart/static/src/views/hr_employee_hierarchy/hr_employee_hierarchy_renderer.js @@ -0,0 +1,13 @@ +/** @odoo-module **/ + +import { Avatar } from "@mail/views/web/fields/avatar/avatar"; + +import { HierarchyRenderer } from "../hierarchy/hierarchy_renderer"; + +export class HrEmployeeHierarchyRenderer extends HierarchyRenderer { + static template = "hr_org_chart.HrEmployeeHierarchyRenderer"; + static components = { + ...HierarchyRenderer.components, + Avatar, + }; +} diff --git a/addons/hr_org_chart/static/src/views/hr_employee_hierarchy/hr_employee_hierarchy_renderer.scss b/addons/hr_org_chart/static/src/views/hr_employee_hierarchy/hr_employee_hierarchy_renderer.scss new file mode 100644 index 0000000000000..d82a9429f2e71 --- /dev/null +++ b/addons/hr_org_chart/static/src/views/hr_employee_hierarchy/hr_employee_hierarchy_renderer.scss @@ -0,0 +1,7 @@ +.o_hierarchy_renderer { + .o_hierarchy_parent_node_container { + .o_avatar > span { + width: 100% !important; + } + } +} diff --git a/addons/hr_org_chart/static/src/views/hr_employee_hierarchy/hr_employee_hierarchy_renderer.xml b/addons/hr_org_chart/static/src/views/hr_employee_hierarchy/hr_employee_hierarchy_renderer.xml new file mode 100644 index 0000000000000..760af418f3f24 --- /dev/null +++ b/addons/hr_org_chart/static/src/views/hr_employee_hierarchy/hr_employee_hierarchy_renderer.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/addons/hr_org_chart/static/src/views/hr_employee_hierarchy/hr_employee_hierarchy_view.js b/addons/hr_org_chart/static/src/views/hr_employee_hierarchy/hr_employee_hierarchy_view.js new file mode 100644 index 0000000000000..05fb680dcb8e4 --- /dev/null +++ b/addons/hr_org_chart/static/src/views/hr_employee_hierarchy/hr_employee_hierarchy_view.js @@ -0,0 +1,12 @@ +/** @odoo-module **/ + +import { registry } from "@web/core/registry"; +import { hierarchyView } from "../hierarchy/hierarchy_view"; +import { HrEmployeeHierarchyRenderer } from "./hr_employee_hierarchy_renderer"; + +export const hrEmployeeHierarchyView = { + ...hierarchyView, + Renderer: HrEmployeeHierarchyRenderer, +}; + +registry.category("views").add("hr_employee_hierarchy", hrEmployeeHierarchyView); diff --git a/addons/hr_org_chart/views/hr_views.xml b/addons/hr_org_chart/views/hr_views.xml index 90c17ebe13321..a4d99775ced9a 100644 --- a/addons/hr_org_chart/views/hr_views.xml +++ b/addons/hr_org_chart/views/hr_views.xml @@ -14,6 +14,36 @@ + + hr.employee.view.hierarchy + hr.employee + + + + + + + + + +
+ +
+
+
+ + +
+ +
+
+
+
+
+
+ hr.employee.public.view.form.inherit.org_chart hr.employee.public @@ -41,4 +71,8 @@ + + + kanban,tree,form,activity,graph,pivot,hierarchy +