From c72297e0c8b8da27aef907cb19c6da02e356b372 Mon Sep 17 00:00:00 2001 From: hannathkadher Date: Mon, 27 Jan 2025 14:21:07 +0400 Subject: [PATCH] updated the duplicate --- .../widgets/community_structure_widget.dart | 22 ++++++++++++++++++- .../views/assign_tag_models_dialog.dart | 10 ++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/lib/pages/spaces_management/all_spaces/widgets/community_structure_widget.dart b/lib/pages/spaces_management/all_spaces/widgets/community_structure_widget.dart index 4d470c55..44122a06 100644 --- a/lib/pages/spaces_management/all_spaces/widgets/community_structure_widget.dart +++ b/lib/pages/spaces_management/all_spaces/widgets/community_structure_widget.dart @@ -703,8 +703,28 @@ class _CommunityStructureAreaState extends State { } }); - Offset childStartPosition = newPosition + Offset(0, verticalGap); + final childrenWithDownDirection = original.children + .where((child) => + child.incomingConnection?.direction == "down" && + child.status != SpaceStatus.deleted) + .toList(); + + Offset childStartPosition = childrenWithDownDirection.length == 1 + ? duplicated.position + : newPosition + Offset(0, verticalGap); + for (final child in original.children) { + final isDownDirection = + child.incomingConnection?.direction == "down" ?? false; + + if (isDownDirection && childrenWithDownDirection.length == 1) { + // Place the only "down" child vertically aligned with the parent + childStartPosition = duplicated.position + Offset(0, verticalGap); + } else if (!isDownDirection) { + // Position children with other directions horizontally + childStartPosition = duplicated.position + Offset(horizontalGap, 0); + } + final duplicatedChild = duplicateRecursive(child, childStartPosition, duplicated); duplicated.children.add(duplicatedChild); diff --git a/lib/pages/spaces_management/assign_tag_models/views/assign_tag_models_dialog.dart b/lib/pages/spaces_management/assign_tag_models/views/assign_tag_models_dialog.dart index 8f9b51d7..31dba875 100644 --- a/lib/pages/spaces_management/assign_tag_models/views/assign_tag_models_dialog.dart +++ b/lib/pages/spaces_management/assign_tag_models/views/assign_tag_models_dialog.dart @@ -385,6 +385,15 @@ class AssignTagModelsDialog extends StatelessWidget { final modifiedTags = List.from(updatedTags); final modifiedSubspaces = List.from(subspaces ?? []); + if (subspaces != null) { + for (var subspace in subspaces) { + subspace.tags?.removeWhere( + (tag) => !modifiedTags + .any((updatedTag) => updatedTag.internalId == tag.internalId), + ); + } + } + for (var tag in modifiedTags.toList()) { if (modifiedSubspaces.isEmpty) continue; @@ -461,5 +470,4 @@ class AssignTagModelsDialog extends StatelessWidget { 'subspaces': modifiedSubspaces, }; } - }