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

Merge branch '34-improve-discoveries-chart' into 'master'

Resolve "Improve "discoveries" chart"

Closes #34

See merge request !30
parents e1d64654 44ec7eac
No related branches found
No related tags found
1 merge request!30Resolve "Improve "discoveries" chart"
Pipeline #4581 passed
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=0.0.26
app.versionCode=26
app.versionName=0.0.27
app.versionCode=27
......@@ -17,7 +17,8 @@
"counts_by_day": "Counts by day ({daysCount} days)",
"counts_by_hour": "Counts by hour ({daysCount} days)",
"discoveries_title": "Discoveries ({daysCount} days)",
"discoveries_artists_title": "Artists discoveries ({daysCount} days)",
"discoveries_tracks_title": "Tracks discoveries ({daysCount} days)",
"top_artists_title": "Top artists ({daysCount} days)",
......
......@@ -17,7 +17,8 @@
"counts_by_day": "Écoutes par jour ({daysCount} jours)",
"counts_by_hour": "Écoutes par heure ({daysCount} jours)",
"discoveries_title": "Découvertes ({daysCount} jours)",
"discoveries_artists_title": "Artistes découverts ({daysCount} jours)",
"discoveries_tracks_title": "Morceaux découverts ({daysCount} jours)",
"top_artists_title": "Top artistes ({daysCount} jours)",
......
Improve "discoveries" chart.
Amélioration du graphique des découvertes.
......@@ -5,7 +5,8 @@ import 'package:flutter/material.dart';
import '../../../models/discoveries.dart';
import '../../../network/scrobbles_api.dart';
import '../../../ui/widgets/error.dart';
import '../../../ui/widgets/main_screen/discoveries_content.dart';
import 'discoveries_content_artists.dart';
import 'discoveries_content_tracks.dart';
class ChartDiscoveriesCard extends StatelessWidget {
const ChartDiscoveriesCard({super.key});
......@@ -33,13 +34,25 @@ class ChartDiscoveriesCard extends StatelessWidget {
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: ChartDiscoveriesCardContent(
child: Column(
children: [
ChartDiscoveriesArtistsCardContent(
daysCount: daysCount,
chartData: snapshot.hasData
? DiscoveriesData.fromJson(jsonDecode(snapshot.data.toString()))
: DiscoveriesData.createEmpty(),
isLoading: !snapshot.hasData,
),
const SizedBox(height: 8),
ChartDiscoveriesTracksCardContent(
daysCount: daysCount,
chartData: snapshot.hasData
? DiscoveriesData.fromJson(jsonDecode(snapshot.data.toString()))
: DiscoveriesData.createEmpty(),
isLoading: !snapshot.hasData,
),
],
),
),
);
},
......
......@@ -6,10 +6,10 @@ import '../../../models/discoveries.dart';
import '../../../utils/color_extensions.dart';
import '../../../ui/widgets/charts/custom_bar_chart.dart';
class ChartDiscoveries extends CustomBarChart {
class ChartDiscoveriesArtists extends CustomBarChart {
final DiscoveriesData chartData;
ChartDiscoveries({super.key, required this.chartData});
ChartDiscoveriesArtists({super.key, required this.chartData});
@override
Widget build(BuildContext context) {
......@@ -31,14 +31,10 @@ class ChartDiscoveries extends CustomBarChart {
DiscoveriesDataValue? value = this.chartData.data[key];
if (value != null) {
double newArtistsCount = value.newArtistsCount.toDouble();
double newTracksCount = value.newTracksCount.toDouble();
if (newArtistsCount > maxValue) {
maxValue = newArtistsCount;
}
if (newTracksCount > maxValue) {
maxValue = newTracksCount;
}
}
});
......@@ -49,7 +45,6 @@ class ChartDiscoveries extends CustomBarChart {
List<BarChartGroupData> data = [];
final newArtistsBarColor = AppColors.contentColorGreen.darken(20);
final newTracksBarColor = AppColors.contentColorBlue.darken(20);
this.chartData.data.keys.forEach((key) {
DiscoveriesDataValue? value = this.chartData.data[key];
......@@ -60,13 +55,11 @@ class ChartDiscoveries extends CustomBarChart {
x: date,
values: [
value.newArtistsCount.toDouble(),
value.newTracksCount.toDouble(),
],
barColors: [
newArtistsBarColor,
newTracksBarColor,
],
barWidth: barWidth / 2.5,
barWidth: barWidth,
));
}
});
......
import 'package:flutter/material.dart';
import 'package:fl_chart/fl_chart.dart';
import '../../../config/app_colors.dart';
import '../../../models/discoveries.dart';
import '../../../utils/color_extensions.dart';
import '../../../ui/widgets/charts/custom_bar_chart.dart';
class ChartDiscoveriesTracks extends CustomBarChart {
final DiscoveriesData chartData;
ChartDiscoveriesTracks({super.key, required this.chartData});
@override
Widget build(BuildContext context) {
return Container(
height: this.chartHeight,
child: LayoutBuilder(builder: (context, constraints) {
return getBarChart(
barWidth: this.getBarWidth(constraints.maxWidth, this.chartData.data.keys.length),
backgroundColor: Theme.of(context).colorScheme.onSurface,
);
}),
);
}
double getMaxCountsValue() {
double maxValue = 0;
this.chartData.data.keys.forEach((key) {
DiscoveriesDataValue? value = this.chartData.data[key];
if (value != null) {
double newTracksCount = value.newTracksCount.toDouble();
if (newTracksCount > maxValue) {
maxValue = newTracksCount;
}
}
});
return maxValue;
}
List<BarChartGroupData> getDataCounts(double barWidth) {
List<BarChartGroupData> data = [];
final newTracksBarColor = AppColors.contentColorBlue.darken(20);
this.chartData.data.keys.forEach((key) {
DiscoveriesDataValue? value = this.chartData.data[key];
if (value != null) {
final int date = DateTime.parse(key).millisecondsSinceEpoch;
data.add(this.getBarItem(
x: date,
values: [
value.newTracksCount.toDouble(),
],
barColors: [
newTracksBarColor,
],
barWidth: barWidth,
));
}
});
return data;
}
}
import 'dart:convert';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import '../../../models/discoveries.dart';
import 'discoveries_chart_artists.dart';
class ChartDiscoveriesArtistsCardContent extends StatelessWidget {
final int daysCount;
final DiscoveriesData chartData;
final bool isLoading;
const ChartDiscoveriesArtistsCardContent(
{super.key, required this.daysCount, required this.chartData, required this.isLoading});
@override
Widget build(BuildContext context) {
final TextTheme textTheme = Theme.of(context).primaryTextTheme;
final String placeholder = '⏳';
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'discoveries_artists_title',
style: textTheme.titleLarge!.apply(fontWeightDelta: 2),
).tr(
namedArgs: {
'daysCount': this.daysCount.toString(),
},
),
const SizedBox(height: 8),
this.isLoading
? Text(placeholder)
: ChartDiscoveriesArtists(
chartData: DiscoveriesData.fromJson(jsonDecode(this.chartData.toString())),
),
],
);
}
}
......@@ -4,14 +4,14 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import '../../../models/discoveries.dart';
import '../../../ui/widgets/main_screen/discoveries_chart.dart';
import 'discoveries_chart_tracks.dart';
class ChartDiscoveriesCardContent extends StatelessWidget {
class ChartDiscoveriesTracksCardContent extends StatelessWidget {
final int daysCount;
final DiscoveriesData chartData;
final bool isLoading;
const ChartDiscoveriesCardContent(
const ChartDiscoveriesTracksCardContent(
{super.key, required this.daysCount, required this.chartData, required this.isLoading});
@override
......@@ -24,7 +24,7 @@ class ChartDiscoveriesCardContent extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'discoveries_title',
'discoveries_tracks_title',
style: textTheme.titleLarge!.apply(fontWeightDelta: 2),
).tr(
namedArgs: {
......@@ -34,7 +34,7 @@ class ChartDiscoveriesCardContent extends StatelessWidget {
const SizedBox(height: 8),
this.isLoading
? Text(placeholder)
: ChartDiscoveries(
: ChartDiscoveriesTracks(
chartData: DiscoveriesData.fromJson(jsonDecode(this.chartData.toString())),
),
],
......
......@@ -3,7 +3,7 @@ description: Display scrobbles data and charts
publish_to: 'none'
version: 0.0.26+26
version: 0.0.27+27
environment:
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