Skip to content
Snippets Groups Projects
Commit 88f5ae56 authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Fix display while fetching data

parent 07a99c05
No related branches found
No related tags found
1 merge request!38Resolve "Display current data/chart while fetching new data"
Pipeline #4666 passed
This commit is part of merge request !38. Comments created here will be created in the context of that merge request.
...@@ -8,9 +8,8 @@ import 'package:scrobbles/ui/widgets/abstracts/custom_bar_chart.dart'; ...@@ -8,9 +8,8 @@ import 'package:scrobbles/ui/widgets/abstracts/custom_bar_chart.dart';
class ChartCountsByDay extends CustomBarChart { class ChartCountsByDay extends CustomBarChart {
final CountsByDayData chartData; final CountsByDayData chartData;
final bool isLoading;
ChartCountsByDay({super.key, required this.chartData, required this.isLoading}); const ChartCountsByDay({super.key, required this.chartData});
final double verticalTicksInterval = 5; final double verticalTicksInterval = 5;
final String verticalAxisTitleSuffix = '%'; final String verticalAxisTitleSuffix = '%';
...@@ -25,19 +24,17 @@ class ChartCountsByDay extends CustomBarChart { ...@@ -25,19 +24,17 @@ class ChartCountsByDay extends CustomBarChart {
return Container( return Container(
height: this.chartHeight, height: this.chartHeight,
child: this.isLoading child: LayoutBuilder(
? this.placeholder builder: (context, constraints) {
: LayoutBuilder( final double maxWidth = constraints.maxWidth;
builder: (context, constraints) { final int barsCount = this.chartData.data.keys.length;
final double maxWidth = constraints.maxWidth;
final int barsCount = this.chartData.data.keys.length; return getBarChart(
barWidth: this.getBarWidth(maxWidth, barsCount),
return getBarChart( backgroundColor: Theme.of(context).colorScheme.onSurface,
barWidth: this.getBarWidth(maxWidth, barsCount), );
backgroundColor: Theme.of(context).colorScheme.onSurface, },
); ),
},
),
); );
} }
......
...@@ -8,9 +8,8 @@ import 'package:scrobbles/utils/color_extensions.dart'; ...@@ -8,9 +8,8 @@ import 'package:scrobbles/utils/color_extensions.dart';
class ChartCountsByHour extends CustomBarChart { class ChartCountsByHour extends CustomBarChart {
final CountsByHourData chartData; final CountsByHourData chartData;
final bool isLoading;
ChartCountsByHour({super.key, required this.chartData, required this.isLoading}); const ChartCountsByHour({super.key, required this.chartData});
final double verticalTicksInterval = 5; final double verticalTicksInterval = 5;
final String verticalAxisTitleSuffix = '%'; final String verticalAxisTitleSuffix = '%';
...@@ -25,19 +24,17 @@ class ChartCountsByHour extends CustomBarChart { ...@@ -25,19 +24,17 @@ class ChartCountsByHour extends CustomBarChart {
return Container( return Container(
height: this.chartHeight, height: this.chartHeight,
child: this.isLoading child: LayoutBuilder(
? this.placeholder builder: (context, constraints) {
: LayoutBuilder( final double maxWidth = constraints.maxWidth;
builder: (context, constraints) { final int barsCount = this.chartData.data.keys.length;
final double maxWidth = constraints.maxWidth;
final int barsCount = this.chartData.data.keys.length; return getBarChart(
barWidth: this.getBarWidth(maxWidth, barsCount),
return getBarChart( backgroundColor: Theme.of(context).colorScheme.onSurface,
barWidth: this.getBarWidth(maxWidth, barsCount), );
backgroundColor: Theme.of(context).colorScheme.onSurface, },
); ),
},
),
); );
} }
......
...@@ -8,9 +8,8 @@ import 'package:scrobbles/utils/color_extensions.dart'; ...@@ -8,9 +8,8 @@ import 'package:scrobbles/utils/color_extensions.dart';
class ChartDiscoveriesArtists extends CustomBarChart { class ChartDiscoveriesArtists extends CustomBarChart {
final DiscoveriesData chartData; final DiscoveriesData chartData;
final bool isLoading;
ChartDiscoveriesArtists({super.key, required this.chartData, required this.isLoading}); const ChartDiscoveriesArtists({super.key, required this.chartData});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
...@@ -22,19 +21,17 @@ class ChartDiscoveriesArtists extends CustomBarChart { ...@@ -22,19 +21,17 @@ class ChartDiscoveriesArtists extends CustomBarChart {
return Container( return Container(
height: this.chartHeight, height: this.chartHeight,
child: this.isLoading child: LayoutBuilder(
? this.placeholder builder: (context, constraints) {
: LayoutBuilder( final double maxWidth = constraints.maxWidth;
builder: (context, constraints) { final int barsCount = this.chartData.data.keys.length;
final double maxWidth = constraints.maxWidth;
final int barsCount = this.chartData.data.keys.length;
return getBarChart( return getBarChart(
barWidth: this.getBarWidth(maxWidth, barsCount), barWidth: this.getBarWidth(maxWidth, barsCount),
backgroundColor: Theme.of(context).colorScheme.onSurface, backgroundColor: Theme.of(context).colorScheme.onSurface,
); );
}, },
), ),
); );
} }
......
...@@ -8,9 +8,8 @@ import 'package:scrobbles/utils/color_extensions.dart'; ...@@ -8,9 +8,8 @@ import 'package:scrobbles/utils/color_extensions.dart';
class ChartDiscoveriesTracks extends CustomBarChart { class ChartDiscoveriesTracks extends CustomBarChart {
final DiscoveriesData chartData; final DiscoveriesData chartData;
final bool isLoading;
ChartDiscoveriesTracks({super.key, required this.chartData, required this.isLoading}); const ChartDiscoveriesTracks({super.key, required this.chartData});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
...@@ -22,19 +21,17 @@ class ChartDiscoveriesTracks extends CustomBarChart { ...@@ -22,19 +21,17 @@ class ChartDiscoveriesTracks extends CustomBarChart {
return Container( return Container(
height: this.chartHeight, height: this.chartHeight,
child: this.isLoading child: LayoutBuilder(
? this.placeholder builder: (context, constraints) {
: LayoutBuilder( final double maxWidth = constraints.maxWidth;
builder: (context, constraints) { final int barsCount = this.chartData.data.keys.length;
final double maxWidth = constraints.maxWidth;
final int barsCount = this.chartData.data.keys.length;
return getBarChart( return getBarChart(
barWidth: this.getBarWidth(maxWidth, barsCount), barWidth: this.getBarWidth(maxWidth, barsCount),
backgroundColor: Theme.of(context).colorScheme.onSurface, backgroundColor: Theme.of(context).colorScheme.onSurface,
); );
}, },
), ),
); );
} }
......
...@@ -7,9 +7,8 @@ import 'package:scrobbles/ui/widgets/abstracts/custom_bar_chart.dart'; ...@@ -7,9 +7,8 @@ import 'package:scrobbles/ui/widgets/abstracts/custom_bar_chart.dart';
class ChartTimelineCounts extends CustomBarChart { class ChartTimelineCounts extends CustomBarChart {
final TimelineData chartData; final TimelineData chartData;
final bool isLoading;
ChartTimelineCounts({super.key, required this.chartData, required this.isLoading}); const ChartTimelineCounts({super.key, required this.chartData});
final double verticalTicksInterval = 50; final double verticalTicksInterval = 50;
...@@ -23,19 +22,17 @@ class ChartTimelineCounts extends CustomBarChart { ...@@ -23,19 +22,17 @@ class ChartTimelineCounts extends CustomBarChart {
return Container( return Container(
height: this.chartHeight, height: this.chartHeight,
child: this.isLoading child: LayoutBuilder(
? this.placeholder builder: (context, constraints) {
: LayoutBuilder( final double maxWidth = constraints.maxWidth;
builder: (context, constraints) { final int barsCount = this.chartData.data.keys.length;
final double maxWidth = constraints.maxWidth;
final int barsCount = this.chartData.data.keys.length;
return getBarChart( return getBarChart(
barWidth: this.getBarWidth(maxWidth, barsCount), barWidth: this.getBarWidth(maxWidth, barsCount),
backgroundColor: Theme.of(context).colorScheme.onSurface, backgroundColor: Theme.of(context).colorScheme.onSurface,
); );
}, },
), ),
); );
} }
......
...@@ -8,9 +8,8 @@ import 'package:scrobbles/utils/color_extensions.dart'; ...@@ -8,9 +8,8 @@ import 'package:scrobbles/utils/color_extensions.dart';
class ChartTimelineEclecticism extends CustomLineChart { class ChartTimelineEclecticism extends CustomLineChart {
final TimelineData chartData; final TimelineData chartData;
final bool isLoading;
ChartTimelineEclecticism({super.key, required this.chartData, required this.isLoading}); const ChartTimelineEclecticism({super.key, required this.chartData});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
...@@ -24,22 +23,20 @@ class ChartTimelineEclecticism extends CustomLineChart { ...@@ -24,22 +23,20 @@ class ChartTimelineEclecticism extends CustomLineChart {
return Container( return Container(
height: this.chartHeight, height: this.chartHeight,
child: this.isLoading child: LineChart(
? this.placeholder LineChartData(
: LineChart( lineBarsData: getDataEclecticism(),
LineChartData( borderData: getBorderData(),
lineBarsData: getDataEclecticism(), gridData: getGridData(),
borderData: getBorderData(), titlesData: getTitlesData(),
gridData: getGridData(), lineTouchData: const LineTouchData(enabled: false),
titlesData: getTitlesData(), minX: horizontalScale['min'],
lineTouchData: const LineTouchData(enabled: false), maxX: horizontalScale['max'],
minX: horizontalScale['min'], maxY: 100,
maxX: horizontalScale['max'], minY: 0,
maxY: 100, ),
minY: 0, duration: const Duration(milliseconds: 250),
), ),
duration: const Duration(milliseconds: 250),
),
); );
} }
......
...@@ -7,38 +7,33 @@ import 'package:scrobbles/utils/color_extensions.dart'; ...@@ -7,38 +7,33 @@ import 'package:scrobbles/utils/color_extensions.dart';
class ChartTopArtists extends StatelessWidget { class ChartTopArtists extends StatelessWidget {
final TopArtistsData chartData; final TopArtistsData chartData;
final bool isLoading;
ChartTopArtists({super.key, required this.chartData, required this.isLoading}); const ChartTopArtists({super.key, required this.chartData});
final Widget placeholder = Text('⏳');
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AspectRatio( return AspectRatio(
aspectRatio: 2.1, aspectRatio: 2.1,
child: this.isLoading child: Row(
? this.placeholder children: <Widget>[
: Row( Expanded(
children: <Widget>[ child: AspectRatio(
Expanded( aspectRatio: 1,
child: AspectRatio( child: PieChart(
aspectRatio: 1, PieChartData(
child: PieChart( sections: getPieChartData(),
PieChartData( sectionsSpace: 2,
sections: getPieChartData(), centerSpaceRadius: 40,
sectionsSpace: 2, startDegreeOffset: -45,
centerSpaceRadius: 40, pieTouchData: PieTouchData(enabled: false),
startDegreeOffset: -45, borderData: FlBorderData(show: false),
pieTouchData: PieTouchData(enabled: false),
borderData: FlBorderData(show: false),
),
),
),
), ),
buildLegendWidget(), ),
],
), ),
),
buildLegendWidget(),
],
),
); );
} }
......
...@@ -5,10 +5,8 @@ import 'package:scrobbles/models/statistics_global.dart'; ...@@ -5,10 +5,8 @@ import 'package:scrobbles/models/statistics_global.dart';
class ContentStatisticsGlobal extends StatelessWidget { class ContentStatisticsGlobal extends StatelessWidget {
final StatisticsGlobalData statistics; final StatisticsGlobalData statistics;
final bool isLoading;
const ContentStatisticsGlobal( const ContentStatisticsGlobal({super.key, required this.statistics});
{super.key, required this.statistics, required this.isLoading});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
...@@ -24,11 +22,9 @@ class ContentStatisticsGlobal extends StatelessWidget { ...@@ -24,11 +22,9 @@ class ContentStatisticsGlobal extends StatelessWidget {
style: textTheme.bodyMedium, style: textTheme.bodyMedium,
).tr( ).tr(
namedArgs: { namedArgs: {
'count': this.isLoading 'count': this.statistics.totalCount != null
? placeholder ? this.statistics.totalCount.toString()
: (this.statistics.totalCount != null : placeholder,
? this.statistics.totalCount.toString()
: ''),
}, },
), ),
Text( Text(
...@@ -36,11 +32,9 @@ class ContentStatisticsGlobal extends StatelessWidget { ...@@ -36,11 +32,9 @@ class ContentStatisticsGlobal extends StatelessWidget {
style: textTheme.bodyMedium, style: textTheme.bodyMedium,
).tr( ).tr(
namedArgs: { namedArgs: {
'datetime': this.isLoading 'datetime': this.statistics.lastScrobble != null
? placeholder ? DateFormat().format(this.statistics.lastScrobble ?? DateTime.now())
: (this.statistics.lastScrobble != null : placeholder,
? DateFormat().format(this.statistics.lastScrobble ?? DateTime.now())
: ''),
}, },
), ),
], ],
......
...@@ -5,15 +5,12 @@ import 'package:scrobbles/models/statistics_recent.dart'; ...@@ -5,15 +5,12 @@ import 'package:scrobbles/models/statistics_recent.dart';
class ContentStatisticsRecent extends StatelessWidget { class ContentStatisticsRecent extends StatelessWidget {
final StatisticsRecentData statistics; final StatisticsRecentData statistics;
final bool isLoading;
const ContentStatisticsRecent( const ContentStatisticsRecent({super.key, required this.statistics});
{super.key, required this.statistics, required this.isLoading});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final TextTheme textTheme = Theme.of(context).primaryTextTheme; final TextTheme textTheme = Theme.of(context).primaryTextTheme;
const String placeholder = '⏳';
return Column( return Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
...@@ -28,13 +25,9 @@ class ContentStatisticsRecent extends StatelessWidget { ...@@ -28,13 +25,9 @@ class ContentStatisticsRecent extends StatelessWidget {
style: textTheme.bodyMedium, style: textTheme.bodyMedium,
).tr( ).tr(
namedArgs: { namedArgs: {
'count': this.isLoading ? placeholder : this.statistics.recentCount.toString(), 'count': this.statistics.recentCount.toString(),
'artistsCount': this.isLoading 'artistsCount': this.statistics.firstPlayedArtistsCount.toString(),
? placeholder 'tracksCount': this.statistics.firstPlayedTracksCount.toString(),
: this.statistics.firstPlayedArtistsCount.toString(),
'tracksCount': this.isLoading
? placeholder
: this.statistics.firstPlayedTracksCount.toString(),
}, },
), ),
], ],
......
...@@ -3,7 +3,7 @@ description: Display scrobbles data and charts ...@@ -3,7 +3,7 @@ description: Display scrobbles data and charts
publish_to: 'none' publish_to: 'none'
version: 0.0.36+36 version: 0.0.37+37
environment: environment:
sdk: '^3.0.0' sdk: '^3.0.0'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment