diff --git a/lib/pages/analytics/models/analytics_device.dart b/lib/pages/analytics/models/analytics_device.dart index d2301e4a..88f18ec5 100644 --- a/lib/pages/analytics/models/analytics_device.dart +++ b/lib/pages/analytics/models/analytics_device.dart @@ -2,64 +2,70 @@ class AnalyticsDevice { const AnalyticsDevice({ required this.uuid, required this.name, - required this.createdAt, - required this.updatedAt, - required this.deviceTuyaUuid, - required this.isActive, - required this.productDevice, + this.createdAt, + this.updatedAt, + this.deviceTuyaUuid, + this.isActive, + this.productDevice, + this.spaceUuid, }); final String uuid; final String name; - final DateTime createdAt; - final DateTime updatedAt; - final String deviceTuyaUuid; - final bool isActive; - final ProductDevice productDevice; + final DateTime? createdAt; + final DateTime? updatedAt; + final String? deviceTuyaUuid; + final bool? isActive; + final ProductDevice? productDevice; + final String? spaceUuid; factory AnalyticsDevice.fromJson(Map json) { return AnalyticsDevice( - uuid: json['uuid'] as String? ?? '', - name: json['name'] as String? ?? '', - createdAt: DateTime.parse(json['createdAt'] as String? ?? ''), - updatedAt: DateTime.parse(json['updatedAt'] as String? ?? ''), - deviceTuyaUuid: json['deviceTuyaUuid'] as String? ?? '', - isActive: json['isActive'] as bool? ?? false, - productDevice: ProductDevice.fromJson( - json['productDevice'] as Map? ?? {}, - ), + uuid: json['uuid'] as String, + name: json['name'] as String, + createdAt: json['createdAt'] != null ? DateTime.parse(json['createdAt'] as String) : null, + updatedAt: json['updatedAt'] != null ? DateTime.parse(json['updatedAt'] as String) : null, + deviceTuyaUuid: json['deviceTuyaUuid'] as String?, + isActive: json['isActive'] as bool?, + productDevice: json['productDevice'] != null + ? ProductDevice.fromJson(json['productDevice'] as Map) + : null, + spaceUuid: (json['spaces'] as List?) + ?.map((e) => e['uuid']) + .firstOrNull + ?.toString(), ); } } class ProductDevice { const ProductDevice({ - required this.uuid, - required this.createdAt, - required this.updatedAt, - required this.catName, - required this.prodId, - required this.name, - required this.prodType, + this.uuid, + this.createdAt, + this.updatedAt, + this.catName, + this.prodId, + this.name, + this.prodType, }); - final String uuid; - final DateTime createdAt; - final DateTime updatedAt; - final String catName; - final String prodId; - final String name; - final String prodType; + final String? uuid; + final DateTime? createdAt; + final DateTime? updatedAt; + final String? catName; + final String? prodId; + final String? name; + final String? prodType; factory ProductDevice.fromJson(Map json) { return ProductDevice( - uuid: json['uuid'] as String? ?? '', - createdAt: DateTime.parse(json['createdAt'] as String? ?? ''), - updatedAt: DateTime.parse(json['updatedAt'] as String? ?? ''), - catName: json['catName'] as String? ?? '', - prodId: json['prodId'] as String? ?? '', - name: json['name'] as String? ?? '', - prodType: json['prodType'] as String? ?? '', + uuid: json['uuid'] as String?, + createdAt: json['createdAt'] != null ? DateTime.parse(json['createdAt'] as String) : null, + updatedAt: json['updatedAt'] != null ? DateTime.parse(json['updatedAt'] as String) : null, + catName: json['catName'] as String?, + prodId: json['prodId'] as String?, + name: json['name'] as String?, + prodType: json['prodType'] as String?, ); } } diff --git a/lib/pages/analytics/modules/energy_management/helpers/energy_management_charts_helper.dart b/lib/pages/analytics/modules/energy_management/helpers/energy_management_charts_helper.dart index dadfc70f..567e03ed 100644 --- a/lib/pages/analytics/modules/energy_management/helpers/energy_management_charts_helper.dart +++ b/lib/pages/analytics/modules/energy_management/helpers/energy_management_charts_helper.dart @@ -27,7 +27,7 @@ abstract final class EnergyManagementChartsHelper { child: Text( value.toString(), style: context.textTheme.bodySmall?.copyWith( - color: ColorsManager.greyColor, + color: ColorsManager.lightGreyColor, fontSize: 12, ), ), diff --git a/lib/pages/analytics/modules/energy_management/widgets/analytics_device_dropdown.dart b/lib/pages/analytics/modules/energy_management/widgets/analytics_device_dropdown.dart index 044cf1fb..4158da05 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/analytics_device_dropdown.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/analytics_device_dropdown.dart @@ -49,7 +49,7 @@ class AnalyticsDeviceDropdown extends StatelessWidget { } Widget _buildDevicesDropdown(BuildContext context, AnalyticsDevicesState state) { - final spaceUuid = context.read().state.selectedSpaces.firstOrNull; + final spaceUuid = state.selectedDevice?.spaceUuid; return DropdownButton( value: state.selectedDevice, isDense: true, diff --git a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_devices_list.dart b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_devices_list.dart index 5ef434e1..e6996f53 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_devices_list.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/energy_consumption_per_device_devices_list.dart @@ -41,7 +41,7 @@ class EnergyConsumptionPerDeviceDevicesList extends StatelessWidget { .color; return Tooltip( - message: '${device.name}\n${device.productDevice.uuid}', + message: '${device.name}\n${device.productDevice?.uuid ?? ''}', child: Container( height: MediaQuery.sizeOf(context).height * 0.0365, padding: const EdgeInsetsDirectional.symmetric( diff --git a/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart b/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart index 8a93ccf1..3e362f5d 100644 --- a/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart +++ b/lib/pages/analytics/modules/occupancy/widgets/occupancy_chart.dart @@ -19,7 +19,7 @@ class OccupancyChart extends StatelessWidget { maxY: 1.0, gridData: EnergyManagementChartsHelper.gridData().copyWith( checkToShowHorizontalLine: (value) => true, - horizontalInterval: 0.25, + horizontalInterval: 0.2, ), borderData: EnergyManagementChartsHelper.borderData(), barTouchData: _barTouchData(context), @@ -108,7 +108,7 @@ class OccupancyChart extends StatelessWidget { final leftTitles = titlesData.leftTitles.copyWith( sideTitles: titlesData.leftTitles.sideTitles.copyWith( reservedSize: 70, - interval: 0.25, + interval: 0.2, getTitlesWidget: (value, meta) => Padding( padding: const EdgeInsetsDirectional.only(end: 12), child: FittedBox(