Add (back) last bolus to ComboFragment.
This commit is contained in:
parent
4517736122
commit
8b8a135804
7 changed files with 112 additions and 23 deletions
|
@ -4,7 +4,6 @@ package info.nightscout.androidaps.plugins.PumpCombo;
|
|||
import android.app.Activity;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.os.SystemClock;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -16,14 +15,11 @@ import com.squareup.otto.Subscribe;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import de.jotomo.ruffy.spi.CommandResult;
|
||||
import de.jotomo.ruffy.spi.PumpState;
|
||||
import de.jotomo.ruffy.spi.history.Bolus;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.db.TemporaryBasal;
|
||||
import info.nightscout.androidaps.plugins.Common.SubscriberFragment;
|
||||
import info.nightscout.androidaps.plugins.PumpCombo.events.EventComboPumpUpdateGUI;
|
||||
import info.nightscout.utils.DateUtil;
|
||||
|
@ -36,6 +32,7 @@ public class ComboFragment extends SubscriberFragment implements View.OnClickLis
|
|||
private TextView batteryView;
|
||||
private TextView reservoirView;
|
||||
private TextView lastConnectionView;
|
||||
private TextView lastBolusView;
|
||||
private TextView tempBasalText;
|
||||
|
||||
private Button refresh;
|
||||
|
@ -49,6 +46,7 @@ public class ComboFragment extends SubscriberFragment implements View.OnClickLis
|
|||
batteryView = (TextView) view.findViewById(R.id.combo_pumpstate_battery);
|
||||
reservoirView = (TextView) view.findViewById(R.id.combo_insulinstate);
|
||||
lastConnectionView = (TextView) view.findViewById(R.id.combo_lastconnection);
|
||||
lastBolusView = (TextView) view.findViewById(R.id.combo_last_bolus);
|
||||
tempBasalText = (TextView) view.findViewById(R.id.combo_temp_basal);
|
||||
|
||||
refresh = (Button) view.findViewById(R.id.combo_refresh);
|
||||
|
@ -111,7 +109,7 @@ public class ComboFragment extends SubscriberFragment implements View.OnClickLis
|
|||
}
|
||||
if (plugin.getPump().state.errorMsg != null) {
|
||||
statusView.setTextColor(Color.RED);
|
||||
} else if (plugin.getPump().state.suspended ) {
|
||||
} else if (plugin.getPump().state.suspended) {
|
||||
statusView.setTextColor(Color.YELLOW);
|
||||
} else {
|
||||
statusView.setTextColor(Color.WHITE);
|
||||
|
@ -140,7 +138,7 @@ public class ComboFragment extends SubscriberFragment implements View.OnClickLis
|
|||
} else {
|
||||
reservoirView.setTextColor(Color.WHITE);
|
||||
}
|
||||
int reservoirLevel = plugin.getPump().history.reservoirLevel;
|
||||
int reservoirLevel = plugin.getPump().reservoirLevel;
|
||||
reservoirView.setText(reservoirLevel == -1 ? "" : "" + reservoirLevel + " U");
|
||||
|
||||
// last connection
|
||||
|
@ -148,6 +146,19 @@ public class ComboFragment extends SubscriberFragment implements View.OnClickLis
|
|||
String time = DateUtil.timeString(lastCmdResult.completionTime);
|
||||
lastConnectionView.setText("" + minAgo + " (" + time + ")");
|
||||
|
||||
// last bolus
|
||||
plugin.getPump().history.bolusHistory.add(new Bolus(System.currentTimeMillis() - 7 * 60 * 1000, 12.8d));
|
||||
Bolus bolus = plugin.getPump().lastBolus;
|
||||
if (bolus == null || bolus.timestamp + 6 * 60 * 60 * 1000 < System.currentTimeMillis()) {
|
||||
lastBolusView.setText("");
|
||||
} else {
|
||||
long agoMsc = System.currentTimeMillis() - bolus.timestamp;
|
||||
double agoHours = agoMsc / 60d / 60d / 1000d;
|
||||
lastBolusView.setText(DecimalFormatter.to2Decimal(bolus.amount) + " U " +
|
||||
"(" + DecimalFormatter.to1Decimal(agoHours) + " " + MainApp.sResources.getString(R.string.hoursago) + ", "
|
||||
+ DateUtil.timeString(bolus.timestamp) + ") ");
|
||||
}
|
||||
|
||||
// TBR
|
||||
boolean tbrActive = ps.tbrPercent != -1 && ps.tbrPercent != 100;
|
||||
if (tbrActive) {
|
||||
|
|
|
@ -19,6 +19,7 @@ import de.jotomo.ruffy.spi.BolusProgressReporter;
|
|||
import de.jotomo.ruffy.spi.CommandResult;
|
||||
import de.jotomo.ruffy.spi.PumpState;
|
||||
import de.jotomo.ruffy.spi.RuffyCommands;
|
||||
import de.jotomo.ruffy.spi.history.Bolus;
|
||||
import de.jotomo.ruffy.spi.history.PumpHistoryRequest;
|
||||
import de.jotomo.ruffyscripter.RuffyCommandsV1Impl;
|
||||
import info.nightscout.androidaps.BuildConfig;
|
||||
|
@ -562,11 +563,18 @@ public class ComboPlugin implements PluginBase, PumpInterface {
|
|||
// TODO handle running into WARNING_OR_ERROR ... or scripter? purge it
|
||||
CommandResult commandResult = commandExecution.execute();
|
||||
pump.lastCmdResult = commandResult;
|
||||
pump.lastCmdResult.completionTime = System.currentTimeMillis(); // todo
|
||||
pump.state = commandResult.state;
|
||||
// TOOD
|
||||
if (commandResult.history != null)
|
||||
if (commandResult.history != null) {
|
||||
if (commandResult.history.reservoirLevel != -1) {
|
||||
pump.reservoirLevel = commandResult.history.reservoirLevel;
|
||||
}
|
||||
pump.history = commandResult.history;
|
||||
if (pump.history.bolusHistory.size() > 0) {
|
||||
pump.lastBolus = pump.history.bolusHistory.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
MainApp.bus().post(new EventComboPumpUpdateGUI());
|
||||
return commandResult;
|
||||
}
|
||||
|
|
|
@ -3,10 +3,10 @@ package info.nightscout.androidaps.plugins.PumpCombo;
|
|||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import de.jotomo.ruffy.spi.PumpState;
|
||||
import de.jotomo.ruffy.spi.CommandResult;
|
||||
import de.jotomo.ruffy.spi.history.Bolus;
|
||||
import de.jotomo.ruffy.spi.history.PumpHistory;
|
||||
|
||||
class ComboPump {
|
||||
|
@ -16,4 +16,7 @@ class ComboPump {
|
|||
volatile PumpState state = new PumpState();
|
||||
@NonNull
|
||||
volatile PumpHistory history = new PumpHistory();
|
||||
@Nullable
|
||||
volatile Bolus lastBolus;
|
||||
volatile int reservoirLevel = -1;
|
||||
}
|
||||
|
|
|
@ -190,6 +190,51 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dip"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@color/listdelimiter" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.5"
|
||||
android:gravity="end"
|
||||
android:paddingRight="5dp"
|
||||
android:text="@string/pump_lastbolus_label"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingEnd="2dp"
|
||||
android:paddingStart="2dp"
|
||||
android:text=":"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/combo_last_bolus"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="start"
|
||||
android:paddingLeft="5dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dip"
|
||||
|
|
|
@ -11,6 +11,8 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import de.jotomo.ruffy.spi.history.Bolus;
|
||||
import de.jotomo.ruffy.spi.history.PumpHistory;
|
||||
import de.jotomo.ruffyscripter.RuffyScripter;
|
||||
import de.jotomo.ruffy.spi.BolusProgressReporter;
|
||||
import de.jotomo.ruffy.spi.CommandResult;
|
||||
|
@ -199,9 +201,11 @@ public class BolusCommand extends BaseCommand {
|
|||
+ "did not return the main menu successfully.");
|
||||
}
|
||||
|
||||
|
||||
ArrayList<Bolus> boluses = new ArrayList<>();
|
||||
boluses.add(new Bolus(System.currentTimeMillis(), bolus));
|
||||
return new CommandResult().success(true).enacted(true)
|
||||
.message(String.format(Locale.US, "Delivered %02.1f U", bolus));
|
||||
.message(String.format(Locale.US, "Delivered %02.1f U", bolus))
|
||||
.history(new PumpHistory().bolusHistory(boluses));
|
||||
} catch (CommandException e) {
|
||||
return e.toCommandResult();
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import org.monkey.d.ruffy.ruffy.driver.display.menu.MenuDate;
|
|||
import org.monkey.d.ruffy.ruffy.driver.display.menu.MenuTime;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import de.jotomo.ruffy.spi.CommandResult;
|
||||
|
@ -36,25 +37,33 @@ public class ReadHistoryCommand extends BaseCommand {
|
|||
scripter.pressCheckKey();
|
||||
scripter.verifyMenuIsDisplayed(MenuType.BOLUS_DATA);
|
||||
if (request.bolusHistory != PumpHistoryRequest.SKIP) {
|
||||
// Could also be extended, multiwave:
|
||||
BolusType bolusType = (BolusType) scripter.getCurrentMenu().getAttribute(MenuAttribute.BOLUS_TYPE);
|
||||
if (!bolusType.equals(BolusType.NORMAL)) {
|
||||
throw new CommandException().success(false).enacted(false).message("Unsupported bolus type encountered: " + bolusType);
|
||||
}
|
||||
Double bolus = (Double) scripter.getCurrentMenu().getAttribute(MenuAttribute.BOLUS);
|
||||
MenuDate date = (MenuDate) scripter.getCurrentMenu().getAttribute(MenuAttribute.DATE);
|
||||
MenuTime time = (MenuTime) scripter.getCurrentMenu().getAttribute(MenuAttribute.TIME);
|
||||
if (request.bolusHistory == PumpHistoryRequest.LAST) {
|
||||
// Could also be extended, multiwave:
|
||||
BolusType bolusType = (BolusType) scripter.getCurrentMenu().getAttribute(MenuAttribute.BOLUS_TYPE);
|
||||
if (!bolusType.equals(BolusType.NORMAL)) {
|
||||
throw new CommandException().success(false).enacted(false).message("Unsupported bolus type encountered: " + bolusType);
|
||||
}
|
||||
Double bolus = (Double) scripter.getCurrentMenu().getAttribute(MenuAttribute.BOLUS);
|
||||
MenuDate date = (MenuDate) scripter.getCurrentMenu().getAttribute(MenuAttribute.DATE);
|
||||
MenuTime time = (MenuTime) scripter.getCurrentMenu().getAttribute(MenuAttribute.TIME);
|
||||
// TODO handle year changes; if current month == 1 and record date == 12, use $YEAR-1
|
||||
int currentMonth = new Date().getMonth() + 1;
|
||||
int currentYear = new Date().getYear() + 1900;
|
||||
if (currentMonth == 1 && date.getMonth() == 12) {
|
||||
currentYear -= 1;
|
||||
}
|
||||
long recordDate = new Date(currentYear - 1900, date.getMonth() - 1, date.getDay(), time.getHour(), time.getMinute()).getTime();
|
||||
history.bolusHistory.add(new Bolus(recordDate, bolus));
|
||||
|
||||
history.bolusHistory.add(new Bolus(0, bolus));
|
||||
|
||||
int record = (int) scripter.getCurrentMenu().getAttribute(MenuAttribute.CURRENT_RECORD);
|
||||
int totalRecords = (int) scripter.getCurrentMenu().getAttribute(MenuAttribute.TOTAL_RECORD);
|
||||
// int record = (int) scripter.getCurrentMenu().getAttribute(MenuAttribute.CURRENT_RECORD);
|
||||
// int totalRecords = (int) scripter.getCurrentMenu().getAttribute(MenuAttribute.TOTAL_RECORD);
|
||||
|
||||
/*
|
||||
read displayed date, bolus, add to history
|
||||
while data > last known, press up to go through history
|
||||
*/
|
||||
|
||||
}
|
||||
}
|
||||
scripter.pressMenuKey();
|
||||
scripter.verifyMenuIsDisplayed(MenuType.ERROR_DATA);
|
||||
|
@ -81,6 +90,7 @@ public class ReadHistoryCommand extends BaseCommand {
|
|||
// TODO start or end time?
|
||||
MenuTime time = (MenuTime) scripter.getCurrentMenu().getAttribute(MenuAttribute.TIME);
|
||||
}
|
||||
scripter.pressBackKey();
|
||||
scripter.returnToRootMenu();
|
||||
}
|
||||
scripter.verifyRootMenuIsDisplayed();
|
||||
|
|
|
@ -20,6 +20,14 @@ public class MenuDate {
|
|||
month = Integer.parseInt(p[1]);
|
||||
}
|
||||
|
||||
public int getDay() {
|
||||
return day;
|
||||
}
|
||||
|
||||
public int getMonth() {
|
||||
return month;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return day+"."+ String.format("%02d",month)+".";
|
||||
|
|
Loading…
Reference in a new issue