mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-11-27 20:24:56 +00:00
added initial flow
This commit is contained in:
@ -84,6 +84,24 @@ class CreateSpaceModelBloc
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
on<AddTagsToSpaceTemplate>((event, emit) {
|
||||
final currentState = state;
|
||||
|
||||
if (currentState is CreateSpaceModelLoaded) {
|
||||
final updatedTags = currentState.space.copyWith(
|
||||
tags: [
|
||||
...(_space!.tags ?? []),
|
||||
...event.tags,
|
||||
],
|
||||
);
|
||||
emit(CreateSpaceModelLoaded(updatedTags));
|
||||
} else {
|
||||
emit(CreateSpaceModelError("Space template not initialized"));
|
||||
}
|
||||
});
|
||||
|
||||
on<UpdateSpaceTemplateName>((event, emit) {
|
||||
final currentState = state;
|
||||
if (currentState is CreateSpaceModelLoaded) {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import 'package:equatable/equatable.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/subspace_template_model.dart';
|
||||
import 'package:syncrow_web/pages/spaces_management/space_model/models/tag_model.dart';
|
||||
|
||||
abstract class CreateSpaceModelEvent extends Equatable {
|
||||
const CreateSpaceModelEvent();
|
||||
@ -46,6 +47,13 @@ class AddSubspacesToSpaceTemplate extends CreateSpaceModelEvent {
|
||||
AddSubspacesToSpaceTemplate(this.subspaces);
|
||||
}
|
||||
|
||||
class AddTagsToSpaceTemplate extends CreateSpaceModelEvent {
|
||||
final List<TagModel> tags;
|
||||
|
||||
AddTagsToSpaceTemplate(this.tags);
|
||||
}
|
||||
|
||||
|
||||
class ValidateSpaceTemplateName extends CreateSpaceModelEvent {
|
||||
final String name;
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ class SpaceTemplateModel extends Equatable {
|
||||
String internalId;
|
||||
|
||||
@override
|
||||
List<Object?> get props => [modelName, subspaceModels];
|
||||
List<Object?> get props => [modelName, subspaceModels, tags];
|
||||
|
||||
SpaceTemplateModel({
|
||||
this.uuid,
|
||||
|
||||
@ -118,13 +118,28 @@ class CreateSpaceModelDialog extends StatelessWidget {
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
TagChipDisplay(context,
|
||||
screenWidth: screenWidth,
|
||||
spaceModel: updatedSpaceModel,
|
||||
products: products,
|
||||
subspaces: subspaces,
|
||||
allTags: allTags,
|
||||
spaceNameController: spaceNameController),
|
||||
TagChipDisplay(
|
||||
context,
|
||||
screenWidth: screenWidth,
|
||||
spaceModel: updatedSpaceModel,
|
||||
products: products,
|
||||
subspaces: subspaces,
|
||||
allTags: allTags,
|
||||
spaceNameController: spaceNameController,
|
||||
onLoad: (tags, subspaces) {
|
||||
if(subspaces!=null){
|
||||
context
|
||||
.read<CreateSpaceModelBloc>()
|
||||
.add(AddSubspacesToSpaceTemplate(subspaces));
|
||||
}
|
||||
if(tags!=null){
|
||||
context
|
||||
.read<CreateSpaceModelBloc>()
|
||||
.add(AddTagsToSpaceTemplate(tags));
|
||||
|
||||
}
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
SizedBox(
|
||||
width: screenWidth * 0.25,
|
||||
|
||||
@ -16,17 +16,19 @@ class TagChipDisplay extends StatelessWidget {
|
||||
final List<SubspaceTemplateModel>? subspaces;
|
||||
final List<String>? allTags;
|
||||
final TextEditingController spaceNameController;
|
||||
final void Function(
|
||||
List<TagModel>? tags, List<SubspaceTemplateModel>? subspaces)? onLoad;
|
||||
|
||||
const TagChipDisplay(
|
||||
BuildContext context, {
|
||||
Key? key,
|
||||
required this.screenWidth,
|
||||
required this.spaceModel,
|
||||
required this.products,
|
||||
required this.subspaces,
|
||||
required this.allTags,
|
||||
required this.spaceNameController,
|
||||
}) : super(key: key);
|
||||
const TagChipDisplay(BuildContext context,
|
||||
{Key? key,
|
||||
required this.screenWidth,
|
||||
required this.spaceModel,
|
||||
required this.products,
|
||||
required this.subspaces,
|
||||
required this.allTags,
|
||||
required this.spaceNameController,
|
||||
this.onLoad})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@ -104,15 +106,12 @@ class TagChipDisplay extends StatelessWidget {
|
||||
child: Chip(
|
||||
label: const Text(
|
||||
'Edit',
|
||||
style: TextStyle(
|
||||
color: ColorsManager.spaceColor),
|
||||
style: TextStyle(color: ColorsManager.spaceColor),
|
||||
),
|
||||
backgroundColor:
|
||||
ColorsManager.whiteColors,
|
||||
backgroundColor: ColorsManager.whiteColors,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
side: const BorderSide(
|
||||
color: ColorsManager.spaceColor),
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
side: const BorderSide(color: ColorsManager.spaceColor),
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -122,7 +121,7 @@ class TagChipDisplay extends StatelessWidget {
|
||||
)
|
||||
: TextButton(
|
||||
onPressed: () async {
|
||||
final result = await showDialog<bool>(
|
||||
await showDialog<bool>(
|
||||
barrierDismissible: false,
|
||||
context: context,
|
||||
builder: (context) => AddDeviceTypeModelWidget(
|
||||
@ -131,9 +130,13 @@ class TagChipDisplay extends StatelessWidget {
|
||||
allTags: allTags,
|
||||
spaceName: spaceNameController.text,
|
||||
isCreate: true,
|
||||
onLoad: (tags, subspaces) {
|
||||
if (onLoad != null) {
|
||||
onLoad!(tags, subspaces);
|
||||
}
|
||||
},
|
||||
),
|
||||
);
|
||||
if (result == true) {}
|
||||
},
|
||||
style: TextButton.styleFrom(
|
||||
padding: EdgeInsets.zero,
|
||||
@ -189,5 +192,4 @@ class TagChipDisplay extends StatelessWidget {
|
||||
))
|
||||
.toList();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user