From 4d6332854eaeb58133a4f041cd150e6df1ec9041 Mon Sep 17 00:00:00 2001 From: MeysamMoghaddam <65253484+MeysamMoghaddam@users.noreply.github.com> Date: Mon, 13 Oct 2025 19:46:29 +0330 Subject: [PATCH] u --- .../Shared/OrganizationChart.razor | 128 ----------------- .../Shared/OrganizationChart.razor.cs | 130 ++++++++++++++++++ .../Shared/OrganizationChart.razor.css | 24 +++- 3 files changed, 153 insertions(+), 129 deletions(-) create mode 100644 src/FrontOffice.Main/Shared/OrganizationChart.razor.cs diff --git a/src/FrontOffice.Main/Shared/OrganizationChart.razor b/src/FrontOffice.Main/Shared/OrganizationChart.razor index 68327cd..3f2abcb 100644 --- a/src/FrontOffice.Main/Shared/OrganizationChart.razor +++ b/src/FrontOffice.Main/Shared/OrganizationChart.razor @@ -109,131 +109,3 @@ -@code { - private UserNode? _currentUser; - private bool _isExpanded; - - protected override async Task OnInitializedAsync() - { - await LoadCurrentUser(); - } - - private async Task LoadCurrentUser() - { - // Mock data - replace with actual API call - _currentUser = new UserNode - { - Id = 1, - FirstName = "علی", - LastName = "رضایی", - Avatar = "images/avatar1.jpg", - PersonalPurchase = 2500000, - TeamPurchase = 15000000, - Children = new List - { - new UserNode - { - Id = 2, - FirstName = "مریم", - LastName = "احمدی", - Avatar = "images/avatar2.jpg", - PersonalPurchase = 1800000, - TeamPurchase = 8500000, - Children = new List - { - new UserNode - { - Id = 5, - FirstName = "سارا", - LastName = "کریمی", - PersonalPurchase = 1200000, - TeamPurchase = 3200000 - }, - new UserNode - { - Id = 6, - FirstName = "امیر", - LastName = "حسینی", - PersonalPurchase = 950000, - TeamPurchase = 1800000 - } - } - }, - new UserNode - { - Id = 3, - FirstName = "حسن", - LastName = "کریمی", - Avatar = "images/avatar3.jpg", - PersonalPurchase = 2200000, - TeamPurchase = 9200000, - Children = new List - { - new UserNode - { - Id = 7, - FirstName = "فاطمه", - LastName = "رضایی", - PersonalPurchase = 1350000, - TeamPurchase = 4100000 - } - } - }, - new UserNode - { - Id = 4, - FirstName = "زهرا", - LastName = "محمدی", - Avatar = "images/avatar4.jpg", - PersonalPurchase = 1950000, - TeamPurchase = 7800000 - } - } - }; - } - - private void ToggleExpand() - { - _isExpanded = !_isExpanded; - StateHasChanged(); - } - - private void ToggleChildExpand(long userId) - { - var child = FindChild(_currentUser, userId); - if (child != null) - { - child.IsExpanded = !child.IsExpanded; - StateHasChanged(); - } - } - - private UserNode? FindChild(UserNode? node, long userId) - { - if (node == null) return null; - if (node.Id == userId) return node; - - if (node.Children != null) - { - foreach (var child in node.Children) - { - var found = FindChild(child, userId); - if (found != null) return found; - } - } - - return null; - } - - public class UserNode - { - public long Id { get; set; } - public string? FirstName { get; set; } - public string? LastName { get; set; } - public string? Avatar { get; set; } - public long? PersonalPurchase { get; set; } - public long? TeamPurchase { get; set; } - public List? Children { get; set; } - public bool IsExpanded { get; set; } - } -} \ No newline at end of file diff --git a/src/FrontOffice.Main/Shared/OrganizationChart.razor.cs b/src/FrontOffice.Main/Shared/OrganizationChart.razor.cs new file mode 100644 index 0000000..d9a5749 --- /dev/null +++ b/src/FrontOffice.Main/Shared/OrganizationChart.razor.cs @@ -0,0 +1,130 @@ +namespace FrontOffice.Main.Shared; +public partial class OrganizationChart +{ + private UserNode? _currentUser; + private bool _isExpanded; + + protected override async Task OnInitializedAsync() + { + await LoadCurrentUser(); + } + + private async Task LoadCurrentUser() + { + // Mock data - replace with actual API call + _currentUser = new UserNode + { + Id = 1, + FirstName = "علی", + LastName = "رضایی", + Avatar = "images/avatar1.jpg", + PersonalPurchase = 2500000, + TeamPurchase = 15000000, + Children = new List + { + new UserNode + { + Id = 2, + FirstName = "مریم", + LastName = "احمدی", + Avatar = "images/avatar2.jpg", + PersonalPurchase = 1800000, + TeamPurchase = 8500000, + Children = new List + { + new UserNode + { + Id = 5, + FirstName = "سارا", + LastName = "کریمی", + PersonalPurchase = 1200000, + TeamPurchase = 3200000 + }, + new UserNode + { + Id = 6, + FirstName = "امیر", + LastName = "حسینی", + PersonalPurchase = 950000, + TeamPurchase = 1800000 + } + } + }, + new UserNode + { + Id = 3, + FirstName = "حسن", + LastName = "کریمی", + Avatar = "images/avatar3.jpg", + PersonalPurchase = 2200000, + TeamPurchase = 9200000, + Children = new List + { + new UserNode + { + Id = 7, + FirstName = "فاطمه", + LastName = "رضایی", + PersonalPurchase = 1350000, + TeamPurchase = 4100000 + } + } + }, + new UserNode + { + Id = 4, + FirstName = "زهرا", + LastName = "محمدی", + Avatar = "images/avatar4.jpg", + PersonalPurchase = 1950000, + TeamPurchase = 7800000 + } + } + }; + } + + private void ToggleExpand() + { + _isExpanded = !_isExpanded; + StateHasChanged(); + } + + private void ToggleChildExpand(long userId) + { + var child = FindChild(_currentUser, userId); + if (child != null) + { + child.IsExpanded = !child.IsExpanded; + StateHasChanged(); + } + } + + private UserNode? FindChild(UserNode? node, long userId) + { + if (node == null) return null; + if (node.Id == userId) return node; + + if (node.Children != null) + { + foreach (var child in node.Children) + { + var found = FindChild(child, userId); + if (found != null) return found; + } + } + + return null; + } + + public class UserNode + { + public long Id { get; set; } + public string? FirstName { get; set; } + public string? LastName { get; set; } + public string? Avatar { get; set; } + public long? PersonalPurchase { get; set; } + public long? TeamPurchase { get; set; } + public List? Children { get; set; } + public bool IsExpanded { get; set; } + } +} \ No newline at end of file diff --git a/src/FrontOffice.Main/Shared/OrganizationChart.razor.css b/src/FrontOffice.Main/Shared/OrganizationChart.razor.css index 1d0e4ea..7ebb732 100644 --- a/src/FrontOffice.Main/Shared/OrganizationChart.razor.css +++ b/src/FrontOffice.Main/Shared/OrganizationChart.razor.css @@ -134,7 +134,7 @@ .org-level::before { content: ''; position: absolute; - top: -20px; + top: -40px; left: 50%; transform: translateX(-50%); width: 2px; @@ -142,6 +142,17 @@ background: #ddd; } +.org-level::after { + content: ''; + position: absolute; + top: -20px; + left: 0; + right: 0; + height: 2px; + background: #ddd; + z-index: 1; +} + .org-sublevel { display: flex; justify-content: center; @@ -161,6 +172,17 @@ background: #ddd; } +.org-sublevel::after { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 2px; + background: #ddd; + z-index: 1; +} + /* Responsive adjustments */ @media (max-width: 768px) { .org-chart-container {