Skip to content

Commit 0af705e

Browse files
committed
add ability to swipe between last days range
1 parent c57a849 commit 0af705e

File tree

6 files changed

+41
-17
lines changed

6 files changed

+41
-17
lines changed

core/src/main/java/com/example/util/simpletimetracker/core/mapper/RangeViewDataMapper.kt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class RangeViewDataMapper @Inject constructor(
6060
is RangeLength.Month -> timeMapper.toMonthTitle(position, startOfDayShift)
6161
is RangeLength.Year -> timeMapper.toYearTitle(position, startOfDayShift)
6262
is RangeLength.All -> resourceRepo.getString(R.string.range_overall)
63-
is RangeLength.Last -> mapToLastDaysTitle(rangeLength.days)
63+
is RangeLength.Last -> mapToLastDaysTitle(rangeLength.days, position, startOfDayShift, firstDayOfWeek)
6464
is RangeLength.Custom -> if (useShortCustomRange) {
6565
mapToSelectRangeName()
6666
} else {
@@ -142,6 +142,24 @@ class RangeViewDataMapper @Inject constructor(
142142
return resourceRepo.getQuantityString(R.plurals.range_last, days, days)
143143
}
144144

145+
private fun mapToLastDaysTitle(
146+
days: Int,
147+
position: Int,
148+
startOfDayShift: Long,
149+
firstDayOfWeek: DayOfWeek,
150+
): String {
151+
return if (position == 0) {
152+
mapToLastDaysTitle(days)
153+
} else {
154+
timeMapper.getRangeStartAndEnd(
155+
rangeLength = RangeLength.Last(days),
156+
shift = position,
157+
firstDayOfWeek = firstDayOfWeek,
158+
startOfDayShift = startOfDayShift,
159+
).let(::mapToCustomRangeTitle)
160+
}
161+
}
162+
145163
companion object {
146164
private val ranges: List<RangeLength> = listOf(
147165
RangeLength.All,

core/src/main/java/com/example/util/simpletimetracker/core/mapper/TimeMapper.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,7 @@ class TimeMapper @Inject constructor(
436436
}
437437

438438
is RangeLength.Last -> {
439+
calendar.add(Calendar.DATE, shift * rangeLength.days)
439440
rangeEnd = calendar.apply { add(Calendar.DATE, 1) }.timeInMillis
440441
rangeStart = calendar.apply { add(Calendar.DATE, -rangeLength.days) }.timeInMillis
441442
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.example.util.simpletimetracker.domain.statistics.extension
2+
3+
import com.example.util.simpletimetracker.domain.statistics.model.RangeLength
4+
5+
fun RangeLength.canBeSwiped(): Boolean {
6+
return when (this) {
7+
is RangeLength.All,
8+
is RangeLength.Custom,
9+
-> false
10+
else -> true
11+
}
12+
}

domain/src/main/java/com/example/util/simpletimetracker/domain/statistics/model/RangeLength.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ package com.example.util.simpletimetracker.domain.statistics.model
33
import com.example.util.simpletimetracker.domain.record.model.Range
44

55
sealed class RangeLength {
6-
object Day : RangeLength()
7-
object Week : RangeLength()
8-
object Month : RangeLength()
9-
object Year : RangeLength()
10-
object All : RangeLength()
6+
data object Day : RangeLength()
7+
data object Week : RangeLength()
8+
data object Month : RangeLength()
9+
data object Year : RangeLength()
10+
data object All : RangeLength()
1111
data class Custom(val range: Range) : RangeLength()
1212
data class Last(val days: Int) : RangeLength()
1313
}

features/feature_statistics/src/main/java/com/example/util/simpletimetracker/feature_statistics/viewModel/StatisticsContainerViewModel.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.example.util.simpletimetracker.core.viewData.SelectLastDaysViewData
1313
import com.example.util.simpletimetracker.core.viewData.SelectRangeViewData
1414
import com.example.util.simpletimetracker.domain.extension.orZero
1515
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
16+
import com.example.util.simpletimetracker.domain.statistics.extension.canBeSwiped
1617
import com.example.util.simpletimetracker.domain.statistics.model.RangeLength
1718
import com.example.util.simpletimetracker.feature_views.spinner.CustomSpinner
1819
import com.example.util.simpletimetracker.navigation.Router
@@ -196,10 +197,7 @@ class StatisticsContainerViewModel @Inject constructor(
196197
}
197198

198199
private suspend fun loadNavButtonsVisibility(): Boolean {
199-
return when (getRangeLength()) {
200-
is RangeLength.All, is RangeLength.Custom, is RangeLength.Last -> false
201-
else -> true
202-
}
200+
return getRangeLength().canBeSwiped()
203201
}
204202

205203
companion object {

features/feature_statistics_detail/src/main/java/com/example/util/simpletimetracker/feature_statistics_detail/viewModel/delegate/StatisticsDetailRangeViewModelDelegate.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteracto
1818
import com.example.util.simpletimetracker.domain.record.model.Range
1919
import com.example.util.simpletimetracker.domain.statistics.model.RangeLength
2020
import com.example.util.simpletimetracker.domain.record.model.RecordsFilter
21+
import com.example.util.simpletimetracker.domain.statistics.extension.canBeSwiped
2122
import com.example.util.simpletimetracker.feature_views.spinner.CustomSpinner
2223
import com.example.util.simpletimetracker.navigation.Router
2324
import com.example.util.simpletimetracker.navigation.params.screen.CustomRangeSelectionParams
@@ -217,13 +218,7 @@ class StatisticsDetailRangeViewModelDelegate @Inject constructor(
217218
}
218219

219220
private fun loadButtonsVisibility(): Boolean {
220-
return when (rangeLength) {
221-
is RangeLength.All,
222-
is RangeLength.Custom,
223-
is RangeLength.Last,
224-
-> false
225-
else -> true
226-
}
221+
return rangeLength.canBeSwiped()
227222
}
228223

229224
companion object {

0 commit comments

Comments
 (0)