mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 15:17:31 +00:00
added event for creating subspace
This commit is contained in:
@ -3,7 +3,8 @@ import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_spac
|
|||||||
import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_space_model_state.dart';
|
import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_space_model_state.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';
|
||||||
|
|
||||||
class CreateSpaceModelBloc extends Bloc<CreateSpaceModelEvent, CreateSpaceModelState> {
|
class CreateSpaceModelBloc
|
||||||
|
extends Bloc<CreateSpaceModelEvent, CreateSpaceModelState> {
|
||||||
SpaceTemplateModel? _space;
|
SpaceTemplateModel? _space;
|
||||||
|
|
||||||
CreateSpaceModelBloc() : super(CreateSpaceModelInitial()) {
|
CreateSpaceModelBloc() : super(CreateSpaceModelInitial()) {
|
||||||
@ -22,5 +23,20 @@ class CreateSpaceModelBloc extends Bloc<CreateSpaceModelEvent, CreateSpaceModelS
|
|||||||
_space = event.spaceTemplate;
|
_space = event.spaceTemplate;
|
||||||
emit(CreateSpaceModelLoaded(_space!));
|
emit(CreateSpaceModelLoaded(_space!));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
on<AddSubspacesToSpaceTemplate>((event, emit) {
|
||||||
|
if (_space != null) {
|
||||||
|
final updatedSpace = _space!.copyWith(
|
||||||
|
subspaceModels: [
|
||||||
|
...(_space!.subspaceModels ?? []),
|
||||||
|
...event.subspaces,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
_space = updatedSpace;
|
||||||
|
emit(CreateSpaceModelLoaded(updatedSpace));
|
||||||
|
} else {
|
||||||
|
emit(CreateSpaceModelError("Space template not initialized"));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,3 +9,9 @@ class UpdateSpaceTemplate extends CreateSpaceModelEvent {
|
|||||||
|
|
||||||
UpdateSpaceTemplate(this.spaceTemplate);
|
UpdateSpaceTemplate(this.spaceTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class AddSubspacesToSpaceTemplate extends CreateSpaceModelEvent {
|
||||||
|
final List<SubspaceTemplateModel> subspaces;
|
||||||
|
|
||||||
|
AddSubspacesToSpaceTemplate(this.subspaces);
|
||||||
|
}
|
||||||
|
@ -25,11 +25,11 @@ class SpaceTemplateModel {
|
|||||||
internalId: internalId,
|
internalId: internalId,
|
||||||
modelName: json['modelName'] ?? '',
|
modelName: json['modelName'] ?? '',
|
||||||
subspaceModels: (json['subspaceModels'] as List)
|
subspaceModels: (json['subspaceModels'] as List)
|
||||||
.map((item) => SubspaceTemplateModel.fromJson(item))
|
.map((item) => SubspaceTemplateModel.fromJson(item))
|
||||||
.toList(),
|
.toList(),
|
||||||
tags: (json['tags'] as List)
|
tags: (json['tags'] as List)
|
||||||
.map((item) => TagModel.fromJson(item))
|
.map((item) => TagModel.fromJson(item))
|
||||||
.toList(),
|
.toList(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,6 +41,22 @@ class SpaceTemplateModel {
|
|||||||
'tags': tags?.map((e) => e.toJson()).toList(),
|
'tags': tags?.map((e) => e.toJson()).toList(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SpaceTemplateModel copyWith({
|
||||||
|
String? uuid,
|
||||||
|
String? modelName,
|
||||||
|
List<SubspaceTemplateModel>? subspaceModels,
|
||||||
|
List<TagModel>? tags,
|
||||||
|
String? internalId,
|
||||||
|
}) {
|
||||||
|
return SpaceTemplateModel(
|
||||||
|
uuid: uuid ?? this.uuid,
|
||||||
|
modelName: modelName ?? this.modelName,
|
||||||
|
subspaceModels: subspaceModels ?? this.subspaceModels,
|
||||||
|
tags: tags ?? this.tags,
|
||||||
|
internalId: internalId ?? this.internalId,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SubspaceTemplateModel {
|
class SubspaceTemplateModel {
|
||||||
|
@ -3,6 +3,8 @@ 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/all_spaces/model/product_model.dart';
|
import 'package:syncrow_web/pages/spaces_management/all_spaces/model/product_model.dart';
|
||||||
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/add_device_type_widget.dart';
|
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/add_device_type_widget.dart';
|
||||||
|
import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_space_model_bloc.dart';
|
||||||
|
import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_space_model_event.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/button_content_widget.dart';
|
||||||
import 'package:syncrow_web/pages/spaces_management/space_model/widgets/dialog/create_subspace_model_dialog.dart';
|
import 'package:syncrow_web/pages/spaces_management/space_model/widgets/dialog/create_subspace_model_dialog.dart';
|
||||||
@ -73,7 +75,11 @@ class CreateSpaceModelDialog extends StatelessWidget {
|
|||||||
if (result != null) {
|
if (result != null) {
|
||||||
// Update the subspaces
|
// Update the subspaces
|
||||||
subspaces = result;
|
subspaces = result;
|
||||||
print('Updated Subspaces: $subspaces');
|
if (result.isNotEmpty) {
|
||||||
|
context
|
||||||
|
.read<CreateSpaceModelBloc>()
|
||||||
|
.add(AddSubspacesToSpaceTemplate(subspaces));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
style: TextButton.styleFrom(
|
style: TextButton.styleFrom(
|
||||||
|
Reference in New Issue
Block a user