Limit to ScrollableChart not to go beyond 1970

This commit is contained in:
TangilHossain
2025-10-27 14:40:20 +06:00
parent 2b24759d6f
commit 84d6bbca53
3 changed files with 15 additions and 1 deletions

View File

@@ -123,6 +123,7 @@ class FrequencyChart : ScrollableChart {
}
override fun onDraw(canvas: Canvas) {
populateWithRandomData()
super.onDraw(canvas)
rect!![0f, 0f, nColumns * columnWidth] = columnHeight.toFloat()
rect!!.offset(0f, internalPaddingTop.toFloat())

View File

@@ -31,6 +31,8 @@ import android.widget.Scroller
import kotlin.math.abs
import kotlin.math.max
import kotlin.math.min
import org.isoron.uhabits.core.utils.DateUtils.Companion.getMonthsSince1970
import org.isoron.uhabits.core.utils.DateUtils.Companion.getStartOfTodayCalendar
abstract class ScrollableChart : View, GestureDetector.OnGestureListener, AnimatorUpdateListener {
var dataOffset = 0
@@ -41,7 +43,7 @@ abstract class ScrollableChart : View, GestureDetector.OnGestureListener, Animat
private lateinit var scroller: Scroller
private lateinit var scrollAnimator: ValueAnimator
private lateinit var scrollController: ScrollController
private var maxDataOffset = 10000
private var maxDataOffset = getMonthsSince1970(getStartOfTodayCalendar())
constructor(context: Context?) : super(context) {
init(context)

View File

@@ -198,6 +198,17 @@ abstract class DateUtils {
return freq
}
@JvmStatic
fun getMonthsSince1970(today: GregorianCalendar): Int {
val start = GregorianCalendar(TimeZone.getTimeZone("GMT"))
start.set(1970, Calendar.JANUARY, 1, 0, 0, 0)
start.set(Calendar.MILLISECOND, 0)
val years = today.get(Calendar.YEAR) - start.get(Calendar.YEAR) - 2
val months = today.get(Calendar.MONTH) - start.get(Calendar.MONTH)
return years * 12 + months
}
@JvmStatic
fun getToday(): Timestamp = Timestamp(getStartOfToday())