From 3f3e1c2a87e075ee0addea6ccb205f09ed3f8768 Mon Sep 17 00:00:00 2001 From: MeysamMoghaddam <65253484+MeysamMoghaddam@users.noreply.github.com> Date: Mon, 13 Oct 2025 20:20:07 +0330 Subject: [PATCH] u --- .../Shared/OrganizationChart.razor | 73 +------------------ .../Shared/OrganizationChart.razor.cs | 41 ++++++----- .../Shared/OrganizationChartLevel.razor | 43 +++++++++++ .../Shared/OrganizationChartLevel.razor.cs | 38 ++++++++++ 4 files changed, 105 insertions(+), 90 deletions(-) create mode 100644 src/FrontOffice.Main/Shared/OrganizationChartLevel.razor create mode 100644 src/FrontOffice.Main/Shared/OrganizationChartLevel.razor.cs diff --git a/src/FrontOffice.Main/Shared/OrganizationChart.razor b/src/FrontOffice.Main/Shared/OrganizationChart.razor index 3f2abcb..b489eac 100644 --- a/src/FrontOffice.Main/Shared/OrganizationChart.razor +++ b/src/FrontOffice.Main/Shared/OrganizationChart.razor @@ -35,77 +35,10 @@ @if (_isExpanded && _currentUser?.Children?.Any() == true) { -
- @foreach (var child in _currentUser.Children) - { -
-
-
-
- - - - @if (child.Children?.Any() == true) - { - - } -
-
-
@child.FirstName @child.LastName
-
-
- خرید شخصی: - @(child.PersonalPurchase?.ToThousands().ToCurrencyUnitIRT() ?? "0 تومان") -
-
- خرید تیمی: - @(child.TeamPurchase?.ToThousands().ToCurrencyUnitIRT() ?? "0 تومان") -
-
-
-
- - @if (child.IsExpanded && child.Children?.Any() == true) - { -
- @foreach (var grandchild in child.Children) - { -
-
-
-
- - - -
-
-
@grandchild.FirstName @grandchild.LastName
-
-
- خرید شخصی: - @(grandchild.PersonalPurchase?.ToThousands().ToCurrencyUnitIRT() ?? "0 تومان") -
-
- خرید تیمی: - @(grandchild.TeamPurchase?.ToThousands().ToCurrencyUnitIRT() ?? "0 تومان") -
-
-
-
-
- } -
- } -
- } -
+ } + + diff --git a/src/FrontOffice.Main/Shared/OrganizationChart.razor.cs b/src/FrontOffice.Main/Shared/OrganizationChart.razor.cs index d9a5749..4b5abf7 100644 --- a/src/FrontOffice.Main/Shared/OrganizationChart.razor.cs +++ b/src/FrontOffice.Main/Shared/OrganizationChart.razor.cs @@ -1,4 +1,6 @@ -namespace FrontOffice.Main.Shared; +using static FrontOffice.Main.Shared.OrganizationChartLevel; + +namespace FrontOffice.Main.Shared; public partial class OrganizationChart { private UserNode? _currentUser; @@ -38,7 +40,18 @@ public partial class OrganizationChart FirstName = "سارا", LastName = "کریمی", PersonalPurchase = 1200000, - TeamPurchase = 3200000 + TeamPurchase = 3200000, + Children = new List + { + new UserNode + { + Id = 8, + FirstName = "نازنین", + LastName = "رضایی", + PersonalPurchase = 950000, + TeamPurchase = 2100000 + } + } }, new UserNode { @@ -89,17 +102,17 @@ public partial class OrganizationChart StateHasChanged(); } - private void ToggleChildExpand(long userId) + public void ToggleNodeExpand(long userId) { - var child = FindChild(_currentUser, userId); - if (child != null) + var node = FindNode(_currentUser, userId); + if (node != null) { - child.IsExpanded = !child.IsExpanded; + node.IsExpanded = !node.IsExpanded; StateHasChanged(); } } - private UserNode? FindChild(UserNode? node, long userId) + private UserNode? FindNode(UserNode? node, long userId) { if (node == null) return null; if (node.Id == userId) return node; @@ -108,23 +121,11 @@ public partial class OrganizationChart { foreach (var child in node.Children) { - var found = FindChild(child, userId); + var found = FindNode(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/OrganizationChartLevel.razor b/src/FrontOffice.Main/Shared/OrganizationChartLevel.razor new file mode 100644 index 0000000..54ead03 --- /dev/null +++ b/src/FrontOffice.Main/Shared/OrganizationChartLevel.razor @@ -0,0 +1,43 @@ + +
+ @foreach (var node in Nodes) + { +
+
+
+
+ + + + @if (node.Children?.Any() == true) + { + + } +
+
+
@node.FirstName @node.LastName
+
+
+ خرید شخصی: + @(node.PersonalPurchase?.ToThousands().ToCurrencyUnitIRT() ?? "0 تومان") +
+
+ خرید تیمی: + @(node.TeamPurchase?.ToThousands().ToCurrencyUnitIRT() ?? "0 تومان") +
+
+
+
+ + @if (node.IsExpanded && node.Children?.Any() == true) + { + + } +
+ } +
+ diff --git a/src/FrontOffice.Main/Shared/OrganizationChartLevel.razor.cs b/src/FrontOffice.Main/Shared/OrganizationChartLevel.razor.cs new file mode 100644 index 0000000..6b27733 --- /dev/null +++ b/src/FrontOffice.Main/Shared/OrganizationChartLevel.razor.cs @@ -0,0 +1,38 @@ +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace FrontOffice.Main.Shared; +public partial class OrganizationChartLevel +{ + [Parameter] public List? Nodes { get; set; } + [Parameter] public int Level { get; set; } = 1; + + [CascadingParameter] private OrganizationChart ParentChart { get; set; } = default!; + + private Size GetAvatarSize(int level) + { + return level switch + { + 1 => Size.Large, + 2 => Size.Medium, + _ => Size.Small + }; + } + + private void ToggleNodeExpand(long userId) + { + ParentChart.ToggleNodeExpand(userId); + } + + 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