Skip to content

Commit 942e645

Browse files
committed
change stat detail preview
1 parent 5a0b0c5 commit 942e645

6 files changed

Lines changed: 51 additions & 17 deletions

File tree

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ class StatisticsDetailContentInteractor @Inject constructor(
5252
val result = mutableListOf<ViewHolderType>()
5353

5454
fun getPreviewColor(): Int {
55-
return previewViewData
56-
?.data?.color
57-
?: Color.BLACK
55+
return previewViewData?.previewColor ?: Color.BLACK
5856
}
5957

6058
fun getPreviewColorComparison(): Int {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class StatisticsDetailPreviewInteractor @Inject constructor(
7373
statisticsDetailViewDataMapper.mapToPreview(
7474
recordType = type,
7575
isDarkTheme = isDarkTheme,
76-
showName = !total && index == 0,
76+
showName = !isForComparison && selectedIds.size == 1,
7777
isForComparison = isForComparison,
7878
)
7979
}

features/feature_statistics_detail/src/main/java/com/example/util/simpletimetracker/feature_statistics_detail/view/StatisticsDetailFragment.kt

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.example.util.simpletimetracker.feature_statistics_detail.view
33
import android.os.Bundle
44
import android.view.LayoutInflater
55
import android.view.ViewGroup
6+
import androidx.core.view.isVisible
67
import androidx.fragment.app.viewModels
78
import androidx.recyclerview.widget.RecyclerView
89
import com.example.util.simpletimetracker.core.base.BaseFragment
@@ -12,6 +13,7 @@ import com.example.util.simpletimetracker.core.dialog.DateTimeDialogListener
1213
import com.example.util.simpletimetracker.core.dialog.DurationDialogListener
1314
import com.example.util.simpletimetracker.core.dialog.OptionsListDialogListener
1415
import com.example.util.simpletimetracker.core.dialog.RecordsFilterListener
16+
import com.example.util.simpletimetracker.core.extension.addOnBackPressedListener
1517
import com.example.util.simpletimetracker.core.extension.onItemSwiped
1618
import com.example.util.simpletimetracker.core.extension.setSharedTransitions
1719
import com.example.util.simpletimetracker.core.extension.toViewData
@@ -137,6 +139,11 @@ class StatisticsDetailFragment :
137139
}
138140

139141
override fun initUx() = with(binding) {
142+
addOnBackPressedListener {
143+
// Force show preview otherwise shared transition would brake.
144+
viewStatisticsDetailItem.isVisible = true
145+
viewModel.onBackPressed()
146+
}
140147
DateSelectorViewDelegate.initUx(
141148
fragment = this@StatisticsDetailFragment,
142149
binding = binding.containerDatesSelector,
@@ -207,20 +214,28 @@ class StatisticsDetailFragment :
207214
)
208215

209216
StatisticsDetailPreviewCompositeViewData(
210-
data = preview,
217+
previewColor = preview.color,
218+
mainPreview = preview,
211219
additionalData = emptyList(),
212220
comparisonData = emptyList(),
213221
).let(::setPreviewViewData)
214222
}
215223

216224
private fun setPreviewViewData(viewData: StatisticsDetailPreviewCompositeViewData?) = with(binding) {
217-
val first = viewData?.data ?: return@with
225+
val preview = viewData?.mainPreview
226+
227+
if (preview == null) {
228+
viewStatisticsDetailItem.isVisible = false
229+
return@with
230+
} else {
231+
viewStatisticsDetailItem.isVisible = true
232+
}
218233

219-
viewStatisticsDetailItem.itemName = first.name
220-
viewStatisticsDetailItem.itemColor = first.color
221-
if (first.iconId != null) {
234+
viewStatisticsDetailItem.itemName = preview.name
235+
viewStatisticsDetailItem.itemColor = preview.color
236+
if (preview.iconId != null) {
222237
viewStatisticsDetailItem.itemIconVisible = true
223-
viewStatisticsDetailItem.itemIcon = first.iconId
238+
viewStatisticsDetailItem.itemIcon = preview.iconId
224239
} else {
225240
viewStatisticsDetailItem.itemIconVisible = false
226241
}

features/feature_statistics_detail/src/main/java/com/example/util/simpletimetracker/feature_statistics_detail/viewData/StatisticsDetailPreviewCompositeViewData.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ package com.example.util.simpletimetracker.feature_statistics_detail.viewData
33
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
44

55
data class StatisticsDetailPreviewCompositeViewData(
6-
val data: StatisticsDetailPreviewViewData?,
6+
val previewColor: Int?,
7+
val mainPreview: StatisticsDetailPreviewViewData?,
78
val additionalData: List<ViewHolderType>,
89
val comparisonData: List<ViewHolderType>,
910
)

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,10 @@ class StatisticsDetailViewModel @Inject constructor(
279279
streaksDelegate.onStreaksCalendarClick(viewData, coordinates)
280280
}
281281

282+
fun onBackPressed() {
283+
router.back()
284+
}
285+
282286
private fun onRecordsClick() {
283287
val finalFilters = filterDelegate.provideFilter()
284288
.plus(rangeDelegate.getDateFilter())

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

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,13 @@ import androidx.lifecycle.LiveData
44
import com.example.util.simpletimetracker.core.base.ViewModelDelegate
55
import com.example.util.simpletimetracker.core.extension.lazySuspend
66
import com.example.util.simpletimetracker.core.extension.set
7-
import com.example.util.simpletimetracker.core.extension.toModel
8-
import com.example.util.simpletimetracker.domain.extension.orFalse
9-
import com.example.util.simpletimetracker.domain.record.model.RecordsFilter
7+
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
108
import com.example.util.simpletimetracker.feature_statistics_detail.interactor.StatisticsDetailPreviewInteractor
119
import com.example.util.simpletimetracker.feature_statistics_detail.interactor.StatisticsDetailTotalRecordsSelectedInteractor
1210
import com.example.util.simpletimetracker.feature_statistics_detail.viewData.StatisticsDetailPreview
1311
import com.example.util.simpletimetracker.feature_statistics_detail.viewData.StatisticsDetailPreviewCompositeViewData
1412
import com.example.util.simpletimetracker.feature_statistics_detail.viewData.StatisticsDetailPreviewMoreViewData
1513
import com.example.util.simpletimetracker.feature_statistics_detail.viewData.StatisticsDetailPreviewViewData
16-
import com.example.util.simpletimetracker.navigation.params.screen.RecordsFilterParam
1714
import kotlinx.coroutines.launch
1815
import javax.inject.Inject
1916

@@ -65,9 +62,28 @@ class StatisticsDetailPreviewViewModelDelegate @Inject constructor(
6562
isExpanded = previewsComparisonExpanded,
6663
isForComparison = true,
6764
)
65+
val showMainPreview = total || data.size == 1
66+
67+
val mainPreview: StatisticsDetailPreviewViewData?
68+
val additionalData: List<ViewHolderType>
69+
if (showMainPreview) {
70+
mainPreview = data.firstOrNull() as? StatisticsDetailPreviewViewData
71+
additionalData = data.drop(1)
72+
} else {
73+
mainPreview = null
74+
additionalData = data
75+
}
76+
77+
val previewColor = mainPreview?.color
78+
?: additionalData
79+
.filterIsInstance<StatisticsDetailPreviewViewData>()
80+
.firstOrNull()
81+
?.color
82+
6883
return StatisticsDetailPreviewCompositeViewData(
69-
data = data.firstOrNull() as? StatisticsDetailPreviewViewData,
70-
additionalData = data.drop(1),
84+
previewColor = previewColor,
85+
mainPreview = mainPreview,
86+
additionalData = additionalData,
7187
comparisonData = comparisonData,
7288
)
7389
}

0 commit comments

Comments
 (0)