forked from github/wulkanowy-mirror
Add calculated average help dialog (#1379)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
This commit is contained in:
@ -131,7 +131,9 @@ class GradeAverageProvider @Inject constructor(
|
||||
val updatedFirstSemesterGrades =
|
||||
firstSemesterSubject?.grades?.updateModifiers(student).orEmpty()
|
||||
|
||||
(updatedSecondSemesterGrades + updatedFirstSemesterGrades).calcAverage(isOptionalArithmeticAverage)
|
||||
(updatedSecondSemesterGrades + updatedFirstSemesterGrades).calcAverage(
|
||||
isOptionalArithmeticAverage
|
||||
)
|
||||
} else {
|
||||
secondSemesterSubject.average
|
||||
}
|
||||
@ -147,7 +149,8 @@ class GradeAverageProvider @Inject constructor(
|
||||
|
||||
return if (!isAnyVulcanAverage || isGradeAverageForceCalc) {
|
||||
val secondSemesterAverage =
|
||||
secondSemesterSubject.grades.updateModifiers(student).calcAverage(isOptionalArithmeticAverage)
|
||||
secondSemesterSubject.grades.updateModifiers(student)
|
||||
.calcAverage(isOptionalArithmeticAverage)
|
||||
val firstSemesterAverage = firstSemesterSubject?.grades?.updateModifiers(student)
|
||||
?.calcAverage(isOptionalArithmeticAverage) ?: secondSemesterAverage
|
||||
|
||||
@ -213,7 +216,8 @@ class GradeAverageProvider @Inject constructor(
|
||||
proposedPoints = "",
|
||||
finalPoints = "",
|
||||
pointsSum = "",
|
||||
average = if (calcAverage) details.updateModifiers(student).calcAverage(isOptionalArithmeticAverage) else .0
|
||||
average = if (calcAverage) details.updateModifiers(student)
|
||||
.calcAverage(isOptionalArithmeticAverage) else .0
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ import io.github.wulkanowy.data.db.entities.GradeSummary
|
||||
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
||||
import io.github.wulkanowy.databinding.ItemGradeSummaryBinding
|
||||
import io.github.wulkanowy.databinding.ScrollableHeaderGradeSummaryBinding
|
||||
import io.github.wulkanowy.utils.calcAverage
|
||||
import io.github.wulkanowy.utils.calcFinalAverage
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
|
||||
@ -25,6 +25,10 @@ class GradeSummaryAdapter @Inject constructor(
|
||||
|
||||
var items = emptyList<GradeSummary>()
|
||||
|
||||
var onCalculatedHelpClickListener: () -> Unit = {}
|
||||
|
||||
var onFinalHelpClickListener: () -> Unit = {}
|
||||
|
||||
override fun getItemCount() = items.size + if (items.isNotEmpty()) 1 else 0
|
||||
|
||||
override fun getItemViewType(position: Int) = when (position) {
|
||||
@ -60,7 +64,7 @@ class GradeSummaryAdapter @Inject constructor(
|
||||
val finalItemsCount = items.count { it.finalGrade.matches("[0-6][+-]?".toRegex()) }
|
||||
val calculatedItemsCount = items.count { value -> value.average != 0.0 }
|
||||
val allItemsCount = items.count { !it.subject.equals("zachowanie", true) }
|
||||
val finalAverage = items.calcAverage(
|
||||
val finalAverage = items.calcFinalAverage(
|
||||
preferencesRepository.gradePlusModifier,
|
||||
preferencesRepository.gradeMinusModifier
|
||||
)
|
||||
@ -83,6 +87,9 @@ class GradeSummaryAdapter @Inject constructor(
|
||||
calculatedItemsCount,
|
||||
allItemsCount
|
||||
)
|
||||
|
||||
gradeSummaryCalculatedAverageHelp.setOnClickListener { onCalculatedHelpClickListener() }
|
||||
gradeSummaryFinalAverageHelp.setOnClickListener { onFinalHelpClickListener() }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import android.view.View
|
||||
import android.view.View.GONE
|
||||
import android.view.View.INVISIBLE
|
||||
import android.view.View.VISIBLE
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import io.github.wulkanowy.R
|
||||
@ -48,6 +49,11 @@ class GradeSummaryFragment :
|
||||
}
|
||||
|
||||
override fun initView() {
|
||||
with(gradeSummaryAdapter) {
|
||||
onCalculatedHelpClickListener = presenter::onCalculatedAverageHelpClick
|
||||
onFinalHelpClickListener = presenter::onFinalAverageHelpClick
|
||||
}
|
||||
|
||||
with(binding.gradeSummaryRecycler) {
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
adapter = gradeSummaryAdapter
|
||||
@ -55,7 +61,11 @@ class GradeSummaryFragment :
|
||||
with(binding) {
|
||||
gradeSummarySwipe.setOnRefreshListener(presenter::onSwipeRefresh)
|
||||
gradeSummarySwipe.setColorSchemeColors(requireContext().getThemeAttrColor(R.attr.colorPrimary))
|
||||
gradeSummarySwipe.setProgressBackgroundColorSchemeColor(requireContext().getThemeAttrColor(R.attr.colorSwipeRefresh))
|
||||
gradeSummarySwipe.setProgressBackgroundColorSchemeColor(
|
||||
requireContext().getThemeAttrColor(
|
||||
R.attr.colorSwipeRefresh
|
||||
)
|
||||
)
|
||||
gradeSummaryErrorRetry.setOnClickListener { presenter.onRetry() }
|
||||
gradeSummaryErrorDetails.setOnClickListener { presenter.onDetailsClick() }
|
||||
}
|
||||
@ -107,6 +117,22 @@ class GradeSummaryFragment :
|
||||
binding.gradeSummarySwipe.isRefreshing = show
|
||||
}
|
||||
|
||||
override fun showCalculatedAverageHelpDialog() {
|
||||
AlertDialog.Builder(requireContext())
|
||||
.setTitle(R.string.grade_summary_calculated_average_help_dialog_title)
|
||||
.setMessage(R.string.grade_summary_calculated_average_help_dialog_message)
|
||||
.setPositiveButton(R.string.all_close) { _, _ -> }
|
||||
.show()
|
||||
}
|
||||
|
||||
override fun showFinalAverageHelpDialog() {
|
||||
AlertDialog.Builder(requireContext())
|
||||
.setTitle(R.string.grade_summary_final_average_help_dialog_title)
|
||||
.setMessage(R.string.grade_summary_final_average_help_dialog_message)
|
||||
.setPositiveButton(R.string.all_close) { _, _ -> }
|
||||
.show()
|
||||
}
|
||||
|
||||
override fun onParentLoadData(semesterId: Int, forceRefresh: Boolean) {
|
||||
presenter.onParentViewLoadData(semesterId, forceRefresh)
|
||||
}
|
||||
|
@ -135,6 +135,14 @@ class GradeSummaryPresenter @Inject constructor(
|
||||
cancelJobs("load")
|
||||
}
|
||||
|
||||
fun onCalculatedAverageHelpClick() {
|
||||
view?.showCalculatedAverageHelpDialog()
|
||||
}
|
||||
|
||||
fun onFinalAverageHelpClick() {
|
||||
view?.showFinalAverageHelpDialog()
|
||||
}
|
||||
|
||||
private fun createGradeSummaryItems(items: List<GradeSubject>): List<GradeSummary> {
|
||||
return items
|
||||
.filter { !checkEmpty(it) }
|
||||
|
@ -33,6 +33,10 @@ interface GradeSummaryView : BaseView {
|
||||
|
||||
fun showEmpty(show: Boolean)
|
||||
|
||||
fun showCalculatedAverageHelpDialog()
|
||||
|
||||
fun showFinalAverageHelpDialog()
|
||||
|
||||
fun notifyParentDataLoaded(semesterId: Int)
|
||||
|
||||
fun notifyParentRefresh()
|
||||
|
@ -79,12 +79,7 @@ class MessagePreviewAdapter @Inject constructor() :
|
||||
|
||||
val readText = when {
|
||||
recipientCount > 1 -> {
|
||||
context.resources.getQuantityString(
|
||||
R.plurals.message_read_by,
|
||||
message.readBy,
|
||||
message.readBy,
|
||||
recipientCount
|
||||
)
|
||||
context.getString(R.string.message_read_by, message.readBy, recipientCount)
|
||||
}
|
||||
message.readBy == 1 -> {
|
||||
context.getString(R.string.message_read, context.getString(R.string.all_yes))
|
||||
|
Reference in New Issue
Block a user