mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 15:17:31 +00:00
use devicePart in main widget
This commit is contained in:
@ -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,
|
||||||
|
Reference in New Issue
Block a user