convertCowDataToGraphData method Null safety
- {required List<
CowData> ? cowData, - DateTime? targetDateTime,
- int continuedDays = 0,
- required GraphViewType graphViewType,
- ActionType? actionType}
소데이터를 그래프 데이터로 변환합니다.
Implementation
List<BarDataDay> convertCowDataToGraphData({
required List<CowData>? cowData,
DateTime? targetDateTime,
int continuedDays = 0,
required GraphViewType graphViewType,
ActionType? actionType,
}) {
if (targetDateTime != null) targetDateTime = DateTime(targetDateTime.year, targetDateTime.month, targetDateTime.day);
List<CowDataDay> cowDataDays = cowData != null && cowData.length > 0 ? cowData.first.data : [];
List<BarDataDay> barDatasDay = [];
for (CowDataDay cowDataDay in cowDataDays) {
DateTime date = cowDataDay.date!;
String xLabelDate = DateFormat("MM/dd").format(date);
List<BarDataHour?> barDatasHour = List.filled(graphViewType.hourCntInDay, null);
bool isHighlighted = false;
for (CowDataHour cowDataHour in cowDataDay.cowDataHour) {
double value = 0, realValue = 0, valueBottom = 0, realValueBottom = 0;
DateTime dateTime = cowDataHour.datetime!;
switch (actionType) {
case ActionType.lactation:
value = cowDataHour.lactation.value;
realValue = cowDataHour.lactation.value;
isHighlighted = cowDataHour.lactation.isHighlighted == true;
break;
case ActionType.ruminant:
value = cowDataHour.ruminant.value;
realValue = cowDataHour.ruminant.value;
isHighlighted = cowDataHour.ruminant.isHighlighted == true;
break;
case ActionType.eating:
value = cowDataHour.eating.value;
realValue = cowDataHour.eating.value;
isHighlighted = cowDataHour.eating.isHighlighted == true;
break;
case ActionType.drinking:
value = cowDataHour.drinking.value;
realValue = cowDataHour.drinking.value;
isHighlighted = cowDataHour.drinking.isHighlighted == true;
break;
case ActionType.heading:
value = cowDataHour.heading.value.toDouble();
realValue = cowDataHour.heading.value.toDouble();
isHighlighted = cowDataHour.heading.isHighlighted == true;
break;
case ActionType.sittingStanding:
case ActionType.standing:
case ActionType.sitting:
value = cowDataHour.standing.value;
realValue = cowDataHour.standing.value;
valueBottom = cowDataHour.sitting.value;
realValueBottom = cowDataHour.sitting.value;
isHighlighted = cowDataHour.standing.isHighlighted == true || cowDataHour.sitting.isHighlighted == true;
break;
case ActionType.cough:
value = cowDataHour.cough.value.toDouble();
realValue = cowDataHour.cough.value.toDouble();
isHighlighted = cowDataHour.cough.isHighlighted == true;
break;
case ActionType.activity:
value = cowDataHour.activity.value;
realValue = cowDataHour.activity.value;
isHighlighted = cowDataHour.activity.isHighlighted == true;
break;
case ActionType.impulse:
case ActionType.irregularSittingStanding:
case ActionType.standingFail:
case ActionType.doridori:
break;
}
String suffix, valueLabel, valueBottomLabel;
if (actionType == ActionType.heading || actionType == ActionType.cough) {
suffix = "회";
} else if (actionType == ActionType.activity) {
suffix = "";
realValue = realValue * NumericConstants.activityScale;
value = value * NumericConstants.activityScale;
} else {
suffix = "분";
realValue = (realValue / 60).roundToDouble();
value = (value / 60).roundToDouble();
realValueBottom = (realValueBottom / 60).roundToDouble();
valueBottom = (valueBottom / 60).roundToDouble();
}
valueLabel = "${realValue.roundToDouble().toInt()}$suffix";
valueBottomLabel = "${realValueBottom.roundToDouble().toInt()}$suffix";
barDatasHour[cowDataHour.hour] = BarDataHour(
value: value,
valueLabel: valueLabel,
valueBottomLabel: valueBottomLabel,
realValue: realValue,
label: "${graphViewType.hourUnit == GraphViewType.W1.hourUnit ? "$xLabelDate" : "${cowDataHour.hour}시"}",
dateTime: dateTime,
valueBottom: valueBottom,
realValueBottom: realValueBottom,
isHighlighted: isHighlighted,
);
}
BarDataDay barDataDay = BarDataDay(
barDataHour: barDatasHour,
dateTime: date,
sunRiseDateTime: DateTime.now(),
sunSetDateTime: DateTime.now(),
label: DateFormat(StringConstants.timeYMDDotFormat).format(date),
);
barDatasDay.add(barDataDay);
}
return barDatasDay;
}