TDDStatsActivity
This commit is contained in:
parent
d6f4242548
commit
f3a03cb17b
1 changed files with 255 additions and 277 deletions
|
@ -4,7 +4,6 @@ import android.graphics.Color;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.KeyEvent;
|
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
@ -26,10 +25,10 @@ import java.text.DecimalFormat;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
@ -38,10 +37,10 @@ import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.Profile;
|
import info.nightscout.androidaps.data.Profile;
|
||||||
import info.nightscout.androidaps.db.TDD;
|
import info.nightscout.androidaps.db.TDD;
|
||||||
import info.nightscout.androidaps.events.EventPumpStatusChanged;
|
import info.nightscout.androidaps.events.EventPumpStatusChanged;
|
||||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
|
||||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
|
||||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
||||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
|
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
|
||||||
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin;
|
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin;
|
||||||
import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRSyncStatus;
|
import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRSyncStatus;
|
||||||
import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin;
|
import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin;
|
||||||
|
@ -49,16 +48,24 @@ import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin;
|
||||||
import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin;
|
import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin;
|
||||||
import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin;
|
import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin;
|
||||||
import info.nightscout.androidaps.queue.Callback;
|
import info.nightscout.androidaps.queue.Callback;
|
||||||
import info.nightscout.androidaps.utils.DecimalFormatter;
|
|
||||||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||||
import info.nightscout.androidaps.utils.SP;
|
|
||||||
import info.nightscout.androidaps.utils.SafeParse;
|
import info.nightscout.androidaps.utils.SafeParse;
|
||||||
import info.nightscout.androidaps.utils.resources.ResourceHelper;
|
import info.nightscout.androidaps.utils.resources.ResourceHelper;
|
||||||
|
import info.nightscout.androidaps.utils.sharedPreferences.SP;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.CompositeDisposable;
|
import io.reactivex.disposables.CompositeDisposable;
|
||||||
|
|
||||||
public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
@Inject ResourceHelper resourceHelper;
|
@Inject ResourceHelper resourceHelper;
|
||||||
|
@Inject RxBusWrapper rxBus;
|
||||||
|
@Inject SP sp;
|
||||||
|
@Inject ProfileFunction profileFunction;
|
||||||
|
@Inject ActivePluginProvider activePluginProvider;
|
||||||
|
@Inject DanaRSPlugin danaRSPlugin;
|
||||||
|
@Inject DanaRPlugin danaRPlugin;
|
||||||
|
@Inject DanaRv2Plugin danaRv2Plugin;
|
||||||
|
@Inject DanaRKoreanPlugin danaRKoreanPlugin;
|
||||||
|
@Inject ConfigBuilderPlugin configBuilderPlugin;
|
||||||
|
|
||||||
private static Logger log = LoggerFactory.getLogger(TDDStatsActivity.class);
|
private static Logger log = LoggerFactory.getLogger(TDDStatsActivity.class);
|
||||||
private CompositeDisposable disposable = new CompositeDisposable();
|
private CompositeDisposable disposable = new CompositeDisposable();
|
||||||
|
@ -82,12 +89,12 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
disposable.add(RxBus.Companion.getINSTANCE()
|
disposable.add(rxBus
|
||||||
.toObservable(EventPumpStatusChanged.class)
|
.toObservable(EventPumpStatusChanged.class)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(event -> statusView.setText(event.getStatus(resourceHelper)), exception -> FabricPrivacy.getInstance().logException(exception))
|
.subscribe(event -> statusView.setText(event.getStatus(resourceHelper)), exception -> FabricPrivacy.getInstance().logException(exception))
|
||||||
);
|
);
|
||||||
disposable.add(RxBus.Companion.getINSTANCE()
|
disposable.add(rxBus
|
||||||
.toObservable(EventDanaRSyncStatus.class)
|
.toObservable(EventDanaRSyncStatus.class)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(event -> {
|
.subscribe(event -> {
|
||||||
|
@ -123,11 +130,11 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.danar_statsactivity);
|
setContentView(R.layout.danar_statsactivity);
|
||||||
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
|
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
|
||||||
statusView = (TextView) findViewById(R.id.danar_stats_connection_status);
|
statusView = findViewById(R.id.danar_stats_connection_status);
|
||||||
reloadButton = (Button) findViewById(R.id.danar_statsreload);
|
reloadButton = findViewById(R.id.danar_statsreload);
|
||||||
totalBaseBasal = (EditText) findViewById(R.id.danar_stats_editTotalBaseBasal);
|
totalBaseBasal = findViewById(R.id.danar_stats_editTotalBaseBasal);
|
||||||
totalBaseBasal2 = (TextView) findViewById(R.id.danar_stats_editTotalBaseBasal2);
|
totalBaseBasal2 = findViewById(R.id.danar_stats_editTotalBaseBasal2);
|
||||||
statsMessage = (TextView) findViewById(R.id.danar_stats_Message);
|
statsMessage = findViewById(R.id.danar_stats_Message);
|
||||||
|
|
||||||
statusView.setVisibility(View.GONE);
|
statusView.setVisibility(View.GONE);
|
||||||
statsMessage.setVisibility(View.GONE);
|
statsMessage.setVisibility(View.GONE);
|
||||||
|
@ -140,21 +147,21 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
decimalFormat = new DecimalFormat("0.000");
|
decimalFormat = new DecimalFormat("0.000");
|
||||||
llm = new LinearLayoutManager(this);
|
llm = new LinearLayoutManager(this);
|
||||||
|
|
||||||
TBB = SP.getString("TBB", "10.00");
|
TBB = sp.getString("TBB", "10.00");
|
||||||
|
|
||||||
Profile profile = ProfileFunctions.getInstance().getProfile();
|
Profile profile = profileFunction.getProfile();
|
||||||
if (profile != null) {
|
if (profile != null) {
|
||||||
double cppTBB = profile.baseBasalSum();
|
double cppTBB = profile.baseBasalSum();
|
||||||
TBB = decimalFormat.format(cppTBB);
|
TBB = decimalFormat.format(cppTBB);
|
||||||
SP.putString("TBB", TBB);
|
sp.putString("TBB", TBB);
|
||||||
}
|
}
|
||||||
totalBaseBasal.setText(TBB);
|
totalBaseBasal.setText(TBB);
|
||||||
|
|
||||||
if (!ConfigBuilderPlugin.getPlugin().getActivePump().getPumpDescription().needsManualTDDLoad)
|
if (!activePluginProvider.getActivePump().getPumpDescription().needsManualTDDLoad)
|
||||||
reloadButton.setVisibility(View.GONE);
|
reloadButton.setVisibility(View.GONE);
|
||||||
|
|
||||||
// stats table
|
// stats table
|
||||||
tl = (TableLayout) findViewById(R.id.main_table);
|
tl = findViewById(R.id.main_table);
|
||||||
TableRow tr_head = new TableRow(this);
|
TableRow tr_head = new TableRow(this);
|
||||||
tr_head.setBackgroundColor(Color.DKGRAY);
|
tr_head.setBackgroundColor(Color.DKGRAY);
|
||||||
tr_head.setLayoutParams(new TableLayout.LayoutParams(
|
tr_head.setLayoutParams(new TableLayout.LayoutParams(
|
||||||
|
@ -162,27 +169,27 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
TableLayout.LayoutParams.WRAP_CONTENT));
|
TableLayout.LayoutParams.WRAP_CONTENT));
|
||||||
|
|
||||||
TextView label_date = new TextView(this);
|
TextView label_date = new TextView(this);
|
||||||
label_date.setText(MainApp.gs(R.string.danar_stats_date));
|
label_date.setText(resourceHelper.gs(R.string.danar_stats_date));
|
||||||
label_date.setTextColor(Color.WHITE);
|
label_date.setTextColor(Color.WHITE);
|
||||||
tr_head.addView(label_date);
|
tr_head.addView(label_date);
|
||||||
|
|
||||||
TextView label_basalrate = new TextView(this);
|
TextView label_basalrate = new TextView(this);
|
||||||
label_basalrate.setText(MainApp.gs(R.string.danar_stats_basalrate));
|
label_basalrate.setText(resourceHelper.gs(R.string.danar_stats_basalrate));
|
||||||
label_basalrate.setTextColor(Color.WHITE);
|
label_basalrate.setTextColor(Color.WHITE);
|
||||||
tr_head.addView(label_basalrate);
|
tr_head.addView(label_basalrate);
|
||||||
|
|
||||||
TextView label_bolus = new TextView(this);
|
TextView label_bolus = new TextView(this);
|
||||||
label_bolus.setText(MainApp.gs(R.string.danar_stats_bolus));
|
label_bolus.setText(resourceHelper.gs(R.string.danar_stats_bolus));
|
||||||
label_bolus.setTextColor(Color.WHITE);
|
label_bolus.setTextColor(Color.WHITE);
|
||||||
tr_head.addView(label_bolus);
|
tr_head.addView(label_bolus);
|
||||||
|
|
||||||
TextView label_tdd = new TextView(this);
|
TextView label_tdd = new TextView(this);
|
||||||
label_tdd.setText(MainApp.gs(R.string.danar_stats_tdd));
|
label_tdd.setText(resourceHelper.gs(R.string.danar_stats_tdd));
|
||||||
label_tdd.setTextColor(Color.WHITE);
|
label_tdd.setTextColor(Color.WHITE);
|
||||||
tr_head.addView(label_tdd);
|
tr_head.addView(label_tdd);
|
||||||
|
|
||||||
TextView label_ratio = new TextView(this);
|
TextView label_ratio = new TextView(this);
|
||||||
label_ratio.setText(MainApp.gs(R.string.danar_stats_ratio));
|
label_ratio.setText(resourceHelper.gs(R.string.danar_stats_ratio));
|
||||||
label_ratio.setTextColor(Color.WHITE);
|
label_ratio.setTextColor(Color.WHITE);
|
||||||
tr_head.addView(label_ratio);
|
tr_head.addView(label_ratio);
|
||||||
|
|
||||||
|
@ -192,7 +199,7 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
TableLayout.LayoutParams.WRAP_CONTENT));
|
TableLayout.LayoutParams.WRAP_CONTENT));
|
||||||
|
|
||||||
// cumulative table
|
// cumulative table
|
||||||
ctl = (TableLayout) findViewById(R.id.cumulative_table);
|
ctl = findViewById(R.id.cumulative_table);
|
||||||
TableRow ctr_head = new TableRow(this);
|
TableRow ctr_head = new TableRow(this);
|
||||||
ctr_head.setBackgroundColor(Color.DKGRAY);
|
ctr_head.setBackgroundColor(Color.DKGRAY);
|
||||||
ctr_head.setLayoutParams(new TableLayout.LayoutParams(
|
ctr_head.setLayoutParams(new TableLayout.LayoutParams(
|
||||||
|
@ -200,17 +207,17 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
TableLayout.LayoutParams.WRAP_CONTENT));
|
TableLayout.LayoutParams.WRAP_CONTENT));
|
||||||
|
|
||||||
TextView label_cum_amount_days = new TextView(this);
|
TextView label_cum_amount_days = new TextView(this);
|
||||||
label_cum_amount_days.setText(MainApp.gs(R.string.danar_stats_amount_days));
|
label_cum_amount_days.setText(resourceHelper.gs(R.string.danar_stats_amount_days));
|
||||||
label_cum_amount_days.setTextColor(Color.WHITE);
|
label_cum_amount_days.setTextColor(Color.WHITE);
|
||||||
ctr_head.addView(label_cum_amount_days);
|
ctr_head.addView(label_cum_amount_days);
|
||||||
|
|
||||||
TextView label_cum_tdd = new TextView(this);
|
TextView label_cum_tdd = new TextView(this);
|
||||||
label_cum_tdd.setText(MainApp.gs(R.string.danar_stats_tdd));
|
label_cum_tdd.setText(resourceHelper.gs(R.string.danar_stats_tdd));
|
||||||
label_cum_tdd.setTextColor(Color.WHITE);
|
label_cum_tdd.setTextColor(Color.WHITE);
|
||||||
ctr_head.addView(label_cum_tdd);
|
ctr_head.addView(label_cum_tdd);
|
||||||
|
|
||||||
TextView label_cum_ratio = new TextView(this);
|
TextView label_cum_ratio = new TextView(this);
|
||||||
label_cum_ratio.setText(MainApp.gs(R.string.danar_stats_ratio));
|
label_cum_ratio.setText(resourceHelper.gs(R.string.danar_stats_ratio));
|
||||||
label_cum_ratio.setTextColor(Color.WHITE);
|
label_cum_ratio.setTextColor(Color.WHITE);
|
||||||
ctr_head.addView(label_cum_ratio);
|
ctr_head.addView(label_cum_ratio);
|
||||||
|
|
||||||
|
@ -220,7 +227,7 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
TableLayout.LayoutParams.WRAP_CONTENT));
|
TableLayout.LayoutParams.WRAP_CONTENT));
|
||||||
|
|
||||||
// expontial table
|
// expontial table
|
||||||
etl = (TableLayout) findViewById(R.id.expweight_table);
|
etl = findViewById(R.id.expweight_table);
|
||||||
TableRow etr_head = new TableRow(this);
|
TableRow etr_head = new TableRow(this);
|
||||||
etr_head.setBackgroundColor(Color.DKGRAY);
|
etr_head.setBackgroundColor(Color.DKGRAY);
|
||||||
etr_head.setLayoutParams(new TableLayout.LayoutParams(
|
etr_head.setLayoutParams(new TableLayout.LayoutParams(
|
||||||
|
@ -228,17 +235,17 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
TableLayout.LayoutParams.WRAP_CONTENT));
|
TableLayout.LayoutParams.WRAP_CONTENT));
|
||||||
|
|
||||||
TextView label_exp_weight = new TextView(this);
|
TextView label_exp_weight = new TextView(this);
|
||||||
label_exp_weight.setText(MainApp.gs(R.string.danar_stats_weight));
|
label_exp_weight.setText(resourceHelper.gs(R.string.danar_stats_weight));
|
||||||
label_exp_weight.setTextColor(Color.WHITE);
|
label_exp_weight.setTextColor(Color.WHITE);
|
||||||
etr_head.addView(label_exp_weight);
|
etr_head.addView(label_exp_weight);
|
||||||
|
|
||||||
TextView label_exp_tdd = new TextView(this);
|
TextView label_exp_tdd = new TextView(this);
|
||||||
label_exp_tdd.setText(MainApp.gs(R.string.danar_stats_tdd));
|
label_exp_tdd.setText(resourceHelper.gs(R.string.danar_stats_tdd));
|
||||||
label_exp_tdd.setTextColor(Color.WHITE);
|
label_exp_tdd.setTextColor(Color.WHITE);
|
||||||
etr_head.addView(label_exp_tdd);
|
etr_head.addView(label_exp_tdd);
|
||||||
|
|
||||||
TextView label_exp_ratio = new TextView(this);
|
TextView label_exp_ratio = new TextView(this);
|
||||||
label_exp_ratio.setText(MainApp.gs(R.string.danar_stats_ratio));
|
label_exp_ratio.setText(resourceHelper.gs(R.string.danar_stats_ratio));
|
||||||
label_exp_ratio.setTextColor(Color.WHITE);
|
label_exp_ratio.setTextColor(Color.WHITE);
|
||||||
etr_head.addView(label_exp_ratio);
|
etr_head.addView(label_exp_ratio);
|
||||||
|
|
||||||
|
@ -247,58 +254,43 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
TableLayout.LayoutParams.MATCH_PARENT,
|
TableLayout.LayoutParams.MATCH_PARENT,
|
||||||
TableLayout.LayoutParams.WRAP_CONTENT));
|
TableLayout.LayoutParams.WRAP_CONTENT));
|
||||||
|
|
||||||
reloadButton.setOnClickListener(new View.OnClickListener() {
|
reloadButton.setOnClickListener(v -> {
|
||||||
@Override
|
runOnUiThread(() -> {
|
||||||
public void onClick(View v) {
|
reloadButton.setVisibility(View.GONE);
|
||||||
runOnUiThread(new Runnable() {
|
statusView.setVisibility(View.VISIBLE);
|
||||||
@Override
|
statsMessage.setVisibility(View.VISIBLE);
|
||||||
public void run() {
|
statsMessage.setText(resourceHelper.gs(R.string.danar_stats_warning_Message));
|
||||||
reloadButton.setVisibility(View.GONE);
|
});
|
||||||
statusView.setVisibility(View.VISIBLE);
|
configBuilderPlugin.getCommandQueue().loadTDDs(new Callback() {
|
||||||
statsMessage.setVisibility(View.VISIBLE);
|
@Override
|
||||||
statsMessage.setText(MainApp.gs(R.string.danar_stats_warning_Message));
|
public void run() {
|
||||||
}
|
|
||||||
});
|
|
||||||
ConfigBuilderPlugin.getPlugin().getCommandQueue().loadTDDs(new Callback() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
loadDataFromDB();
|
|
||||||
runOnUiThread(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
reloadButton.setVisibility(View.VISIBLE);
|
|
||||||
statusView.setVisibility(View.GONE);
|
|
||||||
statsMessage.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
totalBaseBasal.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
|
||||||
@Override
|
|
||||||
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
|
||||||
if (actionId == EditorInfo.IME_ACTION_DONE) {
|
|
||||||
totalBaseBasal.clearFocus();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
totalBaseBasal.setOnFocusChangeListener(new View.OnFocusChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void onFocusChange(View v, boolean hasFocus) {
|
|
||||||
if (hasFocus) {
|
|
||||||
totalBaseBasal.getText().clear();
|
|
||||||
} else {
|
|
||||||
SP.putString("TBB", totalBaseBasal.getText().toString());
|
|
||||||
TBB = SP.getString("TBB", "");
|
|
||||||
loadDataFromDB();
|
loadDataFromDB();
|
||||||
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
|
runOnUiThread(() -> {
|
||||||
imm.hideSoftInputFromWindow(totalBaseBasal.getWindowToken(), 0);
|
reloadButton.setVisibility(View.VISIBLE);
|
||||||
|
statusView.setVisibility(View.GONE);
|
||||||
|
statsMessage.setVisibility(View.GONE);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
totalBaseBasal.setOnEditorActionListener((v, actionId, event) -> {
|
||||||
|
if (actionId == EditorInfo.IME_ACTION_DONE) {
|
||||||
|
totalBaseBasal.clearFocus();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
totalBaseBasal.setOnFocusChangeListener((v, hasFocus) -> {
|
||||||
|
if (hasFocus) {
|
||||||
|
totalBaseBasal.getText().clear();
|
||||||
|
} else {
|
||||||
|
sp.putString("TBB", totalBaseBasal.getText().toString());
|
||||||
|
TBB = sp.getString("TBB", "");
|
||||||
|
loadDataFromDB();
|
||||||
|
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
|
||||||
|
imm.hideSoftInputFromWindow(totalBaseBasal.getWindowToken(), 0);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -313,7 +305,7 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
|
|
||||||
//fill single gaps
|
//fill single gaps
|
||||||
dummies = new LinkedList();
|
dummies = new LinkedList();
|
||||||
DateFormat df = new SimpleDateFormat("dd.MM.");
|
DateFormat df = new SimpleDateFormat("dd.MM.", Locale.getDefault());
|
||||||
for (int i = 0; i < historyList.size() - 1; i++) {
|
for (int i = 0; i < historyList.size() - 1; i++) {
|
||||||
TDD elem1 = historyList.get(i);
|
TDD elem1 = historyList.get(i);
|
||||||
TDD elem2 = historyList.get(i + 1);
|
TDD elem2 = historyList.get(i + 1);
|
||||||
|
@ -329,205 +321,197 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
historyList.addAll(dummies);
|
historyList.addAll(dummies);
|
||||||
Collections.sort(historyList, new Comparator<TDD>() {
|
Collections.sort(historyList, (lhs, rhs) -> (int) (rhs.date - lhs.date));
|
||||||
@Override
|
|
||||||
public int compare(TDD lhs, TDD rhs) {
|
runOnUiThread(() -> {
|
||||||
return (int) (rhs.date - lhs.date);
|
cleanTable(tl);
|
||||||
|
cleanTable(ctl);
|
||||||
|
cleanTable(etl);
|
||||||
|
DateFormat df1 = new SimpleDateFormat("dd.MM.", Locale.getDefault());
|
||||||
|
|
||||||
|
if (TextUtils.isEmpty(TBB)) {
|
||||||
|
totalBaseBasal.setError("Please Enter Total Base Basal");
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
magicNumber = SafeParse.stringToDouble(TBB);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
runOnUiThread(new Runnable() {
|
magicNumber *= 2;
|
||||||
@Override
|
totalBaseBasal2.setText(decimalFormat.format(magicNumber));
|
||||||
public void run() {
|
|
||||||
cleanTable(tl);
|
|
||||||
cleanTable(ctl);
|
|
||||||
cleanTable(etl);
|
|
||||||
DateFormat df = new SimpleDateFormat("dd.MM.");
|
|
||||||
|
|
||||||
if (TextUtils.isEmpty(TBB)) {
|
int i = 0;
|
||||||
totalBaseBasal.setError("Please Enter Total Base Basal");
|
double sum = 0d;
|
||||||
return;
|
double weighted03 = 0d;
|
||||||
} else {
|
double weighted05 = 0d;
|
||||||
magicNumber = SafeParse.stringToDouble(TBB);
|
double weighted07 = 0d;
|
||||||
|
|
||||||
|
|
||||||
|
//TDD table
|
||||||
|
for (TDD record : historyList) {
|
||||||
|
double tdd = record.getTotal();
|
||||||
|
|
||||||
|
// Create the table row
|
||||||
|
TableRow tr = new TableRow(TDDStatsActivity.this);
|
||||||
|
if (i % 2 != 0) tr.setBackgroundColor(Color.DKGRAY);
|
||||||
|
if (dummies.contains(record)) {
|
||||||
|
tr.setBackgroundColor(Color.argb(125, 255, 0, 0));
|
||||||
}
|
}
|
||||||
|
tr.setId(100 + i);
|
||||||
magicNumber *= 2;
|
tr.setLayoutParams(new TableLayout.LayoutParams(
|
||||||
totalBaseBasal2.setText(decimalFormat.format(magicNumber));
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
double sum = 0d;
|
|
||||||
double weighted03 = 0d;
|
|
||||||
double weighted05 = 0d;
|
|
||||||
double weighted07 = 0d;
|
|
||||||
|
|
||||||
|
|
||||||
//TDD table
|
|
||||||
for (TDD record : historyList) {
|
|
||||||
double tdd = record.getTotal();
|
|
||||||
|
|
||||||
// Create the table row
|
|
||||||
TableRow tr = new TableRow(TDDStatsActivity.this);
|
|
||||||
if (i % 2 != 0) tr.setBackgroundColor(Color.DKGRAY);
|
|
||||||
if (dummies.contains(record)) {
|
|
||||||
tr.setBackgroundColor(Color.argb(125, 255, 0, 0));
|
|
||||||
}
|
|
||||||
tr.setId(100 + i);
|
|
||||||
tr.setLayoutParams(new TableLayout.LayoutParams(
|
|
||||||
TableLayout.LayoutParams.MATCH_PARENT,
|
|
||||||
TableLayout.LayoutParams.WRAP_CONTENT));
|
|
||||||
|
|
||||||
// Here create the TextView dynamically
|
|
||||||
TextView labelDATE = new TextView(TDDStatsActivity.this);
|
|
||||||
labelDATE.setId(200 + i);
|
|
||||||
labelDATE.setText(df.format(new Date(record.date)));
|
|
||||||
labelDATE.setTextColor(Color.WHITE);
|
|
||||||
tr.addView(labelDATE);
|
|
||||||
|
|
||||||
TextView labelBASAL = new TextView(TDDStatsActivity.this);
|
|
||||||
labelBASAL.setId(300 + i);
|
|
||||||
labelBASAL.setText(DecimalFormatter.to2Decimal(record.basal) + " U");
|
|
||||||
labelBASAL.setTextColor(Color.WHITE);
|
|
||||||
tr.addView(labelBASAL);
|
|
||||||
|
|
||||||
TextView labelBOLUS = new TextView(TDDStatsActivity.this);
|
|
||||||
labelBOLUS.setId(400 + i);
|
|
||||||
labelBOLUS.setText(DecimalFormatter.to2Decimal(record.bolus) + " U");
|
|
||||||
labelBOLUS.setTextColor(Color.WHITE);
|
|
||||||
tr.addView(labelBOLUS);
|
|
||||||
|
|
||||||
TextView labelTDD = new TextView(TDDStatsActivity.this);
|
|
||||||
labelTDD.setId(500 + i);
|
|
||||||
labelTDD.setText(DecimalFormatter.to2Decimal(tdd) + " U");
|
|
||||||
labelTDD.setTextColor(Color.WHITE);
|
|
||||||
tr.addView(labelTDD);
|
|
||||||
|
|
||||||
TextView labelRATIO = new TextView(TDDStatsActivity.this);
|
|
||||||
labelRATIO.setId(600 + i);
|
|
||||||
labelRATIO.setText(Math.round(100 * tdd / magicNumber) + " %");
|
|
||||||
labelRATIO.setTextColor(Color.WHITE);
|
|
||||||
tr.addView(labelRATIO);
|
|
||||||
|
|
||||||
// add stats rows to tables
|
|
||||||
tl.addView(tr, new TableLayout.LayoutParams(
|
|
||||||
TableLayout.LayoutParams.MATCH_PARENT,
|
|
||||||
TableLayout.LayoutParams.WRAP_CONTENT));
|
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
//cumulative TDDs
|
|
||||||
for (TDD record : historyList) {
|
|
||||||
if (!historyList.isEmpty() && df.format(new Date(record.date)).equals(df.format(new Date()))) {
|
|
||||||
//Today should not be included
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
|
|
||||||
sum = sum + record.getTotal();
|
|
||||||
|
|
||||||
// Create the cumtable row
|
|
||||||
TableRow ctr = new TableRow(TDDStatsActivity.this);
|
|
||||||
if (i % 2 == 0) ctr.setBackgroundColor(Color.DKGRAY);
|
|
||||||
ctr.setId(700 + i);
|
|
||||||
ctr.setLayoutParams(new TableLayout.LayoutParams(
|
|
||||||
TableLayout.LayoutParams.MATCH_PARENT,
|
|
||||||
TableLayout.LayoutParams.WRAP_CONTENT));
|
|
||||||
|
|
||||||
// Here create the TextView dynamically
|
|
||||||
TextView labelDAYS = new TextView(TDDStatsActivity.this);
|
|
||||||
labelDAYS.setId(800 + i);
|
|
||||||
labelDAYS.setText("" + i);
|
|
||||||
labelDAYS.setTextColor(Color.WHITE);
|
|
||||||
ctr.addView(labelDAYS);
|
|
||||||
|
|
||||||
TextView labelCUMTDD = new TextView(TDDStatsActivity.this);
|
|
||||||
labelCUMTDD.setId(900 + i);
|
|
||||||
labelCUMTDD.setText(DecimalFormatter.to2Decimal(sum / i) + " U");
|
|
||||||
labelCUMTDD.setTextColor(Color.WHITE);
|
|
||||||
ctr.addView(labelCUMTDD);
|
|
||||||
|
|
||||||
TextView labelCUMRATIO = new TextView(TDDStatsActivity.this);
|
|
||||||
labelCUMRATIO.setId(1000 + i);
|
|
||||||
labelCUMRATIO.setText(Math.round(100 * sum / i / magicNumber) + " %");
|
|
||||||
labelCUMRATIO.setTextColor(Color.WHITE);
|
|
||||||
ctr.addView(labelCUMRATIO);
|
|
||||||
|
|
||||||
// add cummulative rows to tables
|
|
||||||
ctl.addView(ctr, new TableLayout.LayoutParams(
|
|
||||||
TableLayout.LayoutParams.MATCH_PARENT,
|
|
||||||
TableLayout.LayoutParams.WRAP_CONTENT));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isOldData(historyList) && ConfigBuilderPlugin.getPlugin().getActivePump().getPumpDescription().needsManualTDDLoad) {
|
|
||||||
statsMessage.setVisibility(View.VISIBLE);
|
|
||||||
statsMessage.setText(MainApp.gs(R.string.danar_stats_olddata_Message));
|
|
||||||
|
|
||||||
} else {
|
|
||||||
tl.setBackgroundColor(Color.TRANSPARENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!historyList.isEmpty() && df.format(new Date(historyList.get(0).date)).equals(df.format(new Date()))) {
|
|
||||||
//Today should not be included
|
|
||||||
historyList.remove(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
Collections.reverse(historyList);
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
for (TDD record : historyList) {
|
|
||||||
double tdd = record.getTotal();
|
|
||||||
if (i == 0) {
|
|
||||||
weighted03 = tdd;
|
|
||||||
weighted05 = tdd;
|
|
||||||
weighted07 = tdd;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
weighted07 = (weighted07 * 0.3 + tdd * 0.7);
|
|
||||||
weighted05 = (weighted05 * 0.5 + tdd * 0.5);
|
|
||||||
weighted03 = (weighted03 * 0.7 + tdd * 0.3);
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the exptable row
|
|
||||||
TableRow etr = new TableRow(TDDStatsActivity.this);
|
|
||||||
if (i % 2 != 0) etr.setBackgroundColor(Color.DKGRAY);
|
|
||||||
etr.setId(1100 + i);
|
|
||||||
etr.setLayoutParams(new TableLayout.LayoutParams(
|
|
||||||
TableLayout.LayoutParams.MATCH_PARENT,
|
TableLayout.LayoutParams.MATCH_PARENT,
|
||||||
TableLayout.LayoutParams.WRAP_CONTENT));
|
TableLayout.LayoutParams.WRAP_CONTENT));
|
||||||
|
|
||||||
// Here create the TextView dynamically
|
// Here create the TextView dynamically
|
||||||
TextView labelWEIGHT = new TextView(TDDStatsActivity.this);
|
TextView labelDATE = new TextView(TDDStatsActivity.this);
|
||||||
labelWEIGHT.setId(1200 + i);
|
labelDATE.setId(200 + i);
|
||||||
labelWEIGHT.setText("0.3\n" + "0.5\n" + "0.7");
|
labelDATE.setText(df1.format(new Date(record.date)));
|
||||||
labelWEIGHT.setTextColor(Color.WHITE);
|
labelDATE.setTextColor(Color.WHITE);
|
||||||
etr.addView(labelWEIGHT);
|
tr.addView(labelDATE);
|
||||||
|
|
||||||
TextView labelEXPTDD = new TextView(TDDStatsActivity.this);
|
TextView labelBASAL = new TextView(TDDStatsActivity.this);
|
||||||
labelEXPTDD.setId(1300 + i);
|
labelBASAL.setId(300 + i);
|
||||||
labelEXPTDD.setText(DecimalFormatter.to2Decimal(weighted03)
|
labelBASAL.setText(resourceHelper.gs(R.string.formatinsulinunits, record.basal));
|
||||||
+ " U\n" + DecimalFormatter.to2Decimal(weighted05)
|
labelBASAL.setTextColor(Color.WHITE);
|
||||||
+ " U\n" + DecimalFormatter.to2Decimal(weighted07) + " U");
|
tr.addView(labelBASAL);
|
||||||
labelEXPTDD.setTextColor(Color.WHITE);
|
|
||||||
etr.addView(labelEXPTDD);
|
|
||||||
|
|
||||||
TextView labelEXPRATIO = new TextView(TDDStatsActivity.this);
|
TextView labelBOLUS = new TextView(TDDStatsActivity.this);
|
||||||
labelEXPRATIO.setId(1400 + i);
|
labelBOLUS.setId(400 + i);
|
||||||
labelEXPRATIO.setText(Math.round(100 * weighted03 / magicNumber) + " %\n"
|
labelBOLUS.setText(resourceHelper.gs(R.string.formatinsulinunits, record.bolus));
|
||||||
+ Math.round(100 * weighted05 / magicNumber) + " %\n"
|
labelBOLUS.setTextColor(Color.WHITE);
|
||||||
+ Math.round(100 * weighted07 / magicNumber) + " %");
|
tr.addView(labelBOLUS);
|
||||||
labelEXPRATIO.setTextColor(Color.WHITE);
|
|
||||||
etr.addView(labelEXPRATIO);
|
|
||||||
|
|
||||||
// add exponentail rows to tables
|
TextView labelTDD = new TextView(TDDStatsActivity.this);
|
||||||
etl.addView(etr, new TableLayout.LayoutParams(
|
labelTDD.setId(500 + i);
|
||||||
|
labelTDD.setText(resourceHelper.gs(R.string.formatinsulinunits, tdd));
|
||||||
|
labelTDD.setTextColor(Color.WHITE);
|
||||||
|
tr.addView(labelTDD);
|
||||||
|
|
||||||
|
TextView labelRATIO = new TextView(TDDStatsActivity.this);
|
||||||
|
labelRATIO.setId(600 + i);
|
||||||
|
labelRATIO.setText(Math.round(100 * tdd / magicNumber) + "%");
|
||||||
|
labelRATIO.setTextColor(Color.WHITE);
|
||||||
|
tr.addView(labelRATIO);
|
||||||
|
|
||||||
|
// add stats rows to tables
|
||||||
|
tl.addView(tr, new TableLayout.LayoutParams(
|
||||||
|
TableLayout.LayoutParams.MATCH_PARENT,
|
||||||
|
TableLayout.LayoutParams.WRAP_CONTENT));
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
//cumulative TDDs
|
||||||
|
for (TDD record : historyList) {
|
||||||
|
if (!historyList.isEmpty() && df1.format(new Date(record.date)).equals(df1.format(new Date()))) {
|
||||||
|
//Today should not be included
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
|
||||||
|
sum = sum + record.getTotal();
|
||||||
|
|
||||||
|
// Create the cumtable row
|
||||||
|
TableRow ctr = new TableRow(TDDStatsActivity.this);
|
||||||
|
if (i % 2 == 0) ctr.setBackgroundColor(Color.DKGRAY);
|
||||||
|
ctr.setId(700 + i);
|
||||||
|
ctr.setLayoutParams(new TableLayout.LayoutParams(
|
||||||
|
TableLayout.LayoutParams.MATCH_PARENT,
|
||||||
|
TableLayout.LayoutParams.WRAP_CONTENT));
|
||||||
|
|
||||||
|
// Here create the TextView dynamically
|
||||||
|
TextView labelDAYS = new TextView(TDDStatsActivity.this);
|
||||||
|
labelDAYS.setId(800 + i);
|
||||||
|
labelDAYS.setText("" + i);
|
||||||
|
labelDAYS.setTextColor(Color.WHITE);
|
||||||
|
ctr.addView(labelDAYS);
|
||||||
|
|
||||||
|
TextView labelCUMTDD = new TextView(TDDStatsActivity.this);
|
||||||
|
labelCUMTDD.setId(900 + i);
|
||||||
|
labelCUMTDD.setText(resourceHelper.gs(R.string.formatinsulinunits, sum / i));
|
||||||
|
labelCUMTDD.setTextColor(Color.WHITE);
|
||||||
|
ctr.addView(labelCUMTDD);
|
||||||
|
|
||||||
|
TextView labelCUMRATIO = new TextView(TDDStatsActivity.this);
|
||||||
|
labelCUMRATIO.setId(1000 + i);
|
||||||
|
labelCUMRATIO.setText(Math.round(100 * sum / i / magicNumber) + "%");
|
||||||
|
labelCUMRATIO.setTextColor(Color.WHITE);
|
||||||
|
ctr.addView(labelCUMRATIO);
|
||||||
|
|
||||||
|
// add cummulative rows to tables
|
||||||
|
ctl.addView(ctr, new TableLayout.LayoutParams(
|
||||||
TableLayout.LayoutParams.MATCH_PARENT,
|
TableLayout.LayoutParams.MATCH_PARENT,
|
||||||
TableLayout.LayoutParams.WRAP_CONTENT));
|
TableLayout.LayoutParams.WRAP_CONTENT));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isOldData(historyList) && activePluginProvider.getActivePump().getPumpDescription().needsManualTDDLoad) {
|
||||||
|
statsMessage.setVisibility(View.VISIBLE);
|
||||||
|
statsMessage.setText(resourceHelper.gs(R.string.danar_stats_olddata_Message));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
tl.setBackgroundColor(Color.TRANSPARENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!historyList.isEmpty() && df1.format(new Date(historyList.get(0).date)).equals(df1.format(new Date()))) {
|
||||||
|
//Today should not be included
|
||||||
|
historyList.remove(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.reverse(historyList);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
for (TDD record : historyList) {
|
||||||
|
double tdd = record.getTotal();
|
||||||
|
if (i == 0) {
|
||||||
|
weighted03 = tdd;
|
||||||
|
weighted05 = tdd;
|
||||||
|
weighted07 = tdd;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
weighted07 = (weighted07 * 0.3 + tdd * 0.7);
|
||||||
|
weighted05 = (weighted05 * 0.5 + tdd * 0.5);
|
||||||
|
weighted03 = (weighted03 * 0.7 + tdd * 0.3);
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the exptable row
|
||||||
|
TableRow etr = new TableRow(TDDStatsActivity.this);
|
||||||
|
if (i % 2 != 0) etr.setBackgroundColor(Color.DKGRAY);
|
||||||
|
etr.setId(1100 + i);
|
||||||
|
etr.setLayoutParams(new TableLayout.LayoutParams(
|
||||||
|
TableLayout.LayoutParams.MATCH_PARENT,
|
||||||
|
TableLayout.LayoutParams.WRAP_CONTENT));
|
||||||
|
|
||||||
|
// Here create the TextView dynamically
|
||||||
|
TextView labelWEIGHT = new TextView(TDDStatsActivity.this);
|
||||||
|
labelWEIGHT.setId(1200 + i);
|
||||||
|
labelWEIGHT.setText("0.3\n" + "0.5\n" + "0.7");
|
||||||
|
labelWEIGHT.setTextColor(Color.WHITE);
|
||||||
|
etr.addView(labelWEIGHT);
|
||||||
|
|
||||||
|
TextView labelEXPTDD = new TextView(TDDStatsActivity.this);
|
||||||
|
labelEXPTDD.setId(1300 + i);
|
||||||
|
labelEXPTDD.setText(resourceHelper.gs(R.string.formatinsulinunits, weighted03) + "\n" +
|
||||||
|
resourceHelper.gs(R.string.formatinsulinunits, weighted05) + "\n" +
|
||||||
|
resourceHelper.gs(R.string.formatinsulinunits, weighted07));
|
||||||
|
labelEXPTDD.setTextColor(Color.WHITE);
|
||||||
|
etr.addView(labelEXPTDD);
|
||||||
|
|
||||||
|
TextView labelEXPRATIO = new TextView(TDDStatsActivity.this);
|
||||||
|
labelEXPRATIO.setId(1400 + i);
|
||||||
|
labelEXPRATIO.setText(Math.round(100 * weighted03 / magicNumber) + "%\n"
|
||||||
|
+ Math.round(100 * weighted05 / magicNumber) + "%\n"
|
||||||
|
+ Math.round(100 * weighted07 / magicNumber) + "%");
|
||||||
|
labelEXPRATIO.setTextColor(Color.WHITE);
|
||||||
|
etr.addView(labelEXPRATIO);
|
||||||
|
|
||||||
|
// add exponentail rows to tables
|
||||||
|
etl.addView(etr, new TableLayout.LayoutParams(
|
||||||
|
TableLayout.LayoutParams.MATCH_PARENT,
|
||||||
|
TableLayout.LayoutParams.WRAP_CONTENT));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -539,17 +523,11 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isOldData(List<TDD> historyList) {
|
public boolean isOldData(List<TDD> historyList) {
|
||||||
Object activePump = ConfigBuilderPlugin.getPlugin().getActivePump();
|
|
||||||
PumpInterface dana = DanaRPlugin.getPlugin();
|
|
||||||
PumpInterface danaRS = DanaRSPlugin.getPlugin();
|
|
||||||
PumpInterface danaV2 = DanaRv2Plugin.getPlugin();
|
|
||||||
PumpInterface danaKorean = DanaRKoreanPlugin.getPlugin();
|
|
||||||
PumpInterface insight = LocalInsightPlugin.getPlugin();
|
|
||||||
|
|
||||||
boolean startsYesterday = activePump == dana || activePump == danaRS || activePump == danaV2 || activePump == danaKorean || activePump == insight;
|
boolean startsYesterday = danaRPlugin.isEnabled() || danaRSPlugin.isEnabled() || danaRv2Plugin.isEnabled() || danaRKoreanPlugin.isEnabled() || LocalInsightPlugin.getPlugin().isEnabled();
|
||||||
|
|
||||||
DateFormat df = new SimpleDateFormat("dd.MM.");
|
DateFormat df = new SimpleDateFormat("dd.MM.", Locale.getDefault());
|
||||||
return (historyList.size() < 3 || !(df.format(new Date(historyList.get(0).date)).equals(df.format(new Date(System.currentTimeMillis() - (startsYesterday ? 1000 * 60 * 60 * 24 : 0))))));
|
return (historyList.size() < 3 || !(df.format(new Date(historyList.get(0).date)).equals(df.format(new Date(System.currentTimeMillis() - (startsYesterday ? 1000 * 60 * 60 * 24 : 0))))));
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue