mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-15 09:45:25 +00:00
Created a AirQualityDistributionService
along with its fake implementation.
This commit is contained in:
@ -0,0 +1,8 @@
|
|||||||
|
import 'package:syncrow_web/pages/analytics/models/air_quality_data_model.dart';
|
||||||
|
import 'package:syncrow_web/pages/analytics/params/get_air_quality_distribution_param.dart';
|
||||||
|
|
||||||
|
abstract interface class AirQualityDistributionService {
|
||||||
|
Future<List<AirQualityDataModel>> getAirQualityDistribution(
|
||||||
|
GetAirQualityDistributionParam param,
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
import 'dart:math';
|
||||||
|
|
||||||
|
import 'package:syncrow_web/pages/analytics/models/air_quality_data_model.dart';
|
||||||
|
import 'package:syncrow_web/pages/analytics/params/get_air_quality_distribution_param.dart';
|
||||||
|
import 'package:syncrow_web/pages/analytics/services/air_quality_distribution/air_quality_distribution_service.dart';
|
||||||
|
|
||||||
|
class FakeAirQualityDistributionService implements AirQualityDistributionService {
|
||||||
|
final _random = Random();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<List<AirQualityDataModel>> getAirQualityDistribution(
|
||||||
|
GetAirQualityDistributionParam param,
|
||||||
|
) async {
|
||||||
|
return List.generate(30, (index) {
|
||||||
|
final date = DateTime(2025, 5, 1).add(Duration(days: index));
|
||||||
|
|
||||||
|
final values = _generateRandomPercentages();
|
||||||
|
|
||||||
|
return AirQualityDataModel(
|
||||||
|
date: date,
|
||||||
|
good: values[0],
|
||||||
|
moderate: values[1],
|
||||||
|
poor: values[2],
|
||||||
|
unhealthy: values[3],
|
||||||
|
severe: values[4],
|
||||||
|
hazardous: values[5],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
List<double> _generateRandomPercentages() {
|
||||||
|
final values = List.generate(6, (_) => _random.nextDouble());
|
||||||
|
|
||||||
|
final sum = values.reduce((a, b) => a + b);
|
||||||
|
|
||||||
|
return values.map((value) => (value / sum * 100).roundToDouble()).toList();
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user