Skip to content

Commit f7248c1

Browse files
committed
add ability to swipe between custom ranges
1 parent 9ebfbed commit f7248c1

File tree

4 files changed

+28
-7
lines changed

4 files changed

+28
-7
lines changed

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

+16-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class RangeViewDataMapper @Inject constructor(
6464
is RangeLength.Custom -> if (useShortCustomRange) {
6565
mapToSelectRangeName()
6666
} else {
67-
mapToCustomRangeTitle(rangeLength.range)
67+
mapToCustomRangeTitle(rangeLength.range, position, startOfDayShift, firstDayOfWeek)
6868
}
6969
}
7070
}
@@ -133,6 +133,21 @@ class RangeViewDataMapper @Inject constructor(
133133
timeMapper.formatDate(range.timeEnded - 1)
134134
}
135135

136+
private fun mapToCustomRangeTitle(
137+
range: Range,
138+
position: Int,
139+
startOfDayShift: Long,
140+
firstDayOfWeek: DayOfWeek,
141+
): String {
142+
val shiftedRange = timeMapper.getRangeStartAndEnd(
143+
rangeLength = RangeLength.Custom(range),
144+
shift = position,
145+
firstDayOfWeek = firstDayOfWeek,
146+
startOfDayShift = startOfDayShift,
147+
)
148+
return mapToCustomRangeTitle(shiftedRange)
149+
}
150+
136151
private fun mapToSelectLastDays(days: Int): SelectLastDaysViewData {
137152
val text = mapToLastDaysTitle(days)
138153
return SelectLastDaysViewData(text)

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

+10-2
Original file line numberDiff line numberDiff line change
@@ -431,8 +431,16 @@ class TimeMapper @Inject constructor(
431431
}
432432

433433
is RangeLength.Custom -> {
434-
rangeStart = rangeLength.range.timeStarted
435-
rangeEnd = rangeLength.range.timeEnded
434+
val daysBetween = toTimestampShift(
435+
fromTime = rangeLength.range.timeStarted,
436+
toTime = rangeLength.range.timeEnded,
437+
range = RangeLength.Day,
438+
firstDayOfWeek = firstDayOfWeek,
439+
).toInt()
440+
calendar.timeInMillis = rangeLength.range.timeStarted
441+
calendar.add(Calendar.DATE, shift * daysBetween)
442+
rangeStart = calendar.timeInMillis
443+
rangeEnd = calendar.apply { add(Calendar.DATE, daysBetween) }.timeInMillis
436444
}
437445

438446
is RangeLength.Last -> {

domain/src/main/java/com/example/util/simpletimetracker/domain/statistics/extension/StatisticsExtensions.kt

+1-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ import com.example.util.simpletimetracker.domain.statistics.model.RangeLength
44

55
fun RangeLength.canBeSwiped(): Boolean {
66
return when (this) {
7-
is RangeLength.All,
8-
is RangeLength.Custom,
9-
-> false
7+
is RangeLength.All -> false
108
else -> true
119
}
1210
}

features/feature_statistics_detail/src/main/java/com/example/util/simpletimetracker/feature_statistics_detail/interactor/StatisticsDetailChartInteractor.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -329,11 +329,11 @@ class StatisticsDetailChartInteractor @Inject constructor(
329329
is RangeLength.Month,
330330
is RangeLength.Year,
331331
is RangeLength.Last,
332+
is RangeLength.Custom,
332333
-> timeMapper.getRangeStartAndEnd(
333334
rangeLength, rangePosition, firstDayOfWeek, 0,
334335
).timeEnded - 1
335336
is RangeLength.All -> System.currentTimeMillis()
336-
is RangeLength.Custom -> rangeLength.range.timeEnded - 1
337337
}
338338

339339
val numberOfGroups: Int = when (rangeLength) {

0 commit comments

Comments
 (0)