Fix stats range changed when using arrows (#1452)

This commit is contained in:
nzoba 2022-12-13 20:36:36 +01:00 committed by GitHub
parent 4904337ad5
commit 92513e11d1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 44 deletions

View file

@ -368,10 +368,7 @@ class StatsDetailsController :
* @param toAdd whether to add or remove * @param toAdd whether to add or remove
*/ */
private fun changeReadDurationPeriod(toAdd: Int) { private fun changeReadDurationPeriod(toAdd: Int) {
val millionSeconds = presenter.endDate.timeInMillis - presenter.startDate.timeInMillis presenter.changeReadDurationPeriod(toAdd)
val days = TimeUnit.MILLISECONDS.toDays(millionSeconds) + 1
presenter.startDate.add(Calendar.DAY_OF_YEAR, toAdd * days.toInt())
presenter.updateReadDurationPeriod(presenter.startDate.timeInMillis, days.toInt())
binding.progress.isVisible = true binding.progress.isVisible = true
jobReadDuration = viewScope.launchIO { jobReadDuration = viewScope.launchIO {
presenter.updateMangaHistory() presenter.updateMangaHistory()
@ -498,7 +495,6 @@ class StatsDetailsController :
progress.isVisible = true progress.isVisible = true
scrollView.isInvisible = true scrollView.isInvisible = true
scrollView.scrollTo(0, 0) scrollView.scrollTo(0, 0)
chartLinearLayout?.isVisible = false
statsPieChart.isVisible = false statsPieChart.isVisible = false
statsBarChart.isVisible = false statsBarChart.isVisible = false
statsLineChart.isVisible = false statsLineChart.isVisible = false
@ -521,7 +517,6 @@ class StatsDetailsController :
binding.noChartData.show(R.drawable.ic_heart_off_24dp, R.string.no_data_for_filters) binding.noChartData.show(R.drawable.ic_heart_off_24dp, R.string.no_data_for_filters)
presenter.currentStats?.removeAll { it.count == 0 } presenter.currentStats?.removeAll { it.count == 0 }
handleNoChartLayout() handleNoChartLayout()
chartLinearLayout?.isVisible = false
statsPieChart.isVisible = false statsPieChart.isVisible = false
statsBarChart.isVisible = false statsBarChart.isVisible = false
statsLineChart.isVisible = false statsLineChart.isVisible = false
@ -758,7 +753,6 @@ class StatsDetailsController :
statsPieChart.clear() statsPieChart.clear()
statsPieChart.invalidate() statsPieChart.invalidate()
chartLinearLayout?.isVisible = true
statsPieChart.isVisible = true statsPieChart.isVisible = true
statsBarChart.isVisible = false statsBarChart.isVisible = false
statsLineChart.isVisible = false statsLineChart.isVisible = false
@ -795,7 +789,6 @@ class StatsDetailsController :
statsBarChart.axisLeft.resetAxisMinimum() statsBarChart.axisLeft.resetAxisMinimum()
statsBarChart.axisLeft.resetAxisMaximum() statsBarChart.axisLeft.resetAxisMaximum()
chartLinearLayout?.isVisible = true
statsPieChart.isVisible = false statsPieChart.isVisible = false
statsBarChart.isVisible = true statsBarChart.isVisible = true
statsLineChart.isVisible = false statsLineChart.isVisible = false
@ -908,7 +901,6 @@ class StatsDetailsController :
statsLineChart.clear() statsLineChart.clear()
statsLineChart.invalidate() statsLineChart.invalidate()
chartLinearLayout?.isVisible = true
statsPieChart.isVisible = false statsPieChart.isVisible = false
statsBarChart.isVisible = false statsBarChart.isVisible = false
statsLineChart.isVisible = true statsLineChart.isVisible = true

View file

@ -68,6 +68,7 @@ class StatsDetailsPresenter(
timeInMillis = startDate.timeInMillis - 1 timeInMillis = startDate.timeInMillis - 1
add(Calendar.WEEK_OF_YEAR, 1) add(Calendar.WEEK_OF_YEAR, 1)
} }
private var daysRange = getDaysRange()
var history = getMangaHistoryGroupedByDay() var history = getMangaHistoryGroupedByDay()
var historyByDayAndManga = emptyMap<Calendar, Map<Manga, List<History>>>() var historyByDayAndManga = emptyMap<Calendar, Map<Manga, List<History>>>()
@ -555,9 +556,7 @@ class StatsDetailsPresenter(
timeInMillis = startDate.timeInMillis timeInMillis = startDate.timeInMillis
} }
val millionSeconds = endDate.timeInMillis - startDate.timeInMillis return (0 until daysRange).associate { _ ->
val days = TimeUnit.MILLISECONDS.toDays(millionSeconds)
return (0..days).associate { _ ->
Calendar.getInstance().apply { timeInMillis = calendar.timeInMillis } to history.filter { Calendar.getInstance().apply { timeInMillis = calendar.timeInMillis } to history.filter {
val calH = Calendar.getInstance().apply { timeInMillis = it.history.last_read } val calH = Calendar.getInstance().apply { timeInMillis = it.history.last_read }
calH.get(Calendar.DAY_OF_YEAR) == calendar.get(Calendar.DAY_OF_YEAR) && calH.get(Calendar.DAY_OF_YEAR) == calendar.get(Calendar.DAY_OF_YEAR) &&
@ -578,27 +577,18 @@ class StatsDetailsPresenter(
} ?: context.getString(R.string.unknown) } ?: context.getString(R.string.unknown)
} }
fun changeReadDurationPeriod(toAdd: Int) {
startDate.add(Calendar.DAY_OF_YEAR, toAdd * daysRange.toInt())
endDate.add(Calendar.DAY_OF_YEAR, toAdd * daysRange.toInt())
}
private fun getDaysRange(): Long {
return TimeUnit.MILLISECONDS.toDays(endDate.timeInMillis - startDate.timeInMillis) + 1
}
/** /**
* Update the start date and end date according to time selected and fetch the history of the period * Update the start date and end date according to time selected
*/ */
fun updateReadDurationPeriod(millis: Long, days: Int) {
startDate = Calendar.getInstance().apply {
timeInMillis = millis
set(Calendar.HOUR_OF_DAY, 0)
clear(Calendar.MINUTE)
clear(Calendar.SECOND)
clear(Calendar.MILLISECOND)
}
endDate = Calendar.getInstance().apply {
timeInMillis = startDate.timeInMillis - 1
add(Calendar.DAY_OF_YEAR, days)
}
}
fun updateMangaHistory() {
history = getMangaHistoryGroupedByDay()
}
fun updateReadDurationPeriod(startMillis: Long, endMillis: Long) { fun updateReadDurationPeriod(startMillis: Long, endMillis: Long) {
startDate = Calendar.getInstance().apply { startDate = Calendar.getInstance().apply {
timeInMillis = startMillis timeInMillis = startMillis
@ -616,6 +606,11 @@ class StatsDetailsPresenter(
add(Calendar.DAY_OF_YEAR, 1) add(Calendar.DAY_OF_YEAR, 1)
timeInMillis -= 1 timeInMillis -= 1
} }
daysRange = getDaysRange()
}
fun updateMangaHistory() {
history = getMangaHistoryGroupedByDay()
} }
fun convertCalendarToLongString(calendar: Calendar): String { fun convertCalendarToLongString(calendar: Calendar): String {

View file

@ -7,25 +7,12 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context="eu.kanade.tachiyomi.ui.more.stats.details.StatsDetailsController"> tools:context="eu.kanade.tachiyomi.ui.more.stats.details.StatsDetailsController">
<eu.kanade.tachiyomi.widget.EmptyView
android:id="@+id/no_chart_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_gravity="center"
android:visibility="gone" />
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/filter_constraint_layout" android:id="@+id/filter_constraint_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/stats_details_scroll_view"
app:layout_constraintStart_toStartOf="parent"> app:layout_constraintStart_toStartOf="parent">
<HorizontalScrollView <HorizontalScrollView
@ -289,6 +276,17 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout> </LinearLayout>
<eu.kanade.tachiyomi.widget.EmptyView
android:id="@+id/no_chart_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/chart_linear_layout"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_gravity="center"
android:visibility="gone" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/stats_recycler_view" android:id="@+id/stats_recycler_view"
android:layout_width="0dp" android:layout_width="0dp"