Merge branch 'dev' into dialogs
This commit is contained in:
commit
3a6f29d1dc
9 changed files with 73 additions and 45 deletions
|
@ -82,4 +82,11 @@ public class Constants {
|
|||
public static final double LOWMARK = 76.0;
|
||||
public static final double HIGHMARK = 180.0;
|
||||
|
||||
// STATISTICS
|
||||
public static final double STATS_TARGET_LOW_MMOL = 3.9;
|
||||
public static final double STATS_TARGET_HIGH_MMOL = 7.8;
|
||||
public static final double STATS_RANGE_LOW_MMOL = 3.9;
|
||||
public static final double STATS_RANGE_HIGH_MMOL = 10.0;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@ import info.nightscout.androidaps.utils.TddCalculator
|
|||
import info.nightscout.androidaps.utils.TirCalculator
|
||||
import kotlinx.android.synthetic.main.stats_activity.*
|
||||
|
||||
|
||||
class StatsActivity : NoSplashAppCompatActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
|
|
@ -10,7 +10,7 @@ import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
|
|||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions
|
||||
import info.nightscout.androidaps.dialogs.ProfileViewerDialog
|
||||
import info.nightscout.androidaps.utils.*
|
||||
import kotlinx.android.synthetic.main.survey_fragment.*
|
||||
import kotlinx.android.synthetic.main.survey_activity.*
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
class SurveyActivity : NoSplashAppCompatActivity() {
|
||||
|
@ -18,7 +18,7 @@ class SurveyActivity : NoSplashAppCompatActivity() {
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.survey_fragment)
|
||||
setContentView(R.layout.survey_activity)
|
||||
|
||||
survey_id.text = InstanceId.instanceId()
|
||||
|
||||
|
@ -84,7 +84,7 @@ class SurveyActivity : NoSplashAppCompatActivity() {
|
|||
.addOnCompleteListener(this) { task ->
|
||||
if (task.isSuccessful) {
|
||||
log.debug("signInAnonymously:success")
|
||||
val user = auth.currentUser
|
||||
val user = auth.currentUser // TODO: do we need this, seems unused?
|
||||
|
||||
val database = FirebaseDatabase.getInstance().reference
|
||||
database.child("survey").child(r.id).setValue(r)
|
||||
|
|
|
@ -47,7 +47,7 @@ class ProfileStore(val data: JSONObject) {
|
|||
if (profile == null) {
|
||||
JsonHelper.safeGetJSONObject(store, profileName, null)?.let { profileObject ->
|
||||
// take units from profile and if N/A from store
|
||||
JsonHelper.safeGetStringAllowNull(profileObject, "units", JsonHelper.safeGetString(store, "units"))?.let { units ->
|
||||
JsonHelper.safeGetStringAllowNull(profileObject, "units", JsonHelper.safeGetString(data, "units"))?.let { units ->
|
||||
profile = Profile(profileObject, units)
|
||||
cachedObjects[profileName] = profile
|
||||
}
|
||||
|
|
|
@ -1602,15 +1602,14 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
|||
queryBuilder.limit(100L);
|
||||
Where where = queryBuilder.where();
|
||||
where.ge("date", from);
|
||||
queryBuilder.setCountOf(true);
|
||||
PreparedQuery<ProfileSwitch> preparedQuery = queryBuilder.prepare();
|
||||
long count = daoProfileSwitch.countOf(preparedQuery);
|
||||
// now do query of count + 1
|
||||
queryBuilder = daoProfileSwitch.queryBuilder();
|
||||
queryBuilder.orderBy("date", ascending);
|
||||
queryBuilder.limit(count + 1);
|
||||
preparedQuery = queryBuilder.prepare();
|
||||
profileSwitches = daoProfileSwitch.query(preparedQuery);
|
||||
//add last one without duration
|
||||
ProfileSwitch last = getLastProfileSwitchWithoutDuration();
|
||||
if (last != null) {
|
||||
if (!profileSwitches.contains(last))
|
||||
profileSwitches.add(last);
|
||||
}
|
||||
return profileSwitches;
|
||||
} catch (SQLException e) {
|
||||
log.error("Unhandled exception", e);
|
||||
|
@ -1618,6 +1617,28 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
|||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private ProfileSwitch getLastProfileSwitchWithoutDuration() {
|
||||
try {
|
||||
Dao<ProfileSwitch, Long> daoProfileSwitch = getDaoProfileSwitch();
|
||||
List<ProfileSwitch> profileSwitches;
|
||||
QueryBuilder<ProfileSwitch, Long> queryBuilder = daoProfileSwitch.queryBuilder();
|
||||
queryBuilder.orderBy("date", false);
|
||||
queryBuilder.limit(1L);
|
||||
Where where = queryBuilder.where();
|
||||
where.eq("durationInMinutes", 0);
|
||||
PreparedQuery<ProfileSwitch> preparedQuery = queryBuilder.prepare();
|
||||
profileSwitches = daoProfileSwitch.query(preparedQuery);
|
||||
if (profileSwitches.size() > 0)
|
||||
return profileSwitches.get(0);
|
||||
else
|
||||
return null;
|
||||
} catch (SQLException e) {
|
||||
log.error("Unhandled exception", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<ProfileSwitch> getProfileSwitchEventsFromTime(long mills, boolean ascending) {
|
||||
try {
|
||||
Dao<ProfileSwitch, Long> daoProfileSwitch = getDaoProfileSwitch();
|
||||
|
|
|
@ -19,7 +19,6 @@ object TddCalculator : TreatmentsPlugin() {
|
|||
val endTime = MidnightTime.calc(DateUtil.now())
|
||||
initializeData(range)
|
||||
|
||||
|
||||
val result = LongSparseArray<TDD>()
|
||||
for (t in treatmentsFromHistory) {
|
||||
if (!t.isValid) continue
|
||||
|
|
|
@ -32,9 +32,11 @@ object TirCalculator {
|
|||
}
|
||||
|
||||
fun averageTIR(tirs: LongSparseArray<TIR>): TIR {
|
||||
val totalTir =
|
||||
if (tirs.size() > 0) TIR(tirs.valueAt(0).date, tirs.valueAt(0).lowThreshold, tirs.valueAt(0).highThreshold)
|
||||
else TIR(7, 70.0, 180.0)
|
||||
val totalTir = if (tirs.size() > 0) {
|
||||
TIR(tirs.valueAt(0).date, tirs.valueAt(0).lowThreshold, tirs.valueAt(0).highThreshold)
|
||||
} else {
|
||||
TIR(7, 70.0, 180.0)
|
||||
}
|
||||
for (i in 0 until tirs.size()) {
|
||||
val tir = tirs.valueAt(i)
|
||||
totalTir.below += tir.below
|
||||
|
@ -47,10 +49,10 @@ object TirCalculator {
|
|||
}
|
||||
|
||||
fun stats(): Spanned {
|
||||
val lowTirMgdl = 3.9 * Constants.MMOLL_TO_MGDL
|
||||
val highTirMgdl = 10.0 * Constants.MMOLL_TO_MGDL
|
||||
val lowTitMgdl = 3.9 * Constants.MMOLL_TO_MGDL
|
||||
val highTitMgdl = 7.8 * Constants.MMOLL_TO_MGDL
|
||||
val lowTirMgdl = Constants.STATS_RANGE_LOW_MMOL * Constants.MMOLL_TO_MGDL
|
||||
val highTirMgdl = Constants.STATS_RANGE_HIGH_MMOL * Constants.MMOLL_TO_MGDL
|
||||
val lowTitMgdl = Constants.STATS_TARGET_LOW_MMOL * Constants.MMOLL_TO_MGDL
|
||||
val highTitMgdl = Constants.STATS_TARGET_HIGH_MMOL * Constants.MMOLL_TO_MGDL
|
||||
|
||||
val tir7 = calculate(7, lowTirMgdl, highTirMgdl)
|
||||
val averageTir7 = averageTIR(tir7)
|
||||
|
|
Loading…
Reference in a new issue