mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 15:17:31 +00:00
moved widgets to their own files.
This commit is contained in:
@ -7,9 +7,8 @@ import 'package:syncrow_web/pages/routines/models/ceiling_presence_sensor_functi
|
|||||||
import 'package:syncrow_web/pages/routines/models/device_functions.dart';
|
import 'package:syncrow_web/pages/routines/models/device_functions.dart';
|
||||||
import 'package:syncrow_web/pages/routines/widgets/dialog_footer.dart';
|
import 'package:syncrow_web/pages/routines/widgets/dialog_footer.dart';
|
||||||
import 'package:syncrow_web/pages/routines/widgets/dialog_header.dart';
|
import 'package:syncrow_web/pages/routines/widgets/dialog_header.dart';
|
||||||
import 'package:syncrow_web/pages/routines/widgets/routine_dialog_function_list_tile.dart';
|
import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/ceiling_sensor/cps_dialog_value_selector.dart';
|
||||||
import 'package:syncrow_web/pages/routines/widgets/routine_dialog_selection_list_tile.dart';
|
import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/ceiling_sensor/cps_functions_list.dart';
|
||||||
import 'package:syncrow_web/utils/color_manager.dart';
|
|
||||||
|
|
||||||
class CeilingSensorDialog extends StatefulWidget {
|
class CeilingSensorDialog extends StatefulWidget {
|
||||||
const CeilingSensorDialog({
|
const CeilingSensorDialog({
|
||||||
@ -20,6 +19,7 @@ class CeilingSensorDialog extends StatefulWidget {
|
|||||||
required this.dialogType,
|
required this.dialogType,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
final String? uniqueCustomId;
|
final String? uniqueCustomId;
|
||||||
final List<DeviceFunction> functions;
|
final List<DeviceFunction> functions;
|
||||||
final List<DeviceFunctionData> deviceSelectedFunctions;
|
final List<DeviceFunctionData> deviceSelectedFunctions;
|
||||||
@ -142,88 +142,3 @@ class _CeilingSensorDialogState extends State<CeilingSensorDialog> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class CpsFunctionsList extends StatelessWidget {
|
|
||||||
const CpsFunctionsList({required this.cpsFunctions, super.key});
|
|
||||||
|
|
||||||
final List<CpsFunctions> cpsFunctions;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return SizedBox(
|
|
||||||
width: 360,
|
|
||||||
child: ListView.separated(
|
|
||||||
shrinkWrap: false,
|
|
||||||
itemCount: cpsFunctions.length,
|
|
||||||
separatorBuilder: (context, index) => const Padding(
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 40.0),
|
|
||||||
child: Divider(color: ColorsManager.dividerColor),
|
|
||||||
),
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
final function = cpsFunctions[index];
|
|
||||||
return RoutineDialogFunctionListTile(
|
|
||||||
iconPath: function.icon,
|
|
||||||
operationName: function.operationName,
|
|
||||||
onTap: () => context.read<FunctionBloc>().add(
|
|
||||||
SelectFunction(
|
|
||||||
functionCode: function.code,
|
|
||||||
operationName: function.operationName,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class CpsDialogValueSelector extends StatelessWidget {
|
|
||||||
const CpsDialogValueSelector({
|
|
||||||
required this.operations,
|
|
||||||
required this.selectedFunction,
|
|
||||||
required this.selectedFunctionData,
|
|
||||||
required this.cpsFunctions,
|
|
||||||
required this.device,
|
|
||||||
required this.operationName,
|
|
||||||
super.key,
|
|
||||||
});
|
|
||||||
|
|
||||||
final List<CpsOperationalValue> operations;
|
|
||||||
final String selectedFunction;
|
|
||||||
final DeviceFunctionData? selectedFunctionData;
|
|
||||||
final List<CpsFunctions> cpsFunctions;
|
|
||||||
final AllDevicesModel? device;
|
|
||||||
final String operationName;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return ListView.builder(
|
|
||||||
itemCount: operations.length,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
final operation = operations[index];
|
|
||||||
final isSelected = selectedFunctionData?.value == operation.value;
|
|
||||||
return RoutineDialogSelectionListTile(
|
|
||||||
iconPath: operation.icon,
|
|
||||||
description: operation.description,
|
|
||||||
isSelected: isSelected,
|
|
||||||
onTap: () {
|
|
||||||
if (!isSelected) {
|
|
||||||
context.read<FunctionBloc>().add(
|
|
||||||
AddFunction(
|
|
||||||
functionData: DeviceFunctionData(
|
|
||||||
entityId: device?.uuid ?? '',
|
|
||||||
functionCode: selectedFunction,
|
|
||||||
operationName: operationName,
|
|
||||||
value: operation.value,
|
|
||||||
condition: selectedFunctionData?.condition,
|
|
||||||
valueDescription: selectedFunctionData?.valueDescription,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -0,0 +1,58 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart';
|
||||||
|
import 'package:syncrow_web/pages/routines/bloc/functions_bloc/functions_bloc_bloc.dart';
|
||||||
|
import 'package:syncrow_web/pages/routines/models/ceiling_presence_sensor_functions.dart';
|
||||||
|
import 'package:syncrow_web/pages/routines/models/device_functions.dart';
|
||||||
|
import 'package:syncrow_web/pages/routines/widgets/routine_dialog_selection_list_tile.dart';
|
||||||
|
|
||||||
|
class CpsDialogValueSelector extends StatelessWidget {
|
||||||
|
const CpsDialogValueSelector({
|
||||||
|
required this.operations,
|
||||||
|
required this.selectedFunction,
|
||||||
|
required this.selectedFunctionData,
|
||||||
|
required this.cpsFunctions,
|
||||||
|
required this.device,
|
||||||
|
required this.operationName,
|
||||||
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
|
final List<CpsOperationalValue> operations;
|
||||||
|
final String selectedFunction;
|
||||||
|
final DeviceFunctionData? selectedFunctionData;
|
||||||
|
final List<CpsFunctions> cpsFunctions;
|
||||||
|
final AllDevicesModel? device;
|
||||||
|
final String operationName;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return ListView.builder(
|
||||||
|
itemCount: operations.length,
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
final operation = operations[index];
|
||||||
|
final isSelected = selectedFunctionData?.value == operation.value;
|
||||||
|
return RoutineDialogSelectionListTile(
|
||||||
|
iconPath: operation.icon,
|
||||||
|
description: operation.description,
|
||||||
|
isSelected: isSelected,
|
||||||
|
onTap: () {
|
||||||
|
if (!isSelected) {
|
||||||
|
context.read<FunctionBloc>().add(
|
||||||
|
AddFunction(
|
||||||
|
functionData: DeviceFunctionData(
|
||||||
|
entityId: device?.uuid ?? '',
|
||||||
|
functionCode: selectedFunction,
|
||||||
|
operationName: operationName,
|
||||||
|
value: operation.value,
|
||||||
|
condition: selectedFunctionData?.condition,
|
||||||
|
valueDescription: selectedFunctionData?.valueDescription,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:syncrow_web/pages/routines/bloc/functions_bloc/functions_bloc_bloc.dart';
|
||||||
|
import 'package:syncrow_web/pages/routines/models/ceiling_presence_sensor_functions.dart';
|
||||||
|
import 'package:syncrow_web/pages/routines/widgets/routine_dialog_function_list_tile.dart';
|
||||||
|
import 'package:syncrow_web/utils/color_manager.dart';
|
||||||
|
|
||||||
|
class CpsFunctionsList extends StatelessWidget {
|
||||||
|
const CpsFunctionsList({required this.cpsFunctions, super.key});
|
||||||
|
|
||||||
|
final List<CpsFunctions> cpsFunctions;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return SizedBox(
|
||||||
|
width: 360,
|
||||||
|
child: ListView.separated(
|
||||||
|
shrinkWrap: false,
|
||||||
|
itemCount: cpsFunctions.length,
|
||||||
|
separatorBuilder: (context, index) => const Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 40.0),
|
||||||
|
child: Divider(color: ColorsManager.dividerColor),
|
||||||
|
),
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
final function = cpsFunctions[index];
|
||||||
|
return RoutineDialogFunctionListTile(
|
||||||
|
iconPath: function.icon,
|
||||||
|
operationName: function.operationName,
|
||||||
|
onTap: () => context.read<FunctionBloc>().add(
|
||||||
|
SelectFunction(
|
||||||
|
functionCode: function.code,
|
||||||
|
operationName: function.operationName,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user