diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a36bdee3aa..00d59f09bb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -47,7 +47,7 @@ android:theme="@style/Theme.AppCompat.Translucent" /> - + diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/activities/DanaRStatsActivity.java b/app/src/main/java/info/nightscout/androidaps/TDDStatsActivity.java similarity index 81% rename from app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/activities/DanaRStatsActivity.java rename to app/src/main/java/info/nightscout/androidaps/TDDStatsActivity.java index 5facf015d8..4f38490686 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/activities/DanaRStatsActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/TDDStatsActivity.java @@ -1,11 +1,9 @@ -package info.nightscout.androidaps.plugins.PumpDanaR.activities; +package info.nightscout.androidaps; import android.app.Activity; import android.graphics.Color; import android.graphics.Rect; import android.os.Bundle; -import android.os.Handler; -import android.os.HandlerThread; import android.support.v7.widget.LinearLayoutManager; import android.text.TextUtils; import android.view.KeyEvent; @@ -35,21 +33,26 @@ import java.util.Date; import java.util.LinkedList; import java.util.List; -import info.nightscout.androidaps.MainApp; -import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.db.DanaRHistoryRecord; +import info.nightscout.androidaps.db.TDD; import info.nightscout.androidaps.events.EventPumpStatusChanged; +import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; import info.nightscout.androidaps.plugins.PumpDanaR.comm.RecordTypes; import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRSyncStatus; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRS.DanaRSPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRv2.DanaRv2Plugin; +import info.nightscout.androidaps.plugins.PumpInsight.InsightPumpPlugin; import info.nightscout.androidaps.queue.Callback; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.SP; import info.nightscout.utils.SafeParse; -public class DanaRStatsActivity extends Activity { - private static Logger log = LoggerFactory.getLogger(DanaRStatsActivity.class); +public class TDDStatsActivity extends Activity { + private static Logger log = LoggerFactory.getLogger(TDDStatsActivity.class); TextView statusView, statsMessage, totalBaseBasal2; EditText totalBaseBasal; @@ -60,10 +63,10 @@ public class DanaRStatsActivity extends Activity { double magicNumber; DecimalFormat decimalFormat; - List historyList = new ArrayList<>(); - List dummies; + List historyList = new ArrayList<>(); + List dummies; - public DanaRStatsActivity() { + public TDDStatsActivity() { super(); } @@ -232,10 +235,10 @@ public class DanaRStatsActivity extends Activity { statsMessage.setText(getString(R.string.danar_stats_warning_Message)); } }); - ConfigBuilderPlugin.getCommandQueue().loadHistory(RecordTypes.RECORD_TYPE_DAILY, new Callback() { + ConfigBuilderPlugin.getCommandQueue().loadTDDs( new Callback() { @Override public void run() { - loadDataFromDB(RecordTypes.RECORD_TYPE_DAILY); + loadDataFromDB(); runOnUiThread(new Runnable() { @Override public void run() { @@ -268,18 +271,18 @@ public class DanaRStatsActivity extends Activity { } else { SP.putString("TBB", totalBaseBasal.getText().toString()); TBB = SP.getString("TBB", ""); - loadDataFromDB(RecordTypes.RECORD_TYPE_DAILY); + loadDataFromDB(); InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(totalBaseBasal.getWindowToken(), 0); } } }); - loadDataFromDB(RecordTypes.RECORD_TYPE_DAILY); + loadDataFromDB(); } - private void loadDataFromDB(byte type) { - historyList = MainApp.getDbHelper().getDanaRHistoryRecordsByType(type); + private void loadDataFromDB() { + historyList = MainApp.getDbHelper().getTDDs(); //only use newest 10 historyList = historyList.subList(0, Math.min(10, historyList.size())); @@ -288,24 +291,24 @@ public class DanaRStatsActivity extends Activity { dummies = new LinkedList(); DateFormat df = new SimpleDateFormat("dd.MM."); for (int i = 0; i < historyList.size() - 1; i++) { - DanaRHistoryRecord elem1 = historyList.get(i); - DanaRHistoryRecord elem2 = historyList.get(i + 1); + TDD elem1 = historyList.get(i); + TDD elem2 = historyList.get(i + 1); - if (!df.format(new Date(elem1.recordDate)).equals(df.format(new Date(elem2.recordDate + 25 * 60 * 60 * 1000)))) { - DanaRHistoryRecord dummy = new DanaRHistoryRecord(); - dummy.recordDate = elem1.recordDate - 24 * 60 * 60 * 1000; - dummy.recordDailyBasal = elem1.recordDailyBasal / 2; - dummy.recordDailyBolus = elem1.recordDailyBolus / 2; + if (!df.format(new Date(elem1.date)).equals(df.format(new Date(elem2.date + 25 * 60 * 60 * 1000)))) { + TDD dummy = new TDD(); + dummy.date = elem1.date - 24 * 60 * 60 * 1000; + dummy.basal = elem1.basal / 2; + dummy.bolus = elem1.bolus / 2; dummies.add(dummy); - elem1.recordDailyBasal /= 2; - elem1.recordDailyBolus /= 2; + elem1.basal /= 2; + elem1.bolus /= 2; } } historyList.addAll(dummies); - Collections.sort(historyList, new Comparator() { + Collections.sort(historyList, new Comparator() { @Override - public int compare(DanaRHistoryRecord lhs, DanaRHistoryRecord rhs) { - return (int) (rhs.recordDate - lhs.recordDate); + public int compare(TDD lhs, TDD rhs) { + return (int) (rhs.date - lhs.date); } }); @@ -333,11 +336,11 @@ public class DanaRStatsActivity extends Activity { double weighted05 = 0d; double weighted07 = 0d; - for (DanaRHistoryRecord record : historyList) { - double tdd = record.recordDailyBolus + record.recordDailyBasal; + for (TDD record : historyList) { + double tdd = record.getTotal(); // Create the table row - TableRow tr = new TableRow(DanaRStatsActivity.this); + 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)); @@ -348,31 +351,31 @@ public class DanaRStatsActivity extends Activity { TableLayout.LayoutParams.WRAP_CONTENT)); // Here create the TextView dynamically - TextView labelDATE = new TextView(DanaRStatsActivity.this); + TextView labelDATE = new TextView(TDDStatsActivity.this); labelDATE.setId(200 + i); - labelDATE.setText(df.format(new Date(record.recordDate))); + labelDATE.setText(df.format(new Date(record.date))); labelDATE.setTextColor(Color.WHITE); tr.addView(labelDATE); - TextView labelBASAL = new TextView(DanaRStatsActivity.this); + TextView labelBASAL = new TextView(TDDStatsActivity.this); labelBASAL.setId(300 + i); - labelBASAL.setText(DecimalFormatter.to2Decimal(record.recordDailyBasal) + " U"); + labelBASAL.setText(DecimalFormatter.to2Decimal(record.basal) + " U"); labelBASAL.setTextColor(Color.WHITE); tr.addView(labelBASAL); - TextView labelBOLUS = new TextView(DanaRStatsActivity.this); + TextView labelBOLUS = new TextView(TDDStatsActivity.this); labelBOLUS.setId(400 + i); - labelBOLUS.setText(DecimalFormatter.to2Decimal(record.recordDailyBolus) + " U"); + labelBOLUS.setText(DecimalFormatter.to2Decimal(record.bolus) + " U"); labelBOLUS.setTextColor(Color.WHITE); tr.addView(labelBOLUS); - TextView labelTDD = new TextView(DanaRStatsActivity.this); + 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(DanaRStatsActivity.this); + TextView labelRATIO = new TextView(TDDStatsActivity.this); labelRATIO.setId(600 + i); labelRATIO.setText(Math.round(100 * tdd / magicNumber) + " %"); labelRATIO.setTextColor(Color.WHITE); @@ -387,7 +390,7 @@ public class DanaRStatsActivity extends Activity { i++; // Create the cumtable row - TableRow ctr = new TableRow(DanaRStatsActivity.this); + TableRow ctr = new TableRow(TDDStatsActivity.this); if (i % 2 == 0) ctr.setBackgroundColor(Color.DKGRAY); ctr.setId(700 + i); ctr.setLayoutParams(new TableLayout.LayoutParams( @@ -395,19 +398,19 @@ public class DanaRStatsActivity extends Activity { TableLayout.LayoutParams.WRAP_CONTENT)); // Here create the TextView dynamically - TextView labelDAYS = new TextView(DanaRStatsActivity.this); + TextView labelDAYS = new TextView(TDDStatsActivity.this); labelDAYS.setId(800 + i); labelDAYS.setText("" + i); labelDAYS.setTextColor(Color.WHITE); ctr.addView(labelDAYS); - TextView labelCUMTDD = new TextView(DanaRStatsActivity.this); + 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(DanaRStatsActivity.this); + TextView labelCUMRATIO = new TextView(TDDStatsActivity.this); labelCUMRATIO.setId(1000 + i); labelCUMRATIO.setText(Math.round(100 * sum / i / magicNumber) + " %"); labelCUMRATIO.setTextColor(Color.WHITE); @@ -419,7 +422,7 @@ public class DanaRStatsActivity extends Activity { TableLayout.LayoutParams.WRAP_CONTENT)); } - if (historyList.size() < 3 || !(df.format(new Date(historyList.get(0).recordDate)).equals(df.format(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24))))) { + if (isOldData(historyList)) { statsMessage.setVisibility(View.VISIBLE); statsMessage.setText(getString(R.string.danar_stats_olddata_Message)); @@ -427,12 +430,17 @@ public class DanaRStatsActivity extends Activity { tl.setBackgroundColor(Color.TRANSPARENT); } + if(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 (DanaRHistoryRecord record : historyList) { - double tdd = record.recordDailyBolus + record.recordDailyBasal; + for (TDD record : historyList) { + double tdd = record.getTotal(); if (i == 0) { weighted03 = tdd; weighted05 = tdd; @@ -447,7 +455,7 @@ public class DanaRStatsActivity extends Activity { } // Create the exptable row - TableRow etr = new TableRow(DanaRStatsActivity.this); + TableRow etr = new TableRow(TDDStatsActivity.this); if (i % 2 != 0) etr.setBackgroundColor(Color.DKGRAY); etr.setId(1100 + i); etr.setLayoutParams(new TableLayout.LayoutParams( @@ -455,13 +463,13 @@ public class DanaRStatsActivity extends Activity { TableLayout.LayoutParams.WRAP_CONTENT)); // Here create the TextView dynamically - TextView labelWEIGHT = new TextView(DanaRStatsActivity.this); + 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(DanaRStatsActivity.this); + TextView labelEXPTDD = new TextView(TDDStatsActivity.this); labelEXPTDD.setId(1300 + i); labelEXPTDD.setText(DecimalFormatter.to2Decimal(weighted03) + " U\n" + DecimalFormatter.to2Decimal(weighted05) @@ -469,7 +477,7 @@ public class DanaRStatsActivity extends Activity { labelEXPTDD.setTextColor(Color.WHITE); etr.addView(labelEXPTDD); - TextView labelEXPRATIO = new TextView(DanaRStatsActivity.this); + TextView labelEXPRATIO = new TextView(TDDStatsActivity.this); labelEXPRATIO.setId(1400 + i); labelEXPRATIO.setText(Math.round(100 * weighted03 / magicNumber) + " %\n" + Math.round(100 * weighted05 / magicNumber) + " %\n" @@ -516,4 +524,19 @@ public class DanaRStatsActivity extends Activity { } ); } + + + public static boolean isOldData(List historyList) { + Object activePump = MainApp.getConfigBuilder().getActivePump(); + PumpInterface dana = MainApp.getSpecificPlugin(DanaRPlugin.class); + PumpInterface danaRS = MainApp.getSpecificPlugin(DanaRSPlugin.class); + PumpInterface danaV2 = MainApp.getSpecificPlugin(DanaRv2Plugin.class); + PumpInterface danaKorean = MainApp.getSpecificPlugin(DanaRKoreanPlugin.class); + PumpInterface insight = MainApp.getSpecificPlugin(InsightPumpPlugin.class); + + boolean startsYesterday = activePump == dana || activePump == danaRS || activePump == danaV2 || activePump == danaKorean || activePump == insight; + + DateFormat df = new SimpleDateFormat("dd.MM."); + 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 diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsFragment.java index 8bc79e3ddc..ce0148d963 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsFragment.java @@ -2,6 +2,7 @@ package info.nightscout.androidaps.plugins.Actions; import android.app.Activity; +import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; @@ -14,6 +15,7 @@ import com.crashlytics.android.answers.CustomEvent; import com.squareup.otto.Subscribe; import info.nightscout.androidaps.Config; +import info.nightscout.androidaps.HistoryBrowseActivity; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.db.ExtendedBolus; @@ -31,6 +33,7 @@ import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialo import info.nightscout.androidaps.plugins.Careportal.OptionsToShow; import info.nightscout.androidaps.plugins.Common.SubscriberFragment; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; +import info.nightscout.androidaps.TDDStatsActivity; import info.nightscout.utils.FabricPrivacy; import info.nightscout.utils.SingleClickButton; @@ -52,6 +55,8 @@ public class ActionsFragment extends SubscriberFragment implements View.OnClickL SingleClickButton tempBasal; SingleClickButton tempBasalCancel; SingleClickButton fill; + SingleClickButton tddStats; + SingleClickButton history; public ActionsFragment() { super(); @@ -71,6 +76,9 @@ public class ActionsFragment extends SubscriberFragment implements View.OnClickL tempBasal = (SingleClickButton) view.findViewById(R.id.actions_settempbasal); tempBasalCancel = (SingleClickButton) view.findViewById(R.id.actions_canceltempbasal); fill = (SingleClickButton) view.findViewById(R.id.actions_fill); + tddStats = view.findViewById(R.id.actions_tddstats); + history = view.findViewById(R.id.actions_historybrowser); + profileSwitch.setOnClickListener(this); tempTarget.setOnClickListener(this); @@ -79,6 +87,8 @@ public class ActionsFragment extends SubscriberFragment implements View.OnClickL tempBasal.setOnClickListener(this); tempBasalCancel.setOnClickListener(this); fill.setOnClickListener(this); + history.setOnClickListener(this); + tddStats.setOnClickListener(this); updateGUI(); return view; @@ -222,6 +232,12 @@ public class ActionsFragment extends SubscriberFragment implements View.OnClickL FillDialog fillDialog = new FillDialog(); fillDialog.show(manager, "FillDialog"); break; + case R.id.actions_historybrowser: + startActivity(new Intent(getContext(), HistoryBrowseActivity.class)); + break; + case R.id.actions_tddstats: + startActivity(new Intent(getContext(), TDDStatsActivity.class)); + break; } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRFragment.java index 833733e9de..92245a125b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRFragment.java @@ -11,7 +11,6 @@ import android.text.Spanned; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; @@ -21,12 +20,9 @@ import com.squareup.otto.Subscribe; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Date; - import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; -import butterknife.Unbinder; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.db.ExtendedBolus; @@ -37,7 +33,7 @@ import info.nightscout.androidaps.plugins.Common.SubscriberFragment; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.PumpDanaR.Dialogs.ProfileViewDialog; import info.nightscout.androidaps.plugins.PumpDanaR.activities.DanaRHistoryActivity; -import info.nightscout.androidaps.plugins.PumpDanaR.activities.DanaRStatsActivity; +import info.nightscout.androidaps.TDDStatsActivity; import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRNewStatus; import info.nightscout.androidaps.queue.events.EventQueueChanged; import info.nightscout.utils.DateUtil; @@ -119,7 +115,7 @@ public class DanaRFragment extends SubscriberFragment { } @OnClick(R.id.danar_stats) void onStatsClick() { - startActivity(new Intent(getContext(), DanaRStatsActivity.class)); + startActivity(new Intent(getContext(), TDDStatsActivity.class)); } @OnClick(R.id.danar_btconnection) void onBtConnectionClick() { diff --git a/app/src/main/res/layout/actions_fragment.xml b/app/src/main/res/layout/actions_fragment.xml index 6673099110..f5f8aff95b 100644 --- a/app/src/main/res/layout/actions_fragment.xml +++ b/app/src/main/res/layout/actions_fragment.xml @@ -104,6 +104,32 @@ android:drawableTop="@drawable/icon_actions_refill" android:text="@string/primefill" /> + + + + diff --git a/app/src/main/res/layout/danar_statsactivity.xml b/app/src/main/res/layout/danar_statsactivity.xml index 2657edb86b..11fc622be3 100644 --- a/app/src/main/res/layout/danar_statsactivity.xml +++ b/app/src/main/res/layout/danar_statsactivity.xml @@ -34,7 +34,7 @@ android:gravity="center_horizontal" android:textColor="@color/mdtp_white" android:background="@drawable/pillborder" - android:text="@string/danar_stats" /> + android:text="@string/danar_stats_tdd" />