fix for numbers running together on analytics chart

pull/795/head
ggurdin 2 years ago
parent 0dbd87dba1
commit 1d3f2a73d4

@ -1,13 +1,13 @@
import 'dart:developer';
import 'package:fl_chart/fl_chart.dart';
import 'package:fluffychat/config/themes.dart';
import 'package:fluffychat/pangea/pages/analytics/bar_chart_placeholder_data.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:fl_chart/fl_chart.dart';
import 'package:intl/intl.dart';
import 'package:fluffychat/pangea/pages/analytics/bar_chart_placeholder_data.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart';
import '../../enum/time_span.dart';
import '../../enum/use_type.dart';
import '../../models/chart_analytics_model.dart';
@ -102,39 +102,73 @@ class MessagesBarChartState extends State<MessagesBarChart> {
);
}
bool showLabelBasedOnTimeSpan(
TimeSpan timeSpan,
TimeSeriesInterval current,
TimeSeriesInterval? last,
int labelIndex,
) {
switch (timeSpan) {
case TimeSpan.day:
return current.end.hour % 3 == 0;
case TimeSpan.month:
if (current.end.month != last?.end.month) {
return true;
}
double width = MediaQuery.of(context).size.width;
if (FluffyThemes.isColumnMode(context)) {
width = width - FluffyThemes.navRailWidth - FluffyThemes.columnWidth;
}
const int numDays = 28;
const int minSpacePerDay = 20;
final int availableSpaces = width ~/ minSpacePerDay;
final int showAtInterval = (numDays / availableSpaces).floor() + 1;
final int lastDayOfCurrentMonth =
DateTime(current.end.year, current.end.month + 1, 0).day;
final bool isNextToMonth = labelIndex == 1 ||
current.end.day == 2 ||
current.end.day == lastDayOfCurrentMonth;
final bool shouldShowNextToMonth = showAtInterval <= 1;
return (current.end.day % showAtInterval == 0) &&
(!isNextToMonth || shouldShowNextToMonth);
case TimeSpan.week:
case TimeSpan.sixmonths:
case TimeSpan.year:
default:
return true;
}
}
String getLabelBasedOnTimeSpan(
TimeSpan timeSpan,
TimeSeriesInterval current,
TimeSeriesInterval? last,
int labelIndex,
) {
if (widget.chartAnalytics == null) {
final bool showLabel = showLabelBasedOnTimeSpan(
timeSpan,
current,
last,
labelIndex,
);
if (widget.chartAnalytics == null || !showLabel) {
return "";
}
if (isInSameGroup(last, current, timeSpan)) {
return "-";
}
switch (widget.chartAnalytics?.timeSpan ?? TimeSpan.month) {
case TimeSpan.day:
return current.end.hour % 3 == 0
? DateFormat(DateFormat.HOUR).format(current.end)
: "";
// return current.end.hour.toString();
return DateFormat(DateFormat.HOUR).format(current.end);
case TimeSpan.week:
return DateFormat(DateFormat.ABBR_WEEKDAY).format(current.end);
case TimeSpan.month:
// return current.end.month != last?.end.month
// ? DateFormat(DateFormat.ABBR_MONTH_DAY).format(current.end)
// : current.end.day % 5 == 0 &&
// labelIndex != 1 &&
// current.end.day != 30
// ? DateFormat(DateFormat.DAY).format(current.end)
// : "'";
return current.end.month != last?.end.month
? DateFormat(DateFormat.ABBR_MONTH).format(current.end)
: DateFormat(DateFormat.DAY).format(current.end);
// return current.end.day.toString();
// text = DateFormat('DAY').format(timeSeriesIntervalStart);
case TimeSpan.sixmonths:
case TimeSpan.year:
return DateFormat(DateFormat.ABBR_STANDALONE_MONTH).format(current.end);

Loading…
Cancel
Save