use devicePart in main widget

This commit is contained in:
Rafeek Alkhoudare
2025-05-28 01:21:06 -05:00
parent cf9bafef4d
commit 1db069e9a5

View File

@ -1,6 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_web/common/edit_chip.dart';
import 'package:syncrow_web/pages/common/buttons/cancel_button.dart'; import 'package:syncrow_web/pages/common/buttons/cancel_button.dart';
import 'package:syncrow_web/pages/common/buttons/default_button.dart'; import 'package:syncrow_web/pages/common/buttons/default_button.dart';
import 'package:syncrow_web/pages/spaces_management/add_device_type/views/add_device_type_widget.dart'; import 'package:syncrow_web/pages/spaces_management/add_device_type/views/add_device_type_widget.dart';
@ -9,6 +7,7 @@ import 'package:syncrow_web/pages/spaces_management/all_spaces/model/selected_pr
import 'package:syncrow_web/pages/spaces_management/all_spaces/model/space_model.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/model/space_model.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/model/subspace_model.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/model/subspace_model.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/model/tag.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/model/tag.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/create_space_widgets/devices_part_widget.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/create_space_widgets/icon_choose_part_widget.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/create_space_widgets/icon_choose_part_widget.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/create_space_widgets/space_model_linking_widget.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/create_space_widgets/space_model_linking_widget.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/create_space_widgets/space_name_textfield_widget.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/create_space_widgets/space_name_textfield_widget.dart';
@ -20,8 +19,6 @@ import 'package:syncrow_web/pages/spaces_management/helper/space_helper.dart';
import 'package:syncrow_web/pages/spaces_management/helper/tag_helper.dart'; import 'package:syncrow_web/pages/spaces_management/helper/tag_helper.dart';
import 'package:syncrow_web/pages/spaces_management/link_space_model/view/link_space_model_dialog.dart'; import 'package:syncrow_web/pages/spaces_management/link_space_model/view/link_space_model_dialog.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/models/space_template_model.dart'; import 'package:syncrow_web/pages/spaces_management/space_model/models/space_template_model.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/widgets/button_content_widget.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/widgets/subspace_name_label_widget.dart';
import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/constants/assets.dart';
import 'package:syncrow_web/utils/constants/space_icon_const.dart'; import 'package:syncrow_web/utils/constants/space_icon_const.dart';
@ -217,113 +214,47 @@ class CreateSpaceDialogState extends State<CreateSpaceDialog> {
}, },
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
(tags?.isNotEmpty == true || DevicesPartWidget(
subspaces?.any((subspace) => tags: tags,
subspace.tags?.isNotEmpty == true) == subspaces: subspaces,
true) screenWidth: screenWidth,
? SizedBox( isTagsAndSubspaceModelDisabled:
width: screenWidth * 0.25, isTagsAndSubspaceModelDisabled,
child: Container( onEditChip: () async {
padding: const EdgeInsets.all(8.0), await showDialog(
decoration: BoxDecoration( context: context,
color: ColorsManager.textFieldGreyColor, builder: (context) => AssignTagDialog(
borderRadius: BorderRadius.circular(15), products: widget.products,
border: Border.all( subspaces: subspaces,
color: ColorsManager.textFieldGreyColor, allTags: widget.allTags,
width: 3.0, // Border width addedProducts:
), TagHelper.createInitialSelectedProductsForTags(
), tags ?? [], subspaces),
child: Wrap( title: 'Edit Device',
spacing: 8.0, initialTags: TagHelper.generateInitialForTags(
runSpacing: 8.0, spaceTags: tags, subspaces: subspaces),
children: [ spaceName: widget.name ?? '',
// Combine tags from spaceModel and subspaces projectTags: widget.projectTags,
...TagHelper.groupTags([ onSave: (updatedTags, updatedSubspaces) {
...?tags, setState(() {
...?subspaces?.expand( tags = updatedTags;
(subspace) => subspace.tags ?? []) subspaces = updatedSubspaces;
]).entries.map( });
(entry) => Chip(
avatar: SizedBox(
width: 24,
height: 24,
child: SvgPicture.asset(
entry.key.icon ??
'assets/icons/gateway.svg',
fit: BoxFit.contain,
),
),
label: Text(
'x${entry.value}', // Show count
style: Theme.of(context)
.textTheme
.bodySmall
?.copyWith(
color: ColorsManager
.spaceColor),
),
backgroundColor:
ColorsManager.whiteColors,
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(16),
side: const BorderSide(
color: ColorsManager.spaceColor,
),
),
),
),
EditChip(onTap: () async {
await showDialog(
context: context,
builder: (context) => AssignTagDialog(
products: widget.products,
subspaces: subspaces,
allTags: widget.allTags,
addedProducts: TagHelper
.createInitialSelectedProductsForTags(
tags ?? [], subspaces),
title: 'Edit Device',
initialTags:
TagHelper.generateInitialForTags(
spaceTags: tags,
subspaces: subspaces),
spaceName: widget.name ?? '',
projectTags: widget.projectTags,
onSave:
(updatedTags, updatedSubspaces) {
setState(() {
tags = updatedTags;
subspaces = updatedSubspaces;
});
},
),
);
})
],
),
),
)
: TextButton(
onPressed: () {
isTagsAndSubspaceModelDisabled
? null
: _showTagCreateDialog(
context,
enteredName,
widget.isEdit,
widget.products,
);
}, },
style: TextButton.styleFrom( ),
padding: EdgeInsets.zero, );
), },
child: ButtonContentWidget( onTextButtonPressed: () {
icon: Icons.add, isTagsAndSubspaceModelDisabled
label: 'Add Devices', ? null
disabled: isTagsAndSubspaceModelDisabled, : _showTagCreateDialog(
)) context,
enteredName,
widget.isEdit,
widget.products,
);
},
)
], ],
), ),
), ),
@ -382,6 +313,7 @@ class CreateSpaceDialogState extends State<CreateSpaceDialog> {
); );
} }
//dialooogggs
void _showIconSelectionDialog() { void _showIconSelectionDialog() {
showDialog( showDialog(
context: context, context: context,