formatted all files.

This commit is contained in:
Faris Armoush
2025-06-12 15:33:32 +03:00
parent 29959f567e
commit 04250ebc98
474 changed files with 5425 additions and 4338 deletions

View File

@ -215,33 +215,46 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
SmartPowerFetchDeviceEvent event, Emitter<SmartPowerState> emit) async {
emit(SmartPowerLoading());
try {
var status =
final status =
await DevicesManagementApi().getPowerClampInfo(event.deviceId);
deviceStatus = PowerClampModel.fromJson(status as Map<String, Object?>? ??{});
deviceStatus =
PowerClampModel.fromJson(status as Map<String, Object?>? ?? {});
final phaseADataPoints = deviceStatus.status.phaseA.dataPoints;
final phaseBDataPoints = deviceStatus.status.phaseB.dataPoints;
final phaseCDataPoints = deviceStatus.status.phaseC.dataPoints;
phaseData = [
{
'name': 'Phase A',
'voltage': '${(phaseADataPoints.elementAtOrNull(0)?.value as num? ?? 0) / 10} V',
'current': '${(phaseADataPoints.elementAtOrNull(1)?.value as num? ?? 0) / 10} A',
'activePower': '${phaseADataPoints.elementAtOrNull(2)?.value??'N/A'} W',
'powerFactor': '${phaseADataPoints.elementAtOrNull(3)?.value??'N/A'}',
'voltage':
'${(phaseADataPoints.elementAtOrNull(0)?.value as num? ?? 0) / 10} V',
'current':
'${(phaseADataPoints.elementAtOrNull(1)?.value as num? ?? 0) / 10} A',
'activePower':
'${phaseADataPoints.elementAtOrNull(2)?.value ?? 'N/A'} W',
'powerFactor':
'${phaseADataPoints.elementAtOrNull(3)?.value ?? 'N/A'}',
},
{
'name': 'Phase B',
'voltage': '${(phaseBDataPoints .elementAtOrNull(0)?.value as num? ?? 0) / 10} V',
'current': '${(phaseBDataPoints .elementAtOrNull(1)?.value as num? ?? 0) / 10} A',
'activePower': '${phaseBDataPoints.elementAtOrNull(2)?.value??'N/A'} W',
'powerFactor': '${phaseBDataPoints.elementAtOrNull(3)?.value??'N/A'}',
'voltage':
'${(phaseBDataPoints.elementAtOrNull(0)?.value as num? ?? 0) / 10} V',
'current':
'${(phaseBDataPoints.elementAtOrNull(1)?.value as num? ?? 0) / 10} A',
'activePower':
'${phaseBDataPoints.elementAtOrNull(2)?.value ?? 'N/A'} W',
'powerFactor':
'${phaseBDataPoints.elementAtOrNull(3)?.value ?? 'N/A'}',
},
{
'name': 'Phase C',
'voltage': '${(phaseCDataPoints.elementAtOrNull(0)?.value as num? ?? 0) / 10} V',
'current': '${(phaseCDataPoints.elementAtOrNull(1)?.value as num? ?? 0) / 10} A',
'activePower': '${phaseCDataPoints.elementAtOrNull(2)?.value ?? 'N/A'} W',
'powerFactor': '${phaseCDataPoints.elementAtOrNull(3)?.value ?? 'N/A'}',
'voltage':
'${(phaseCDataPoints.elementAtOrNull(0)?.value as num? ?? 0) / 10} V',
'current':
'${(phaseCDataPoints.elementAtOrNull(1)?.value as num? ?? 0) / 10} A',
'activePower':
'${phaseCDataPoints.elementAtOrNull(2)?.value ?? 'N/A'} W',
'powerFactor':
'${phaseCDataPoints.elementAtOrNull(3)?.value ?? 'N/A'}',
},
];
emit(GetDeviceStatus());
@ -305,8 +318,7 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
try {
final response =
await DevicesManagementApi().getPowerStatus(event.devicesIds);
PowerClampBatchModel deviceStatus =
PowerClampBatchModel.fromJson(response);
final deviceStatus = PowerClampBatchModel.fromJson(response);
emit(SmartPowerLoadBatchControll(deviceStatus));
} catch (e) {
@ -417,15 +429,15 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
}
Future<DateTime?> selectMonthAndYear(BuildContext context) async {
int selectedYear = DateTime.now().year;
int selectedMonth = DateTime.now().month;
var selectedYear = DateTime.now().year;
var selectedMonth = DateTime.now().month;
FixedExtentScrollController yearController =
final yearController =
FixedExtentScrollController(initialItem: selectedYear - 1905);
FixedExtentScrollController monthController =
final monthController =
FixedExtentScrollController(initialItem: selectedMonth - 1);
return await showDialog<DateTime>(
return showDialog<DateTime>(
context: context,
builder: (BuildContext context) {
return Column(
@ -537,11 +549,11 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
}
Future<DateTime?> selectYear(BuildContext context) async {
int selectedYear = DateTime.now().year;
FixedExtentScrollController yearController =
var selectedYear = DateTime.now().year;
final yearController =
FixedExtentScrollController(initialItem: selectedYear - 1905);
return await showDialog<DateTime>(
return showDialog<DateTime>(
context: context,
builder: (BuildContext context) {
return Column(
@ -622,9 +634,9 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
Future<DateTime?> dayMonthYearPicker({
required BuildContext context,
}) async {
DateTime selectedDate = DateTime.now();
var selectedDate = DateTime.now();
return await showDialog<DateTime>(
return showDialog<DateTime>(
context: context,
builder: (BuildContext context) {
return Column(
@ -686,7 +698,7 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
String formattedDate = DateFormat('yyyy/MM/dd').format(DateTime.now());
void checkDayMonthYearSelected(
Future<void> checkDayMonthYearSelected(
SelectDateEvent event, Emitter<SmartPowerState> emit) async {
Future<DateTime?> Function(BuildContext context)? dateSelector;
String dateFormat;
@ -698,15 +710,11 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
dateFormat = 'yyyy/MM/dd';
break;
case 1:
dateSelector = (context) {
return selectMonthAndYear(context);
};
dateSelector = selectMonthAndYear;
dateFormat = 'yyyy-MM';
break;
case 2:
dateSelector = (context) {
return selectYear(context);
};
dateSelector = selectYear;
dateFormat = 'yyyy';
break;
default:
@ -743,7 +751,7 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
.toList();
} else if (event.viewType == 'Month') {
formattedDate =
"${event.selectedDate.year.toString()}-${getMonthShortName(event.selectedDate.month)}";
'${event.selectedDate.year}-${getMonthShortName(event.selectedDate.month)}';
filteredRecords = record
.where((record) =>
@ -752,7 +760,7 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
.toList();
} else if (event.viewType == 'Day') {
formattedDate =
"${event.selectedDate.year.toString()}-${getMonthShortName(event.selectedDate.month)}-${event.selectedDate.day}";
'${event.selectedDate.year}-${getMonthShortName(event.selectedDate.month)}-${event.selectedDate.day}';
filteredRecords = record
.where((record) =>
@ -784,11 +792,11 @@ class SmartPowerBloc extends Bloc<SmartPowerEvent, SmartPowerState> {
String endChartDate = '';
void selectDateRange() async {
DateTime startDate = dateTime!;
DateTime endDate = DateTime(startDate.year, startDate.month + 1, 1)
Future<void> selectDateRange() async {
final startDate = dateTime!;
final endDate = DateTime(startDate.year, startDate.month + 1, 1)
.subtract(const Duration(days: 1));
String formattedEndDate = DateFormat('dd/MM/yyyy').format(endDate);
final formattedEndDate = DateFormat('dd/MM/yyyy').format(endDate);
endChartDate = ' - $formattedEndDate';
}
}

View File

@ -95,16 +95,18 @@ class FilterRecordsByDateEvent extends SmartPowerEvent {
class FetchPowerClampBatchStatusEvent extends SmartPowerEvent {
final List<String> deviceIds;
FetchPowerClampBatchStatusEvent(this.deviceIds);
FetchPowerClampBatchStatusEvent(this.deviceIds);
@override
List<Object> get props => [deviceIds];
}class PowerBatchControlEvent extends SmartPowerEvent {
}
class PowerBatchControlEvent extends SmartPowerEvent {
final List<String> deviceIds;
final String code;
final dynamic value;
PowerBatchControlEvent({
PowerBatchControlEvent({
required this.deviceIds,
required this.code,
required this.value,
@ -112,4 +114,4 @@ class FetchPowerClampBatchStatusEvent extends SmartPowerEvent {
@override
List<Object> get props => [deviceIds, code, value];
}
}

View File

@ -1,4 +1,3 @@
class EventDevice {
final String? code;
final DateTime? eventTime;
@ -12,7 +11,7 @@ class EventDevice {
EventDevice.fromJson(Map<String, dynamic> json)
: code = json['code'] as String?,
eventTime = json['eventTime'] ,
eventTime = json['eventTime'],
value = json['value'] as String?;
Map<String, dynamic> toJson() => {

View File

@ -19,10 +19,10 @@ class PowerClampBatchModel extends PowerClampModel1 {
});
factory PowerClampBatchModel.fromJson(Map<String, dynamic> json) {
String productUuid = json['productUuid'] ?? '';
String productType = json['productType'] ?? '';
final String productUuid = json['productUuid'] ?? '';
final String productType = json['productType'] ?? '';
List<Status> statusList = [];
var statusList = <Status>[];
if (json['status'] != null && json['status'] is List) {
statusList =
(json['status'] as List).map((e) => Status.fromJson(e)).toList();

View File

@ -16,7 +16,8 @@ class PowerClampModel {
return PowerClampModel(
productUuid: json['productUuid'] as String? ?? '',
productType: json['productType'] as String? ?? '',
status: PowerStatus.fromJson(json['status'] as Map<String, dynamic>? ?? {}),
status:
PowerStatus.fromJson(json['status'] as Map<String, dynamic>? ?? {}),
);
}

View File

@ -5,7 +5,8 @@ import 'package:syncrow_web/utils/constants/assets.dart';
class PhaseWidget extends StatefulWidget {
final List<Map<String, dynamic>> phaseData;
PhaseWidget({
const PhaseWidget({
super.key,
required this.phaseData,
});
@override
@ -19,7 +20,7 @@ class _PhaseWidgetState extends State<PhaseWidget> {
Widget build(BuildContext context) {
return Column(
children: [
SizedBox(height: 10),
const SizedBox(height: 10),
Row(
children: List.generate(widget.phaseData.length, (index) {
return InkWell(
@ -43,27 +44,28 @@ class _PhaseWidgetState extends State<PhaseWidget> {
);
}),
),
SizedBox(height: 10),
_selectedPhaseIndex == 0
? phase(
totalActive: widget.phaseData[0]['activePower'] ?? '0',
totalCurrent: widget.phaseData[0]['current'] ?? '0',
totalFactor: widget.phaseData[0]['powerFactor'] ?? '0',
totalVoltage: widget.phaseData[0]['voltage'] ?? '0',
)
: _selectedPhaseIndex == 1
? phase(
totalActive: widget.phaseData[1]['activePower'] ?? '0',
totalCurrent: widget.phaseData[1]['current'] ?? '0',
totalFactor: widget.phaseData[1]['powerFactor'] ?? '0',
totalVoltage: widget.phaseData[1]['voltage'] ?? '0',
)
: phase(
totalActive: widget.phaseData[2]['activePower'] ?? '0',
totalCurrent: widget.phaseData[2]['current'] ?? '0',
totalFactor: widget.phaseData[2]['powerFactor'] ?? '0',
totalVoltage: widget.phaseData[2]['voltage'] ?? '0',
),
const SizedBox(height: 10),
if (_selectedPhaseIndex == 0)
phase(
totalActive: widget.phaseData[0]['activePower'] ?? '0',
totalCurrent: widget.phaseData[0]['current'] ?? '0',
totalFactor: widget.phaseData[0]['powerFactor'] ?? '0',
totalVoltage: widget.phaseData[0]['voltage'] ?? '0',
)
else
_selectedPhaseIndex == 1
? phase(
totalActive: widget.phaseData[1]['activePower'] ?? '0',
totalCurrent: widget.phaseData[1]['current'] ?? '0',
totalFactor: widget.phaseData[1]['powerFactor'] ?? '0',
totalVoltage: widget.phaseData[1]['voltage'] ?? '0',
)
: phase(
totalActive: widget.phaseData[2]['activePower'] ?? '0',
totalCurrent: widget.phaseData[2]['current'] ?? '0',
totalFactor: widget.phaseData[2]['powerFactor'] ?? '0',
totalVoltage: widget.phaseData[2]['voltage'] ?? '0',
),
],
);
}

View File

@ -35,7 +35,7 @@ class _EnergyConsumptionPageState extends State<EnergyConsumptionPage> {
@override
Widget build(BuildContext context) {
return Container(
return ColoredBox(
color: ColorsManager.whiteColors,
child: Column(
children: [
@ -146,7 +146,7 @@ class _EnergyConsumptionPageState extends State<EnergyConsumptionPage> {
showTitles: false,
reservedSize: 70,
getTitlesWidget: (value, meta) {
int index = value.toInt();
final index = value.toInt();
if (index >= 0 && index < _chartData.length) {
return Padding(
padding: const EdgeInsets.all(8.0),
@ -169,14 +169,14 @@ class _EnergyConsumptionPageState extends State<EnergyConsumptionPage> {
verticalInterval: 1,
getDrawingVerticalLine: (value) {
return FlLine(
color: Colors.grey.withOpacity(0.2),
color: Colors.grey.withValues(alpha: 0.2),
dashArray: [8, 8],
strokeWidth: 1,
);
},
getDrawingHorizontalLine: (value) {
return FlLine(
color: Colors.grey.withOpacity(0.2),
color: Colors.grey.withValues(alpha: 0.2),
dashArray: [5, 5],
strokeWidth: 1,
);
@ -192,19 +192,21 @@ class _EnergyConsumptionPageState extends State<EnergyConsumptionPage> {
spots: _chartData
.asMap()
.entries
.map((entry) => FlSpot(
entry.key.toDouble(), entry.value.consumption))
.map((entry) => FlSpot(entry.key.toDouble(),
entry.value.consumption))
.toList(),
isCurved: true,
color: ColorsManager.primaryColor.withOpacity(0.6),
color:
ColorsManager.primaryColor.withValues(alpha: 0.6),
show: true,
shadow: const Shadow(color: Colors.black12),
belowBarData: BarAreaData(
show: true,
gradient: LinearGradient(
colors: [
ColorsManager.primaryColor.withOpacity(0.5),
Colors.blue.withOpacity(0.1),
ColorsManager.primaryColor
.withValues(alpha: 0.5),
Colors.blue.withValues(alpha: 0.1),
],
begin: Alignment.center,
end: Alignment.bottomCenter,
@ -220,7 +222,7 @@ class _EnergyConsumptionPageState extends State<EnergyConsumptionPage> {
borderData: FlBorderData(
show: false,
border: Border.all(
color: const Color(0xff023DFE).withOpacity(0.7),
color: const Color(0xff023DFE).withValues(alpha: 0.7),
width: 10,
),
),

View File

@ -9,16 +9,17 @@ import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class PowerClampBatchControlView extends StatelessWidget with HelperResponsiveLayout {
class PowerClampBatchControlView extends StatelessWidget
with HelperResponsiveLayout {
final List<String> deviceIds;
const PowerClampBatchControlView({Key? key, required this.deviceIds}) : super(key: key);
const PowerClampBatchControlView({super.key, required this.deviceIds});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) =>
SmartPowerBloc(deviceId: deviceIds.first)..add(SmartPowerFetchBatchEvent(deviceIds)),
create: (context) => SmartPowerBloc(deviceId: deviceIds.first)
..add(SmartPowerFetchBatchEvent(deviceIds)),
child: BlocBuilder<SmartPowerBloc, SmartPowerState>(
builder: (context, state) {
if (state is SmartPowerLoading) {
@ -35,7 +36,8 @@ class PowerClampBatchControlView extends StatelessWidget with HelperResponsiveLa
);
}
Widget _buildStatusControls(BuildContext context, PowerClampBatchModel status) {
Widget _buildStatusControls(
BuildContext context, PowerClampBatchModel status) {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [

View File

@ -9,12 +9,12 @@ class PowerClampInfoCard extends StatelessWidget {
final String unit;
const PowerClampInfoCard({
Key? key,
super.key,
required this.iconPath,
required this.title,
required this.value,
required this.unit,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {

View File

@ -12,7 +12,8 @@ import 'package:syncrow_web/utils/constants/assets.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
//Smart Power Clamp
class SmartPowerDeviceControl extends StatelessWidget with HelperResponsiveLayout {
class SmartPowerDeviceControl extends StatelessWidget
with HelperResponsiveLayout {
final String deviceId;
const SmartPowerDeviceControl({super.key, required this.deviceId});
@ -59,7 +60,7 @@ class SmartPowerDeviceControl extends StatelessWidget with HelperResponsiveLayou
required SmartPowerBloc blocProvider,
required int currentPage,
}) {
PageController pageController = PageController(initialPage: currentPage);
final pageController = PageController(initialPage: currentPage);
return Container(
padding: const EdgeInsets.symmetric(horizontal: 50),
child: DeviceControlsContainer(
@ -195,8 +196,8 @@ class SmartPowerDeviceControl extends StatelessWidget with HelperResponsiveLayou
blocProvider.add(SelectDateEvent(context: context));
blocProvider.add(FilterRecordsByDateEvent(
selectedDate: blocProvider.dateTime!,
viewType:
blocProvider.views[blocProvider.currentIndex]));
viewType: blocProvider
.views[blocProvider.currentIndex]));
},
widget: blocProvider.dateSwitcher(),
chartData: blocProvider.energyDataList.isNotEmpty