added space delete

This commit is contained in:
hannathkadher
2025-01-12 12:10:54 +04:00
parent a588351482
commit a381fd317d
5 changed files with 43 additions and 17 deletions

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_web/pages/common/buttons/default_button.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/model/community_model.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/model/space_model.dart';
import 'package:syncrow_web/pages/spaces_management/create_community/view/create_community_dialog.dart';
import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/constants/assets.dart';
@ -17,6 +18,7 @@ class CommunityStructureHeader extends StatefulWidget {
final ValueChanged<String> onNameSubmitted;
final List<CommunityModel> communities;
final CommunityModel? community;
final SpaceModel? selectedSpace;
const CommunityStructureHeader(
{super.key,
@ -29,7 +31,8 @@ class CommunityStructureHeader extends StatefulWidget {
required this.onEditName,
required this.onNameSubmitted,
this.community,
required this.communities});
required this.communities,
this.selectedSpace});
@override
State<CommunityStructureHeader> createState() =>
@ -137,10 +140,8 @@ class _CommunityStructureHeaderState extends State<CommunityStructureHeader> {
],
),
),
if (widget.isSave) ...[
const SizedBox(width: 8),
_buildActionButtons(theme),
],
const SizedBox(width: 8),
_buildActionButtons(theme),
],
),
],
@ -152,11 +153,19 @@ class _CommunityStructureHeaderState extends State<CommunityStructureHeader> {
alignment: WrapAlignment.end,
spacing: 10,
children: [
if (widget.isSave)
_buildButton(
label: "Save",
icon: const Icon(Icons.save,
size: 18, color: ColorsManager.spaceColor),
onPressed: widget.onSave,
theme: theme),
if(widget.selectedSpace!= null)
_buildButton(
label: "Save",
icon: const Icon(Icons.save,
size: 18, color: ColorsManager.spaceColor),
onPressed: widget.onSave,
label: "Delete",
icon: const Icon(Icons.delete,
size: 18, color: ColorsManager.warningRed),
onPressed: widget.onDelete,
theme: theme),
],
);

View File

@ -131,6 +131,7 @@ class _CommunityStructureAreaState extends State<CommunityStructureArea> {
isEditingName: isEditingName,
nameController: _nameController,
onSave: _saveSpaces,
selectedSpace: widget.selectedSpace,
onDelete: _onDelete,
onEditName: () {
setState(() {
@ -176,7 +177,8 @@ class _CommunityStructureAreaState extends State<CommunityStructureArea> {
painter: CurvedLinePainter([connection])),
),
for (var entry in spaces.asMap().entries)
if (entry.value.status != SpaceStatus.deleted)
if (entry.value.status != SpaceStatus.deleted ||
entry.value.status != SpaceStatus.parentDeleted)
Positioned(
left: entry.value.position.dx,
top: entry.value.position.dy,
@ -358,7 +360,7 @@ class _CommunityStructureAreaState extends State<CommunityStructureArea> {
space.name = name;
space.icon = icon;
space.spaceModel = spaceModel;
space.subspaces= subspaces;
space.subspaces = subspaces;
space.tags = tags;
if (space.status != SpaceStatus.newSpace) {
@ -382,7 +384,8 @@ class _CommunityStructureAreaState extends State<CommunityStructureArea> {
List<SpaceModel> result = [];
void flatten(SpaceModel space) {
if (space.status == SpaceStatus.deleted) return;
if (space.status == SpaceStatus.deleted ||
space.status == SpaceStatus.parentDeleted) return;
result.add(space);
@ -475,7 +478,8 @@ class _CommunityStructureAreaState extends State<CommunityStructureArea> {
void _markChildrenAsDeleted(SpaceModel parent) {
for (var child in parent.children) {
child.status = SpaceStatus.deleted;
child.status = SpaceStatus.parentDeleted;
_markChildrenAsDeleted(child);
}
}
@ -483,7 +487,9 @@ class _CommunityStructureAreaState extends State<CommunityStructureArea> {
void _removeConnectionsForDeletedSpaces() {
connections.removeWhere((connection) {
return connection.startSpace.status == SpaceStatus.deleted ||
connection.endSpace.status == SpaceStatus.deleted;
connection.endSpace.status == SpaceStatus.deleted ||
connection.startSpace.status == SpaceStatus.parentDeleted ||
connection.endSpace.status == SpaceStatus.parentDeleted;
});
}