From f3a03cb17bdcf9a5205cce954f4fd309fd0b838b Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 9 Jan 2020 17:19:15 +0100 Subject: [PATCH] TDDStatsActivity --- .../activities/TDDStatsActivity.java | 532 +++++++++--------- 1 file changed, 255 insertions(+), 277 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java b/app/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java index 03b5db36b5..9bfc387578 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java @@ -4,7 +4,6 @@ import android.graphics.Color; import android.graphics.Rect; import android.os.Bundle; import android.text.TextUtils; -import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; @@ -26,10 +25,10 @@ import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import javax.inject.Inject; @@ -38,10 +37,10 @@ import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.db.TDD; import info.nightscout.androidaps.events.EventPumpStatusChanged; -import info.nightscout.androidaps.interfaces.PumpInterface; -import info.nightscout.androidaps.plugins.bus.RxBus; +import info.nightscout.androidaps.interfaces.ActivePluginProvider; +import info.nightscout.androidaps.plugins.bus.RxBusWrapper; 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.events.EventDanaRSyncStatus; 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.insight.LocalInsightPlugin; import info.nightscout.androidaps.queue.Callback; -import info.nightscout.androidaps.utils.DecimalFormatter; import info.nightscout.androidaps.utils.FabricPrivacy; -import info.nightscout.androidaps.utils.SP; import info.nightscout.androidaps.utils.SafeParse; import info.nightscout.androidaps.utils.resources.ResourceHelper; +import info.nightscout.androidaps.utils.sharedPreferences.SP; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; public class TDDStatsActivity extends NoSplashAppCompatActivity { @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 CompositeDisposable disposable = new CompositeDisposable(); @@ -82,12 +89,12 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity { @Override protected void onResume() { super.onResume(); - disposable.add(RxBus.Companion.getINSTANCE() + disposable.add(rxBus .toObservable(EventPumpStatusChanged.class) .observeOn(AndroidSchedulers.mainThread()) .subscribe(event -> statusView.setText(event.getStatus(resourceHelper)), exception -> FabricPrivacy.getInstance().logException(exception)) ); - disposable.add(RxBus.Companion.getINSTANCE() + disposable.add(rxBus .toObservable(EventDanaRSyncStatus.class) .observeOn(AndroidSchedulers.mainThread()) .subscribe(event -> { @@ -123,11 +130,11 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.danar_statsactivity); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); - statusView = (TextView) findViewById(R.id.danar_stats_connection_status); - reloadButton = (Button) findViewById(R.id.danar_statsreload); - totalBaseBasal = (EditText) findViewById(R.id.danar_stats_editTotalBaseBasal); - totalBaseBasal2 = (TextView) findViewById(R.id.danar_stats_editTotalBaseBasal2); - statsMessage = (TextView) findViewById(R.id.danar_stats_Message); + statusView = findViewById(R.id.danar_stats_connection_status); + reloadButton = findViewById(R.id.danar_statsreload); + totalBaseBasal = findViewById(R.id.danar_stats_editTotalBaseBasal); + totalBaseBasal2 = findViewById(R.id.danar_stats_editTotalBaseBasal2); + statsMessage = findViewById(R.id.danar_stats_Message); statusView.setVisibility(View.GONE); statsMessage.setVisibility(View.GONE); @@ -140,21 +147,21 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity { decimalFormat = new DecimalFormat("0.000"); 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) { double cppTBB = profile.baseBasalSum(); TBB = decimalFormat.format(cppTBB); - SP.putString("TBB", TBB); + sp.putString("TBB", TBB); } totalBaseBasal.setText(TBB); - if (!ConfigBuilderPlugin.getPlugin().getActivePump().getPumpDescription().needsManualTDDLoad) + if (!activePluginProvider.getActivePump().getPumpDescription().needsManualTDDLoad) reloadButton.setVisibility(View.GONE); // stats table - tl = (TableLayout) findViewById(R.id.main_table); + tl = findViewById(R.id.main_table); TableRow tr_head = new TableRow(this); tr_head.setBackgroundColor(Color.DKGRAY); tr_head.setLayoutParams(new TableLayout.LayoutParams( @@ -162,27 +169,27 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity { TableLayout.LayoutParams.WRAP_CONTENT)); 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); tr_head.addView(label_date); 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); tr_head.addView(label_basalrate); 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); tr_head.addView(label_bolus); 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); tr_head.addView(label_tdd); 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); tr_head.addView(label_ratio); @@ -192,7 +199,7 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity { TableLayout.LayoutParams.WRAP_CONTENT)); // cumulative table - ctl = (TableLayout) findViewById(R.id.cumulative_table); + ctl = findViewById(R.id.cumulative_table); TableRow ctr_head = new TableRow(this); ctr_head.setBackgroundColor(Color.DKGRAY); ctr_head.setLayoutParams(new TableLayout.LayoutParams( @@ -200,17 +207,17 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity { TableLayout.LayoutParams.WRAP_CONTENT)); 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); ctr_head.addView(label_cum_amount_days); 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); ctr_head.addView(label_cum_tdd); 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); ctr_head.addView(label_cum_ratio); @@ -220,7 +227,7 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity { TableLayout.LayoutParams.WRAP_CONTENT)); // expontial table - etl = (TableLayout) findViewById(R.id.expweight_table); + etl = findViewById(R.id.expweight_table); TableRow etr_head = new TableRow(this); etr_head.setBackgroundColor(Color.DKGRAY); etr_head.setLayoutParams(new TableLayout.LayoutParams( @@ -228,17 +235,17 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity { TableLayout.LayoutParams.WRAP_CONTENT)); 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); etr_head.addView(label_exp_weight); 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); etr_head.addView(label_exp_tdd); 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); etr_head.addView(label_exp_ratio); @@ -247,58 +254,43 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity { TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)); - reloadButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - runOnUiThread(new Runnable() { - @Override - public void run() { - reloadButton.setVisibility(View.GONE); - statusView.setVisibility(View.VISIBLE); - statsMessage.setVisibility(View.VISIBLE); - statsMessage.setText(MainApp.gs(R.string.danar_stats_warning_Message)); - } - }); - 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", ""); + reloadButton.setOnClickListener(v -> { + runOnUiThread(() -> { + reloadButton.setVisibility(View.GONE); + statusView.setVisibility(View.VISIBLE); + statsMessage.setVisibility(View.VISIBLE); + statsMessage.setText(resourceHelper.gs(R.string.danar_stats_warning_Message)); + }); + configBuilderPlugin.getCommandQueue().loadTDDs(new Callback() { + @Override + public void run() { loadDataFromDB(); - InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); - imm.hideSoftInputFromWindow(totalBaseBasal.getWindowToken(), 0); + runOnUiThread(() -> { + 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 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++) { TDD elem1 = historyList.get(i); TDD elem2 = historyList.get(i + 1); @@ -329,205 +321,197 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity { } } historyList.addAll(dummies); - Collections.sort(historyList, new Comparator() { - @Override - public int compare(TDD lhs, TDD rhs) { - return (int) (rhs.date - lhs.date); + Collections.sort(historyList, (lhs, rhs) -> (int) (rhs.date - lhs.date)); + + runOnUiThread(() -> { + 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() { - @Override - public void run() { - cleanTable(tl); - cleanTable(ctl); - cleanTable(etl); - DateFormat df = new SimpleDateFormat("dd.MM."); + magicNumber *= 2; + totalBaseBasal2.setText(decimalFormat.format(magicNumber)); - if (TextUtils.isEmpty(TBB)) { - totalBaseBasal.setError("Please Enter Total Base Basal"); - return; - } else { - magicNumber = SafeParse.stringToDouble(TBB); + 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)); } - - magicNumber *= 2; - 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( + tr.setId(100 + i); + tr.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 labelDATE = new TextView(TDDStatsActivity.this); + labelDATE.setId(200 + i); + labelDATE.setText(df1.format(new Date(record.date))); + labelDATE.setTextColor(Color.WHITE); + tr.addView(labelDATE); - TextView labelEXPTDD = new TextView(TDDStatsActivity.this); - labelEXPTDD.setId(1300 + i); - labelEXPTDD.setText(DecimalFormatter.to2Decimal(weighted03) - + " U\n" + DecimalFormatter.to2Decimal(weighted05) - + " U\n" + DecimalFormatter.to2Decimal(weighted07) + " U"); - labelEXPTDD.setTextColor(Color.WHITE); - etr.addView(labelEXPTDD); + TextView labelBASAL = new TextView(TDDStatsActivity.this); + labelBASAL.setId(300 + i); + labelBASAL.setText(resourceHelper.gs(R.string.formatinsulinunits, record.basal)); + labelBASAL.setTextColor(Color.WHITE); + tr.addView(labelBASAL); - 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); + TextView labelBOLUS = new TextView(TDDStatsActivity.this); + labelBOLUS.setId(400 + i); + labelBOLUS.setText(resourceHelper.gs(R.string.formatinsulinunits, record.bolus)); + labelBOLUS.setTextColor(Color.WHITE); + tr.addView(labelBOLUS); - // add exponentail rows to tables - etl.addView(etr, new TableLayout.LayoutParams( + TextView labelTDD = new TextView(TDDStatsActivity.this); + 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.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 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(); + public boolean isOldData(List historyList) { - 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)))))); } } \ No newline at end of file