Merge pull request #2910 from Philoul/CompareTargets
Compare targets improvements in ProfileViewerDialog (PROFILE_COMPARE mode)
This commit is contained in:
commit
46b7c45920
|
@ -544,6 +544,10 @@ public class Profile {
|
||||||
return getValueToTime(targetLow_v, timeAsSeconds);
|
return getValueToTime(targetLow_v, timeAsSeconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double getTargetLowMgdlTimeFromMidnight(int timeAsSeconds) {
|
||||||
|
return toMgdl(getTargetLowTimeFromMidnight(timeAsSeconds), units);
|
||||||
|
}
|
||||||
|
|
||||||
public double getTargetHighMgdl() {
|
public double getTargetHighMgdl() {
|
||||||
return toMgdl(getTargetHighTimeFromMidnight(secondsFromMidnight()), units);
|
return toMgdl(getTargetHighTimeFromMidnight(secondsFromMidnight()), units);
|
||||||
}
|
}
|
||||||
|
@ -558,6 +562,10 @@ public class Profile {
|
||||||
return getValueToTime(targetHigh_v, timeAsSeconds);
|
return getValueToTime(targetHigh_v, timeAsSeconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double getTargetHighMgdlTimeFromMidnight(int timeAsSeconds) {
|
||||||
|
return toMgdl(getTargetHighTimeFromMidnight(timeAsSeconds), units);
|
||||||
|
}
|
||||||
|
|
||||||
public class TargetValue {
|
public class TargetValue {
|
||||||
TargetValue(int timeAsSeconds, double low, double high) {
|
TargetValue(int timeAsSeconds, double low, double high) {
|
||||||
this.timeAsSeconds = timeAsSeconds;
|
this.timeAsSeconds = timeAsSeconds;
|
||||||
|
|
|
@ -14,7 +14,9 @@ import info.nightscout.androidaps.core.R
|
||||||
import info.nightscout.androidaps.data.Profile
|
import info.nightscout.androidaps.data.Profile
|
||||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||||
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
|
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
|
||||||
|
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||||
import info.nightscout.androidaps.utils.DateUtil
|
import info.nightscout.androidaps.utils.DateUtil
|
||||||
|
import info.nightscout.androidaps.utils.DecimalFormatter
|
||||||
import info.nightscout.androidaps.utils.HtmlHelper
|
import info.nightscout.androidaps.utils.HtmlHelper
|
||||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||||
import kotlinx.android.synthetic.main.close.*
|
import kotlinx.android.synthetic.main.close.*
|
||||||
|
@ -28,6 +30,7 @@ class ProfileViewerDialog : DaggerDialogFragment() {
|
||||||
@Inject lateinit var resourceHelper: ResourceHelper
|
@Inject lateinit var resourceHelper: ResourceHelper
|
||||||
@Inject lateinit var activePlugin: ActivePluginProvider
|
@Inject lateinit var activePlugin: ActivePluginProvider
|
||||||
@Inject lateinit var dateUtil: DateUtil
|
@Inject lateinit var dateUtil: DateUtil
|
||||||
|
@Inject lateinit var profileFunction: ProfileFunction
|
||||||
@Inject lateinit var databaseHelper: DatabaseHelperInterface
|
@Inject lateinit var databaseHelper: DatabaseHelperInterface
|
||||||
|
|
||||||
private var time: Long = 0
|
private var time: Long = 0
|
||||||
|
@ -85,7 +88,7 @@ class ProfileViewerDialog : DaggerDialogFragment() {
|
||||||
profileview_datelayout.visibility = View.VISIBLE
|
profileview_datelayout.visibility = View.VISIBLE
|
||||||
}
|
}
|
||||||
|
|
||||||
Mode.CUSTOM_PROFILE -> {
|
Mode.CUSTOM_PROFILE -> {
|
||||||
profile = Profile(injector, JSONObject(customProfileJson), customProfileUnits)
|
profile = Profile(injector, JSONObject(customProfileJson), customProfileUnits)
|
||||||
profile2 = null
|
profile2 = null
|
||||||
profileName = customProfileName
|
profileName = customProfileName
|
||||||
|
@ -102,7 +105,7 @@ class ProfileViewerDialog : DaggerDialogFragment() {
|
||||||
profileview_datelayout.visibility = View.GONE
|
profileview_datelayout.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
Mode.DB_PROFILE -> {
|
Mode.DB_PROFILE -> {
|
||||||
val profileList = databaseHelper.getProfileSwitchData(time, true)
|
val profileList = databaseHelper.getProfileSwitchData(time, true)
|
||||||
profile = if (profileList.isNotEmpty()) profileList[0].profileObject else null
|
profile = if (profileList.isNotEmpty()) profileList[0].profileObject else null
|
||||||
profile2 = null
|
profile2 = null
|
||||||
|
@ -116,7 +119,7 @@ class ProfileViewerDialog : DaggerDialogFragment() {
|
||||||
if (mode == Mode.PROFILE_COMPARE)
|
if (mode == Mode.PROFILE_COMPARE)
|
||||||
profile?.let { profile1 ->
|
profile?.let { profile1 ->
|
||||||
profile2?.let { profile2 ->
|
profile2?.let { profile2 ->
|
||||||
profileview_units.text = profile1.units
|
profileview_units.text = profileFunction.getUnits()
|
||||||
profileview_dia.text = HtmlHelper.fromHtml(formatColors("", profile1.dia, profile1.dia, DecimalFormat("0.00"), resourceHelper.gs(R.string.shorthour)))
|
profileview_dia.text = HtmlHelper.fromHtml(formatColors("", profile1.dia, profile1.dia, DecimalFormat("0.00"), resourceHelper.gs(R.string.shorthour)))
|
||||||
val profileNames =profileName!!.split("\n").toTypedArray()
|
val profileNames =profileName!!.split("\n").toTypedArray()
|
||||||
profileview_activeprofile.text = HtmlHelper.fromHtml(formatColors(profileNames[0], profileNames[1]))
|
profileview_activeprofile.text = HtmlHelper.fromHtml(formatColors(profileNames[0], profileNames[1]))
|
||||||
|
@ -124,7 +127,7 @@ class ProfileViewerDialog : DaggerDialogFragment() {
|
||||||
profileview_ic.text = ics(profile1, profile2)
|
profileview_ic.text = ics(profile1, profile2)
|
||||||
profileview_isf.text = isfs(profile1, profile2)
|
profileview_isf.text = isfs(profile1, profile2)
|
||||||
profileview_basal.text = basals(profile1, profile2)
|
profileview_basal.text = basals(profile1, profile2)
|
||||||
profileview_target.text = HtmlHelper.fromHtml(formatColors("", profile1.targetList.replace("\n","<br>") + "<br>", profile2.targetList.replace("\n","<br>"), ""))
|
profileview_target.text = targets(profile1, profile2)
|
||||||
basal_graph.show(profile1, profile2)
|
basal_graph.show(profile1, profile2)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,23 +226,50 @@ class ProfileViewerDialog : DaggerDialogFragment() {
|
||||||
prev1 = val1
|
prev1 = val1
|
||||||
prev2 = val2
|
prev2 = val2
|
||||||
}
|
}
|
||||||
return HtmlHelper.fromHtml(s.toString())
|
return HtmlHelper.fromHtml(s.delete(s.length-4, s.length).toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isfs(profile1: Profile, profile2: Profile): Spanned {
|
private fun isfs(profile1: Profile, profile2: Profile): Spanned {
|
||||||
var prev1 = 0.0
|
var prev1 = 0.0
|
||||||
var prev2 = 0.0
|
var prev2 = 0.0
|
||||||
|
val units = profileFunction.getUnits()
|
||||||
val s = StringBuilder()
|
val s = StringBuilder()
|
||||||
for (hour in 0..23) {
|
for (hour in 0..23) {
|
||||||
val val1 = Profile.fromMgdlToUnits(profile1.getIsfMgdlTimeFromMidnight(hour * 60 * 60), profile1.units)
|
val val1 = Profile.fromMgdlToUnits(profile1.getIsfMgdlTimeFromMidnight(hour * 60 * 60), units)
|
||||||
val val2 = Profile.fromMgdlToUnits(profile2.getIsfMgdlTimeFromMidnight(hour * 60 * 60), profile1.units)
|
val val2 = Profile.fromMgdlToUnits(profile2.getIsfMgdlTimeFromMidnight(hour * 60 * 60), units)
|
||||||
if (val1 != prev1 || val2 != prev2) {
|
if (val1 != prev1 || val2 != prev2) {
|
||||||
s.append(formatColors(Profile.format_HH_MM(hour * 60 * 60), val1, val2, DecimalFormat("0.0"), profile1.units + " " + resourceHelper.gs(R.string.profile_per_unit)))
|
s.append(formatColors(Profile.format_HH_MM(hour * 60 * 60), val1, val2, DecimalFormat("0.0"), units + " " + resourceHelper.gs(R.string.profile_per_unit)))
|
||||||
s.append("<br>")
|
s.append("<br>")
|
||||||
}
|
}
|
||||||
prev1 = val1
|
prev1 = val1
|
||||||
prev2 = val2
|
prev2 = val2
|
||||||
}
|
}
|
||||||
return HtmlHelper.fromHtml(s.toString())
|
return HtmlHelper.fromHtml(s.delete(s.length-4, s.length).toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun targets(profile1: Profile, profile2: Profile):Spanned {
|
||||||
|
var prev1l = 0.0
|
||||||
|
var prev1h = 0.0
|
||||||
|
var prev2l = 0.0
|
||||||
|
var prev2h = 0.0
|
||||||
|
val units = profileFunction.getUnits()
|
||||||
|
val s = StringBuilder()
|
||||||
|
for (hour in 0..23) {
|
||||||
|
val val1l = profile1.getTargetLowMgdlTimeFromMidnight(hour * 60 * 60)
|
||||||
|
val val1h = profile1.getTargetHighMgdlTimeFromMidnight(hour * 60 * 60)
|
||||||
|
val val2l = profile2.getTargetLowMgdlTimeFromMidnight(hour * 60 * 60)
|
||||||
|
val val2h = profile2.getTargetHighMgdlTimeFromMidnight(hour * 60 * 60)
|
||||||
|
val txt1 = Profile.format_HH_MM(hour * 60 * 60) + " " + Profile.toUnitsString(val1l, val1l * Constants.MGDL_TO_MMOLL, units) + " - " + Profile.toUnitsString(val1h, val1h * Constants.MGDL_TO_MMOLL, units) + " " + units
|
||||||
|
val txt2 = Profile.format_HH_MM(hour * 60 * 60) + " " + Profile.toUnitsString(val2l, val2l * Constants.MGDL_TO_MMOLL, units) + " - " + Profile.toUnitsString(val2h, val2h * Constants.MGDL_TO_MMOLL, units) + " " + units
|
||||||
|
if (val1l != prev1l || val1h != prev1h || val2l != prev2l || val2h != prev2h ) {
|
||||||
|
s.append(formatColors(txt1, txt2))
|
||||||
|
s.append("<br>")
|
||||||
|
}
|
||||||
|
prev1l = val1l
|
||||||
|
prev1h = val1h
|
||||||
|
prev2l = val2l
|
||||||
|
prev2h = val2h
|
||||||
|
}
|
||||||
|
return HtmlHelper.fromHtml(s.delete(s.length-4, s.length).toString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue