Skip to content

Commit 3d2dbca

Browse files
committed
Set min/max
1 parent 1609f15 commit 3d2dbca

2 files changed

Lines changed: 38 additions & 17 deletions

File tree

app/src/main/kotlin/info/appdev/chartexample/TimeIntervalChartActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ class TimeIntervalChartActivity : DemoBase(), OnChartValueSelectedListener {
3131
ganttData.addTask(GanttTask("Dev", 40f, 100f, Color.rgb(66, 165, 245))) // Blue: 40-140
3232
ganttData.addTask(GanttTask("Testing", 120f, 40f, Color.rgb(76, 175, 80), hatched = true)) // Green: 120-160
3333
ganttData.addTask(GanttTask("Launch", 150f, 20f, Color.rgb(255, 193, 7))) // Yellow: 150-170
34-
34+
ganttData.minTime = 10f
35+
ganttData.maxTime = 200f
3536
// Set data and render
3637
binding.chart1.setData(ganttData)
3738
}

chartLib/src/main/kotlin/info/appdev/charting/data/GanttChartData.kt

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import kotlin.math.min
88
* Manages a list of tasks and provides convenient access methods.
99
*/
1010
class GanttChartData {
11+
private var mMaxTime = 0f
12+
private var mMinTime = 0f
13+
1114
/**
1215
* Get all tasks.
1316
*
@@ -22,6 +25,27 @@ class GanttChartData {
2225
*/
2326
fun addTask(task: GanttTask?) {
2427
tasks.add(task!!)
28+
mMinTime = calcMinTime()
29+
mMaxTime = calcMaxTime()
30+
}
31+
32+
private fun calcMaxTime(): Float {
33+
if (tasks.isEmpty())
34+
return 100f
35+
var max = 0f
36+
for (task in tasks) {
37+
max = max(max, task.endTime)
38+
}
39+
return max
40+
}
41+
42+
private fun calcMinTime(): Float {
43+
if (tasks.isEmpty()) return 0f
44+
var min = Float.MAX_VALUE
45+
for (task in tasks) {
46+
min = min(min, task.startTime)
47+
}
48+
return min
2549
}
2650

2751
/**
@@ -31,6 +55,8 @@ class GanttChartData {
3155
*/
3256
fun addTasks(taskList: MutableList<GanttTask>) {
3357
tasks.addAll(taskList)
58+
mMinTime = calcMinTime()
59+
mMaxTime = calcMaxTime()
3460
}
3561

3662
/**
@@ -56,35 +82,29 @@ class GanttChartData {
5682
*
5783
* @return Minimum start time
5884
*/
59-
val minTime: Float
60-
get() {
61-
if (tasks.isEmpty()) return 0f
62-
var min = Float.MAX_VALUE
63-
for (task in tasks) {
64-
min = min(min, task.startTime)
65-
}
66-
return min
85+
var minTime: Float
86+
get() = mMinTime
87+
set(value) {
88+
mMinTime = value
6789
}
6890

6991
/**
7092
* Get the latest end time across all tasks.
7193
*
7294
* @return Maximum end time
7395
*/
74-
val maxTime: Float
75-
get() {
76-
if (tasks.isEmpty()) return 100f
77-
var max = 0f
78-
for (task in tasks) {
79-
max = max(max, task.endTime)
80-
}
81-
return max
96+
var maxTime: Float
97+
get() = mMaxTime
98+
set(value) {
99+
mMaxTime = value
82100
}
83101

84102
/**
85103
* Clear all tasks.
86104
*/
87105
fun clearTasks() {
88106
tasks.clear()
107+
mMinTime = calcMinTime()
108+
mMaxTime = calcMaxTime()
89109
}
90110
}

0 commit comments

Comments
 (0)