Temptargets under treatments

This commit is contained in:
Milos Kozak 2017-05-23 23:56:53 +02:00
parent 771fbdc303
commit 5208f23661
26 changed files with 204 additions and 309 deletions

View file

@ -23,39 +23,38 @@ import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.plugins.Actions.ActionsFragment; import info.nightscout.androidaps.plugins.Actions.ActionsFragment;
import info.nightscout.androidaps.plugins.Careportal.CareportalFragment; import info.nightscout.androidaps.plugins.Careportal.CareportalFragment;
import info.nightscout.androidaps.plugins.InsulinFastactingProlonged.InsulinFastactingProlongedFragment;
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorFragment;
import info.nightscout.androidaps.plugins.ProfileCircadianPercentage.CircadianPercentageProfileFragment;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderFragment; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderFragment;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesFragment;
import info.nightscout.androidaps.plugins.ConstraintsSafety.SafetyFragment;
import info.nightscout.androidaps.plugins.InsulinFastacting.InsulinFastactingFragment;
import info.nightscout.androidaps.plugins.InsulinFastactingProlonged.InsulinFastactingProlongedFragment;
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorFragment;
import info.nightscout.androidaps.plugins.Loop.LoopFragment;
import info.nightscout.androidaps.plugins.NSClientInternal.NSClientInternalFragment;
import info.nightscout.androidaps.plugins.OpenAPSAMA.OpenAPSAMAFragment;
import info.nightscout.androidaps.plugins.OpenAPSMA.OpenAPSMAFragment;
import info.nightscout.androidaps.plugins.Overview.OverviewFragment;
import info.nightscout.androidaps.plugins.Persistentnotification.PersistentNotificationPlugin;
import info.nightscout.androidaps.plugins.ProfileCircadianPercentage.CircadianPercentageProfileFragment;
import info.nightscout.androidaps.plugins.ProfileLocal.LocalProfileFragment;
import info.nightscout.androidaps.plugins.ProfileNS.NSProfileFragment;
import info.nightscout.androidaps.plugins.ProfileSimple.SimpleProfileFragment;
import info.nightscout.androidaps.plugins.PumpDanaR.DanaRFragment; import info.nightscout.androidaps.plugins.PumpDanaR.DanaRFragment;
import info.nightscout.androidaps.plugins.PumpDanaR.services.DanaRExecutionService; import info.nightscout.androidaps.plugins.PumpDanaR.services.DanaRExecutionService;
import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanFragment; import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanFragment;
import info.nightscout.androidaps.plugins.InsulinFastacting.InsulinFastactingFragment;
import info.nightscout.androidaps.plugins.ProfileLocal.LocalProfileFragment;
import info.nightscout.androidaps.plugins.Loop.LoopFragment;
import info.nightscout.androidaps.plugins.PumpDanaRKorean.services.DanaRKoreanExecutionService; import info.nightscout.androidaps.plugins.PumpDanaRKorean.services.DanaRKoreanExecutionService;
import info.nightscout.androidaps.plugins.PumpDanaRv2.DanaRv2Fragment; import info.nightscout.androidaps.plugins.PumpDanaRv2.DanaRv2Fragment;
import info.nightscout.androidaps.plugins.PumpDanaRv2.services.DanaRv2ExecutionService; import info.nightscout.androidaps.plugins.PumpDanaRv2.services.DanaRv2ExecutionService;
import info.nightscout.androidaps.plugins.PumpMDI.MDIFragment; import info.nightscout.androidaps.plugins.PumpMDI.MDIFragment;
import info.nightscout.androidaps.plugins.NSClientInternal.NSClientInternalFragment; import info.nightscout.androidaps.plugins.PumpVirtual.VirtualPumpFragment;
import info.nightscout.androidaps.plugins.ProfileNS.NSProfileFragment;
import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesFragment;
import info.nightscout.androidaps.plugins.OpenAPSAMA.OpenAPSAMAFragment;
import info.nightscout.androidaps.plugins.OpenAPSMA.OpenAPSMAFragment;
import info.nightscout.androidaps.plugins.Overview.OverviewFragment;
import info.nightscout.androidaps.plugins.ConstraintsSafety.SafetyFragment;
import info.nightscout.androidaps.plugins.ProfileSimple.SimpleProfileFragment;
import info.nightscout.androidaps.plugins.SmsCommunicator.SmsCommunicatorFragment; import info.nightscout.androidaps.plugins.SmsCommunicator.SmsCommunicatorFragment;
import info.nightscout.androidaps.plugins.SourceGlimp.SourceGlimpFragment; import info.nightscout.androidaps.plugins.SourceGlimp.SourceGlimpFragment;
import info.nightscout.androidaps.plugins.SourceMM640g.SourceMM640gFragment; import info.nightscout.androidaps.plugins.SourceMM640g.SourceMM640gFragment;
import info.nightscout.androidaps.plugins.SourceNSClient.SourceNSClientFragment; import info.nightscout.androidaps.plugins.SourceNSClient.SourceNSClientFragment;
import info.nightscout.androidaps.plugins.SourceXdrip.SourceXdripFragment; import info.nightscout.androidaps.plugins.SourceXdrip.SourceXdripFragment;
import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangeFragment;
import info.nightscout.androidaps.plugins.PumpVirtual.VirtualPumpFragment;
import info.nightscout.androidaps.plugins.TreatmentsFromHistory.TreatmentsFromHistoryFragment; import info.nightscout.androidaps.plugins.TreatmentsFromHistory.TreatmentsFromHistoryFragment;
import info.nightscout.androidaps.plugins.Wear.WearFragment; import info.nightscout.androidaps.plugins.Wear.WearFragment;
import info.nightscout.androidaps.plugins.Persistentnotification.PersistentNotificationPlugin;
import info.nightscout.androidaps.plugins.XDripStatusline.StatuslineFragment; import info.nightscout.androidaps.plugins.XDripStatusline.StatuslineFragment;
import info.nightscout.androidaps.receivers.KeepAliveReceiver; import info.nightscout.androidaps.receivers.KeepAliveReceiver;
import io.fabric.sdk.android.Fabric; import io.fabric.sdk.android.Fabric;
@ -111,7 +110,6 @@ public class MainApp extends Application {
if (Config.OTHERPROFILES) pluginsList.add(LocalProfileFragment.getPlugin()); if (Config.OTHERPROFILES) pluginsList.add(LocalProfileFragment.getPlugin());
if (Config.OTHERPROFILES) if (Config.OTHERPROFILES)
pluginsList.add(CircadianPercentageProfileFragment.getPlugin()); pluginsList.add(CircadianPercentageProfileFragment.getPlugin());
if (Config.APS) pluginsList.add(TempTargetRangeFragment.getPlugin());
pluginsList.add(TreatmentsFromHistoryFragment.getPlugin()); pluginsList.add(TreatmentsFromHistoryFragment.getPlugin());
if (Config.SAFETY) pluginsList.add(SafetyFragment.getPlugin()); if (Config.SAFETY) pluginsList.add(SafetyFragment.getPlugin());
if (Config.APS) pluginsList.add(ObjectivesFragment.getPlugin()); if (Config.APS) pluginsList.add(ObjectivesFragment.getPlugin());
@ -217,7 +215,7 @@ public class MainApp extends Application {
if (pluginsList != null) { if (pluginsList != null) {
for (PluginBase p : pluginsList) { for (PluginBase p : pluginsList) {
if (p.getType() == PluginBase.INSULIN && ((InsulinInterface)p).getId() == id) if (p.getType() == PluginBase.INSULIN && ((InsulinInterface) p).getId() == id)
return (InsulinInterface) p; return (InsulinInterface) p;
} }
} else { } else {

View file

@ -34,11 +34,11 @@ import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.events.EventExtendedBolusChange; import info.nightscout.androidaps.events.EventExtendedBolusChange;
import info.nightscout.androidaps.events.EventNewBG; import info.nightscout.androidaps.events.EventNewBG;
import info.nightscout.androidaps.events.EventTempBasalChange; import info.nightscout.androidaps.events.EventTempBasalChange;
import info.nightscout.androidaps.events.EventTempTargetChange;
import info.nightscout.androidaps.events.EventTreatmentChange; import info.nightscout.androidaps.events.EventTreatmentChange;
import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventNewHistoryData; import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventNewHistoryData;
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile;
import info.nightscout.androidaps.plugins.PumpDanaR.History.DanaRNSHistorySync; import info.nightscout.androidaps.plugins.PumpDanaR.History.DanaRNSHistorySync;
import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTargetRangeChange;
public class DatabaseHelper extends OrmLiteSqliteOpenHelper { public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static Logger log = LoggerFactory.getLogger(DatabaseHelper.class); private static Logger log = LoggerFactory.getLogger(DatabaseHelper.class);
@ -65,6 +65,9 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final ScheduledExecutorService tempBasalsWorker = Executors.newSingleThreadScheduledExecutor(); private static final ScheduledExecutorService tempBasalsWorker = Executors.newSingleThreadScheduledExecutor();
private static ScheduledFuture<?> scheduledTemBasalsPost = null; private static ScheduledFuture<?> scheduledTemBasalsPost = null;
private static final ScheduledExecutorService tempTargetWorker = Executors.newSingleThreadScheduledExecutor();
private static ScheduledFuture<?> scheduledTemTargetPost = null;
private static final ScheduledExecutorService extendedBolusWorker = Executors.newSingleThreadScheduledExecutor(); private static final ScheduledExecutorService extendedBolusWorker = Executors.newSingleThreadScheduledExecutor();
private static ScheduledFuture<?> scheduledExtendedBolusPost = null; private static ScheduledFuture<?> scheduledExtendedBolusPost = null;
@ -173,6 +176,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
scheduleTemporaryBasalChange(); scheduleTemporaryBasalChange();
scheduleTreatmentChange(); scheduleTreatmentChange();
scheduleExtendedBolusChange(); scheduleExtendedBolusChange();
scheduleTemporaryTargetChange();
} }
public void resetTreatments() { public void resetTreatments() {
@ -193,6 +197,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
scheduleTemporaryTargetChange();
} }
public void resetTemporaryBasals() { public void resetTemporaryBasals() {
@ -586,7 +591,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
tempTarget.date = tempTarget.date - tempTarget.date % 1000; tempTarget.date = tempTarget.date - tempTarget.date % 1000;
try { try {
getDaoTempTargets().createOrUpdate(tempTarget); getDaoTempTargets().createOrUpdate(tempTarget);
MainApp.bus().post(new EventTempTargetRangeChange()); scheduleTemporaryTargetChange();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -595,12 +600,29 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
public void delete(TempTarget tempTarget) { public void delete(TempTarget tempTarget) {
try { try {
getDaoTempTargets().delete(tempTarget); getDaoTempTargets().delete(tempTarget);
MainApp.bus().post(new EventTempTargetRangeChange()); scheduleTemporaryTargetChange();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
static public void scheduleTemporaryTargetChange() {
class PostRunnable implements Runnable {
public void run() {
MainApp.bus().post(new EventTempTargetChange());
scheduledTemTargetPost = null;
}
}
// prepare task for execution in 1 sec
// cancel waiting task to prevent sending multiple posts
if (scheduledTemTargetPost != null)
scheduledTemTargetPost.cancel(false);
Runnable task = new PostRunnable();
final int sec = 1;
scheduledTemTargetPost = tempTargetWorker.schedule(task, sec, TimeUnit.SECONDS);
}
/* /*
{ {
"_id": "58795998aa86647ba4d68ce7", "_id": "58795998aa86647ba4d68ce7",
@ -648,7 +670,6 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
tempTarget.reason = trJson.getString("reason"); tempTarget.reason = trJson.getString("reason");
tempTarget._id = trJson.getString("_id"); tempTarget._id = trJson.getString("_id");
createOrUpdate(tempTarget); createOrUpdate(tempTarget);
MainApp.bus().post(new EventTempTargetRangeChange());
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} catch (JSONException e) { } catch (JSONException e) {
@ -669,7 +690,6 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
if (Config.logIncommingData) if (Config.logIncommingData)
log.debug("Removing TempTarget record from database: " + record.log()); log.debug("Removing TempTarget record from database: " + record.log());
getDaoTempTargets().delete(record); getDaoTempTargets().delete(record);
MainApp.bus().post(new EventTempTargetRangeChange());
} else { } else {
if (Config.logIncommingData) if (Config.logIncommingData)
log.debug("TempTarget not found database: " + _id); log.debug("TempTarget not found database: " + _id);
@ -876,7 +896,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
if (Config.logIncommingData) if (Config.logIncommingData)
log.debug("Removing TempBasal record from database: " + record.log()); log.debug("Removing TempBasal record from database: " + record.log());
getDaoTemporaryBasal().delete(record); getDaoTemporaryBasal().delete(record);
MainApp.bus().post(new EventTempTargetRangeChange()); MainApp.bus().post(new EventTempTargetChange());
} else { } else {
if (Config.logIncommingData) if (Config.logIncommingData)
log.debug("TempBasal not found database: " + _id); log.debug("TempBasal not found database: " + _id);

View file

@ -9,9 +9,7 @@ import org.slf4j.LoggerFactory;
import java.util.Date; import java.util.Date;
import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.interfaces.Interval; import info.nightscout.androidaps.interfaces.Interval;
import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangePlugin;
import info.nightscout.utils.DateUtil; import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.DecimalFormatter;

View file

@ -0,0 +1,8 @@
package info.nightscout.androidaps.events;
/**
* Created by mike on 13.01.2017.
*/
public class EventTempTargetChange {
}

View file

@ -5,6 +5,7 @@ import java.util.List;
import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.data.IobTotal;
import info.nightscout.androidaps.data.MealData; import info.nightscout.androidaps.data.MealData;
import info.nightscout.androidaps.db.ExtendedBolus; import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.db.TemporaryBasal; import info.nightscout.androidaps.db.TemporaryBasal;
import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.db.Treatment;
import info.nightscout.utils.OverlappingIntervals; import info.nightscout.utils.OverlappingIntervals;
@ -47,6 +48,9 @@ public interface TreatmentsInterface {
void extendedBolusStop(long time); void extendedBolusStop(long time);
OverlappingIntervals<ExtendedBolus> getExtendedBoluses(); OverlappingIntervals<ExtendedBolus> getExtendedBoluses();
TempTarget getTempTarget (long time);
OverlappingIntervals<TempTarget> getTempTargets();
long oldestDataAvaialable(); long oldestDataAvaialable();
} }

View file

@ -26,6 +26,7 @@ import info.nightscout.androidaps.data.IobTotal;
import info.nightscout.androidaps.data.MealData; import info.nightscout.androidaps.data.MealData;
import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.data.PumpEnactResult;
import info.nightscout.androidaps.db.ExtendedBolus; import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.db.TemporaryBasal; import info.nightscout.androidaps.db.TemporaryBasal;
import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.events.EventBolusRequested; import info.nightscout.androidaps.events.EventBolusRequested;
@ -1230,6 +1231,16 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain
return activeTreatments.getExtendedBoluses(); return activeTreatments.getExtendedBoluses();
} }
@Override
public TempTarget getTempTarget(long time) {
return activeTreatments.getTempTarget(time);
}
@Override
public OverlappingIntervals<TempTarget> getTempTargets() {
return activeTreatments.getTempTargets();
}
@Override @Override
public long oldestDataAvaialable() { public long oldestDataAvaialable() {
return activeTreatments.oldestDataAvaialable(); return activeTreatments.oldestDataAvaialable();

View file

@ -12,6 +12,7 @@ import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R; import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.GlucoseStatus; import info.nightscout.androidaps.data.GlucoseStatus;
import info.nightscout.androidaps.data.IobTotal;
import info.nightscout.androidaps.data.MealData; import info.nightscout.androidaps.data.MealData;
import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.interfaces.APSInterface; import info.nightscout.androidaps.interfaces.APSInterface;
@ -21,11 +22,9 @@ import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin; import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
import info.nightscout.androidaps.plugins.Loop.APSResult; import info.nightscout.androidaps.plugins.Loop.APSResult;
import info.nightscout.androidaps.plugins.Loop.ScriptReader; import info.nightscout.androidaps.plugins.Loop.ScriptReader;
import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile;
import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateGui; import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateGui;
import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateResultGui; import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateResultGui;
import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangePlugin;
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile;
import info.nightscout.utils.DateUtil; import info.nightscout.utils.DateUtil;
import info.nightscout.utils.Profiler; import info.nightscout.utils.Profiler;
import info.nightscout.utils.Round; import info.nightscout.utils.Round;
@ -56,7 +55,7 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface {
@Override @Override
public String getNameShort() { public String getNameShort() {
String name = MainApp.sResources.getString(R.string.oaps_shortname); String name = MainApp.sResources.getString(R.string.oaps_shortname);
if (!name.trim().isEmpty()){ if (!name.trim().isEmpty()) {
//only if translation exists //only if translation exists
return name; return name;
} }
@ -149,7 +148,7 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface {
return; return;
} }
if (profile == null || profile.getIc(NSProfile.secondsFromMidnight()) == null || profile.getIsf(NSProfile.secondsFromMidnight()) == null || profile.getBasal(NSProfile.secondsFromMidnight()) == null ) { if (profile == null || profile.getIc(NSProfile.secondsFromMidnight()) == null || profile.getIsf(NSProfile.secondsFromMidnight()) == null || profile.getBasal(NSProfile.secondsFromMidnight()) == null) {
MainApp.bus().post(new EventOpenAPSUpdateResultGui(MainApp.instance().getString(R.string.openapsma_noprofile))); MainApp.bus().post(new EventOpenAPSUpdateResultGui(MainApp.instance().getString(R.string.openapsma_noprofile)));
if (Config.logAPSResult) if (Config.logAPSResult)
log.debug(MainApp.instance().getString(R.string.openapsma_noprofile)); log.debug(MainApp.instance().getString(R.string.openapsma_noprofile));
@ -201,15 +200,12 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface {
targetBg = verifyHardLimits(targetBg, "targetBg", Constants.VERY_HARD_LIMIT_TARGET_BG[0], Constants.VERY_HARD_LIMIT_TARGET_BG[1]); targetBg = verifyHardLimits(targetBg, "targetBg", Constants.VERY_HARD_LIMIT_TARGET_BG[0], Constants.VERY_HARD_LIMIT_TARGET_BG[1]);
boolean isTempTarget = false; boolean isTempTarget = false;
TempTargetRangePlugin tempTargetRangePlugin = (TempTargetRangePlugin) MainApp.getSpecificPlugin(TempTargetRangePlugin.class); TempTarget tempTarget = MainApp.getConfigBuilder().getTempTarget(new Date().getTime());
if (tempTargetRangePlugin != null && tempTargetRangePlugin.isEnabled(PluginBase.GENERAL)) { if (tempTarget != null) {
TempTarget tempTarget = tempTargetRangePlugin.getTempTargetInProgress(new Date().getTime()); isTempTarget = true;
if (tempTarget != null) { minBg = verifyHardLimits(tempTarget.low, "minBg", Constants.VERY_HARD_LIMIT_TEMP_MIN_BG[0], Constants.VERY_HARD_LIMIT_TEMP_MIN_BG[1]);
isTempTarget = true; maxBg = verifyHardLimits(tempTarget.high, "maxBg", Constants.VERY_HARD_LIMIT_TEMP_MAX_BG[0], Constants.VERY_HARD_LIMIT_TEMP_MAX_BG[1]);
minBg = verifyHardLimits(tempTarget.low, "minBg", Constants.VERY_HARD_LIMIT_TEMP_MIN_BG[0], Constants.VERY_HARD_LIMIT_TEMP_MIN_BG[1]); targetBg = verifyHardLimits((tempTarget.low + tempTarget.high) / 2, "targetBg", Constants.VERY_HARD_LIMIT_TEMP_TARGET_BG[0], Constants.VERY_HARD_LIMIT_TEMP_TARGET_BG[1]);
maxBg = verifyHardLimits(tempTarget.high, "maxBg", Constants.VERY_HARD_LIMIT_TEMP_MAX_BG[0], Constants.VERY_HARD_LIMIT_TEMP_MAX_BG[1]);
targetBg = verifyHardLimits((tempTarget.low + tempTarget.high) / 2, "targetBg", Constants.VERY_HARD_LIMIT_TEMP_TARGET_BG[0], Constants.VERY_HARD_LIMIT_TEMP_TARGET_BG[1]);
}
} }
@ -217,8 +213,10 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface {
maxBasal = verifyHardLimits(maxBasal, "max_basal", 0.1, 10); maxBasal = verifyHardLimits(maxBasal, "max_basal", 0.1, 10);
if (!checkOnlyHardLimits(profile.getDia(), "dia", 2, 7)) return; if (!checkOnlyHardLimits(profile.getDia(), "dia", 2, 7)) return;
if (!checkOnlyHardLimits(profile.getIc(profile.secondsFromMidnight()), "carbratio", 2, 100)) return; if (!checkOnlyHardLimits(profile.getIc(profile.secondsFromMidnight()), "carbratio", 2, 100))
if (!checkOnlyHardLimits(NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()).doubleValue(), units), "sens", 2, 900)) return; return;
if (!checkOnlyHardLimits(NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()).doubleValue(), units), "sens", 2, 900))
return;
if (!checkOnlyHardLimits(profile.getMaxDailyBasal(), "max_daily_basal", 0.1, 10)) return; if (!checkOnlyHardLimits(profile.getMaxDailyBasal(), "max_daily_basal", 0.1, 10)) return;
if (!checkOnlyHardLimits(pump.getBaseBasalRate(), "current_basal", 0.01, 5)) return; if (!checkOnlyHardLimits(pump.getBaseBasalRate(), "current_basal", 0.01, 5)) return;
@ -227,7 +225,7 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface {
log.debug("Limiting data to oldest available temps: " + new Date(oldestDataAvailable).toString()); log.debug("Limiting data to oldest available temps: " + new Date(oldestDataAvailable).toString());
startPart = new Date(); startPart = new Date();
if(MainApp.getConfigBuilder().isAMAModeEnabled()){ if (MainApp.getConfigBuilder().isAMAModeEnabled()) {
//lastAutosensResult = Autosens.detectSensitivityandCarbAbsorption(getBGDataFrom, null); //lastAutosensResult = Autosens.detectSensitivityandCarbAbsorption(getBGDataFrom, null);
lastAutosensResult = IobCobCalculatorPlugin.detectSensitivity(getBGDataFrom); lastAutosensResult = IobCobCalculatorPlugin.detectSensitivity(getBGDataFrom);
} else { } else {
@ -241,7 +239,7 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface {
lastAutosensResult.ratio, //autosensDataRatio lastAutosensResult.ratio, //autosensDataRatio
isTempTarget, isTempTarget,
SafeParse.stringToDouble(SP.getString("openapsama_min_5m_carbimpact", "3.0"))//min_5m_carbimpact SafeParse.stringToDouble(SP.getString("openapsama_min_5m_carbimpact", "3.0"))//min_5m_carbimpact
); );
DetermineBasalResultAMA determineBasalResultAMA = determineBasalAdapterAMAJS.invoke(); DetermineBasalResultAMA determineBasalResultAMA = determineBasalAdapterAMAJS.invoke();

View file

@ -24,7 +24,6 @@ import info.nightscout.androidaps.plugins.Loop.ScriptReader;
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile;
import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateGui; import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateGui;
import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateResultGui; import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateResultGui;
import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangePlugin;
import info.nightscout.utils.DateUtil; import info.nightscout.utils.DateUtil;
import info.nightscout.utils.Profiler; import info.nightscout.utils.Profiler;
import info.nightscout.utils.Round; import info.nightscout.utils.Round;
@ -201,15 +200,12 @@ public class OpenAPSMAPlugin implements PluginBase, APSInterface {
minBg = verifyHardLimits(minBg, "minBg", Constants.VERY_HARD_LIMIT_MIN_BG[0], Constants.VERY_HARD_LIMIT_MIN_BG[1]); minBg = verifyHardLimits(minBg, "minBg", Constants.VERY_HARD_LIMIT_MIN_BG[0], Constants.VERY_HARD_LIMIT_MIN_BG[1]);
maxBg = verifyHardLimits(maxBg, "maxBg", Constants.VERY_HARD_LIMIT_MAX_BG[0], Constants.VERY_HARD_LIMIT_MAX_BG[1]); maxBg = verifyHardLimits(maxBg, "maxBg", Constants.VERY_HARD_LIMIT_MAX_BG[0], Constants.VERY_HARD_LIMIT_MAX_BG[1]);
targetBg = verifyHardLimits(targetBg, "targetBg", Constants.VERY_HARD_LIMIT_TARGET_BG[0], Constants.VERY_HARD_LIMIT_TARGET_BG[1]); targetBg = verifyHardLimits(targetBg, "targetBg", Constants.VERY_HARD_LIMIT_TARGET_BG[0], Constants.VERY_HARD_LIMIT_TARGET_BG[1]);
TempTargetRangePlugin tempTargetRangePlugin = (TempTargetRangePlugin) MainApp.getSpecificPlugin(TempTargetRangePlugin.class); TempTarget tempTarget = MainApp.getConfigBuilder().getTempTarget(new Date().getTime());
if (tempTargetRangePlugin != null && tempTargetRangePlugin.isEnabled(PluginBase.GENERAL)) { if (tempTarget != null) {
TempTarget tempTarget = tempTargetRangePlugin.getTempTargetInProgress(new Date().getTime()); minBg = verifyHardLimits(tempTarget.low, "minBg", Constants.VERY_HARD_LIMIT_TEMP_MIN_BG[0], Constants.VERY_HARD_LIMIT_TEMP_MIN_BG[1]);
if (tempTarget != null) { maxBg = verifyHardLimits(tempTarget.high, "maxBg", Constants.VERY_HARD_LIMIT_TEMP_MAX_BG[0], Constants.VERY_HARD_LIMIT_TEMP_MAX_BG[1]);
minBg = verifyHardLimits(tempTarget.low, "minBg", Constants.VERY_HARD_LIMIT_TEMP_MIN_BG[0], Constants.VERY_HARD_LIMIT_TEMP_MIN_BG[1]); targetBg = verifyHardLimits((tempTarget.low + tempTarget.high) / 2, "targetBg", Constants.VERY_HARD_LIMIT_TEMP_TARGET_BG[0], Constants.VERY_HARD_LIMIT_TEMP_TARGET_BG[1]);
maxBg = verifyHardLimits(tempTarget.high, "maxBg", Constants.VERY_HARD_LIMIT_TEMP_MAX_BG[0], Constants.VERY_HARD_LIMIT_TEMP_MAX_BG[1]);
targetBg = verifyHardLimits((tempTarget.low + tempTarget.high) / 2, "targetBg", Constants.VERY_HARD_LIMIT_TEMP_TARGET_BG[0], Constants.VERY_HARD_LIMIT_TEMP_TARGET_BG[1]);
}
} }
maxIob = verifyHardLimits(maxIob, "maxIob", 0, 7); maxIob = verifyHardLimits(maxIob, "maxIob", 0, 7);

View file

@ -78,6 +78,7 @@ import info.nightscout.androidaps.events.EventPreferenceChange;
import info.nightscout.androidaps.events.EventPumpStatusChanged; import info.nightscout.androidaps.events.EventPumpStatusChanged;
import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.events.EventRefreshGui;
import info.nightscout.androidaps.events.EventTempBasalChange; import info.nightscout.androidaps.events.EventTempBasalChange;
import info.nightscout.androidaps.events.EventTempTargetChange;
import info.nightscout.androidaps.events.EventTreatmentChange; import info.nightscout.androidaps.events.EventTreatmentChange;
import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.interfaces.PumpInterface;
@ -104,8 +105,6 @@ import info.nightscout.androidaps.plugins.Overview.graphExtensions.FixedLineGrap
import info.nightscout.androidaps.plugins.Overview.graphExtensions.PointsWithLabelGraphSeries; import info.nightscout.androidaps.plugins.Overview.graphExtensions.PointsWithLabelGraphSeries;
import info.nightscout.androidaps.plugins.Overview.graphExtensions.TimeAsXAxisLabelFormatter; import info.nightscout.androidaps.plugins.Overview.graphExtensions.TimeAsXAxisLabelFormatter;
import info.nightscout.androidaps.plugins.SourceXdrip.SourceXdripPlugin; import info.nightscout.androidaps.plugins.SourceXdrip.SourceXdripPlugin;
import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangePlugin;
import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTargetRangeChange;
import info.nightscout.utils.BolusWizard; import info.nightscout.utils.BolusWizard;
import info.nightscout.utils.DateUtil; import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.DecimalFormatter;
@ -196,7 +195,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
View view; View view;
if(smallHeight){ if (smallHeight) {
view = inflater.inflate(R.layout.overview_fragment_smallheight, container, false); view = inflater.inflate(R.layout.overview_fragment_smallheight, container, false);
} else { } else {
view = inflater.inflate(R.layout.overview_fragment, container, false); view = inflater.inflate(R.layout.overview_fragment, container, false);
@ -763,8 +762,8 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
} }
@Subscribe @Subscribe
public void onStatusEvent(final EventTempTargetRangeChange ev) { public void onStatusEvent(final EventTempTargetChange ev) {
scheduleUpdateGUI("EventTempTargetRangeChange"); scheduleUpdateGUI("EventTempTargetChange");
} }
@Subscribe @Subscribe
@ -898,29 +897,24 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
// temp target // temp target
NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile();
TempTargetRangePlugin tempTargetRangePlugin = (TempTargetRangePlugin) MainApp.getSpecificPlugin(TempTargetRangePlugin.class); TempTarget tempTarget = MainApp.getConfigBuilder().getTempTarget(new Date().getTime());
if (Config.APS && tempTargetRangePlugin != null && tempTargetRangePlugin.isEnabled(PluginBase.GENERAL)) { if (tempTarget != null) {
TempTarget tempTarget = tempTargetRangePlugin.getTempTargetInProgress(new Date().getTime()); tempTargetView.setTextColor(Color.BLACK);
if (tempTarget != null) { tempTargetView.setBackgroundColor(MainApp.sResources.getColor(R.color.tempTargetBackground));
tempTargetView.setTextColor(Color.BLACK); tempTargetView.setVisibility(View.VISIBLE);
tempTargetView.setBackgroundColor(MainApp.sResources.getColor(R.color.tempTargetBackground)); tempTargetView.setText(NSProfile.toUnitsString(tempTarget.low, NSProfile.fromMgdlToUnits(tempTarget.low, profile.getUnits()), profile.getUnits()) + " - " + NSProfile.toUnitsString(tempTarget.high, NSProfile.fromMgdlToUnits(tempTarget.high, profile.getUnits()), profile.getUnits()));
tempTargetView.setVisibility(View.VISIBLE);
tempTargetView.setText(NSProfile.toUnitsString(tempTarget.low, NSProfile.fromMgdlToUnits(tempTarget.low, profile.getUnits()), profile.getUnits()) + " - " + NSProfile.toUnitsString(tempTarget.high, NSProfile.fromMgdlToUnits(tempTarget.high, profile.getUnits()), profile.getUnits()));
} else {
Double maxBgDefault = Constants.MAX_BG_DEFAULT_MGDL;
Double minBgDefault = Constants.MIN_BG_DEFAULT_MGDL;
if (!profile.getUnits().equals(Constants.MGDL)) {
maxBgDefault = Constants.MAX_BG_DEFAULT_MMOL;
minBgDefault = Constants.MIN_BG_DEFAULT_MMOL;
}
tempTargetView.setTextColor(Color.WHITE);
tempTargetView.setBackgroundColor(MainApp.sResources.getColor(R.color.tempTargetDisabledBackground));
tempTargetView.setText(SP.getDouble("openapsma_min_bg", minBgDefault) + " - " + SP.getDouble("openapsma_max_bg", maxBgDefault));
tempTargetView.setVisibility(View.VISIBLE);
}
} else { } else {
tempTargetView.setVisibility(View.GONE);
Double maxBgDefault = Constants.MAX_BG_DEFAULT_MGDL;
Double minBgDefault = Constants.MIN_BG_DEFAULT_MGDL;
if (!profile.getUnits().equals(Constants.MGDL)) {
maxBgDefault = Constants.MAX_BG_DEFAULT_MMOL;
minBgDefault = Constants.MIN_BG_DEFAULT_MMOL;
}
tempTargetView.setTextColor(Color.WHITE);
tempTargetView.setBackgroundColor(MainApp.sResources.getColor(R.color.tempTargetDisabledBackground));
tempTargetView.setText(SP.getDouble("openapsma_min_bg", minBgDefault) + " - " + SP.getDouble("openapsma_max_bg", maxBgDefault));
tempTargetView.setVisibility(View.VISIBLE);
} }
// **** Temp button **** // **** Temp button ****

View file

@ -1,124 +0,0 @@
package info.nightscout.androidaps.plugins.TempTargetRange;
import android.support.annotation.Nullable;
import com.squareup.otto.Subscribe;
import java.util.Date;
import java.util.List;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTargetRangeChange;
/**
* Created by mike on 13/01/17.
*/
public class TempTargetRangePlugin implements PluginBase {
static boolean fragmentEnabled = false;
static boolean fragmentVisible = true;
private static List<TempTarget> tempTargets;
TempTargetRangePlugin() {
initializeData();
MainApp.bus().register(this);
}
@Override
public int getType() {
return PluginBase.GENERAL;
}
@Override
public String getFragmentClass() {
return TempTargetRangeFragment.class.getName();
}
@Override
public String getName() {
return MainApp.sResources.getString(R.string.temptargetrange);
}
@Override
public String getNameShort() {
String name = MainApp.sResources.getString(R.string.temptargetrange_shortname);
if (!name.trim().isEmpty()){
//only if translation exists
return name;
}
// use long name as fallback
return getName();
}
@Override
public boolean isEnabled(int type) {
return type == GENERAL && fragmentEnabled;
}
@Override
public boolean isVisibleInTabs(int type) {
return type == GENERAL && fragmentVisible;
}
@Override
public boolean canBeHidden(int type) {
return true;
}
@Override
public boolean hasFragment() {
return true;
}
@Override
public boolean showInList(int type) {
return true;
}
@Override
public void setFragmentEnabled(int type, boolean fragmentEnabled) {
if (type == GENERAL) {
this.fragmentEnabled = fragmentEnabled;
}
}
@Override
public void setFragmentVisible(int type, boolean fragmentVisible) {
if (type == GENERAL) this.fragmentVisible = fragmentVisible;
}
public static boolean isEnabled() {
return fragmentEnabled;
}
@Subscribe
public void onStatusEvent(final EventTempTargetRangeChange ev) {
initializeData();
}
public void initializeData() {
long fromMills = (long) (new Date().getTime() - 60 * 60 * 1000L * 24);
tempTargets = MainApp.getDbHelper().getTemptargetsDataFromTime(fromMills, false);
}
public List<TempTarget> getList() {
return tempTargets;
}
@Nullable
public TempTarget getTempTargetInProgress(long time) {
for (int i = 0; i < tempTargets.size(); i++) {
// a zero-duration temp target will cancel all prior targets
if (tempTargets.get(i).durationInMinutes == 0) return null;
if (tempTargets.get(i).date > time) continue;
if (tempTargets.get(i).date >= time) return tempTargets.get(i);
}
return null;
}
}

View file

@ -1,8 +0,0 @@
package info.nightscout.androidaps.plugins.TempTargetRange.events;
/**
* Created by mike on 13.01.2017.
*/
public class EventTempTargetRangeChange {
}

View file

@ -15,6 +15,7 @@ import org.slf4j.LoggerFactory;
import info.nightscout.androidaps.R; import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.TreatmentsFromHistory.fragments.TreatmentsBolusFragment; import info.nightscout.androidaps.plugins.TreatmentsFromHistory.fragments.TreatmentsBolusFragment;
import info.nightscout.androidaps.plugins.TreatmentsFromHistory.fragments.TreatmentsExtendedBolusesFragment; import info.nightscout.androidaps.plugins.TreatmentsFromHistory.fragments.TreatmentsExtendedBolusesFragment;
import info.nightscout.androidaps.plugins.TreatmentsFromHistory.fragments.TreatmentsTempTargetFragment;
import info.nightscout.androidaps.plugins.TreatmentsFromHistory.fragments.TreatmentsTemporaryBasalsFragment; import info.nightscout.androidaps.plugins.TreatmentsFromHistory.fragments.TreatmentsTemporaryBasalsFragment;
public class TreatmentsFromHistoryFragment extends Fragment implements View.OnClickListener { public class TreatmentsFromHistoryFragment extends Fragment implements View.OnClickListener {
@ -30,6 +31,7 @@ public class TreatmentsFromHistoryFragment extends Fragment implements View.OnCl
TextView treatmentsTab; TextView treatmentsTab;
TextView extendedBolusesTab; TextView extendedBolusesTab;
TextView tempBasalsTab; TextView tempBasalsTab;
TextView tempTargetTab;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
@ -39,9 +41,11 @@ public class TreatmentsFromHistoryFragment extends Fragment implements View.OnCl
treatmentsTab = (TextView) view.findViewById(R.id.treatments_treatments); treatmentsTab = (TextView) view.findViewById(R.id.treatments_treatments);
extendedBolusesTab = (TextView) view.findViewById(R.id.treatments_extendedboluses); extendedBolusesTab = (TextView) view.findViewById(R.id.treatments_extendedboluses);
tempBasalsTab = (TextView) view.findViewById(R.id.treatments_tempbasals); tempBasalsTab = (TextView) view.findViewById(R.id.treatments_tempbasals);
tempTargetTab = (TextView) view.findViewById(R.id.treatments_temptargets);
treatmentsTab.setOnClickListener(this); treatmentsTab.setOnClickListener(this);
extendedBolusesTab.setOnClickListener(this); extendedBolusesTab.setOnClickListener(this);
tempBasalsTab.setOnClickListener(this); tempBasalsTab.setOnClickListener(this);
tempTargetTab.setOnClickListener(this);
context = getContext(); context = getContext();
setFragment(new TreatmentsBolusFragment()); setFragment(new TreatmentsBolusFragment());
@ -62,7 +66,9 @@ public class TreatmentsFromHistoryFragment extends Fragment implements View.OnCl
case R.id.treatments_tempbasals: case R.id.treatments_tempbasals:
setFragment(new TreatmentsTemporaryBasalsFragment()); setFragment(new TreatmentsTemporaryBasalsFragment());
break; break;
case R.id.treatments_temptargets:
setFragment(new TreatmentsTempTargetFragment());
break;
} }
} }

View file

@ -18,10 +18,12 @@ import info.nightscout.androidaps.data.Iob;
import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.data.IobTotal;
import info.nightscout.androidaps.data.MealData; import info.nightscout.androidaps.data.MealData;
import info.nightscout.androidaps.db.ExtendedBolus; import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.db.TemporaryBasal; import info.nightscout.androidaps.db.TemporaryBasal;
import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.events.EventExtendedBolusChange; import info.nightscout.androidaps.events.EventExtendedBolusChange;
import info.nightscout.androidaps.events.EventTempBasalChange; import info.nightscout.androidaps.events.EventTempBasalChange;
import info.nightscout.androidaps.events.EventTempTargetChange;
import info.nightscout.androidaps.events.EventTreatmentChange; import info.nightscout.androidaps.events.EventTreatmentChange;
import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.interfaces.PumpInterface;
@ -45,6 +47,7 @@ public class TreatmentsFromHistoryPlugin implements PluginBase, TreatmentsInterf
public static List<Treatment> treatments; public static List<Treatment> treatments;
private static OverlappingIntervals<TemporaryBasal> tempBasals = new OverlappingIntervals<>(); private static OverlappingIntervals<TemporaryBasal> tempBasals = new OverlappingIntervals<>();
private static OverlappingIntervals<ExtendedBolus> extendedBoluses = new OverlappingIntervals<>(); private static OverlappingIntervals<ExtendedBolus> extendedBoluses = new OverlappingIntervals<>();
private static OverlappingIntervals<TempTarget> tempTargets = new OverlappingIntervals<>();
private static boolean fragmentEnabled = true; private static boolean fragmentEnabled = true;
private static boolean fragmentVisible = true; private static boolean fragmentVisible = true;
@ -123,6 +126,7 @@ public class TreatmentsFromHistoryPlugin implements PluginBase, TreatmentsInterf
initializeTempBasalData(); initializeTempBasalData();
initializeTreatmentData(); initializeTreatmentData();
initializeExtendedBolusData(); initializeExtendedBolusData();
initializeTempTargetData();
} }
public static void initializeTreatmentData() { public static void initializeTreatmentData() {
@ -157,6 +161,11 @@ public class TreatmentsFromHistoryPlugin implements PluginBase, TreatmentsInterf
} }
public void initializeTempTargetData() {
long fromMills = new Date().getTime() - 60 * 60 * 1000L * 24;
tempTargets.reset().add(MainApp.getDbHelper().getTemptargetsDataFromTime(fromMills, false));
}
@Override @Override
public IobTotal getLastCalculationTreatments() { public IobTotal getLastCalculationTreatments() {
return lastTreatmentCalculation; return lastTreatmentCalculation;
@ -392,4 +401,22 @@ public class TreatmentsFromHistoryPlugin implements PluginBase, TreatmentsInterf
return oldestTime; return oldestTime;
} }
// TempTargets
@Subscribe
public void onStatusEvent(final EventTempTargetChange ev) {
initializeTempTargetData();
}
@Nullable
@Override
public TempTarget getTempTarget(long time) {
return (TempTarget) tempTargets.getValueByInterval(time);
}
@Override
public OverlappingIntervals<TempTarget> getTempTargets() {
return tempTargets;
}
} }

View file

@ -170,6 +170,10 @@ public class TreatmentsBolusFragment extends Fragment implements View.OnClickLis
refreshFromNS = (Button) view.findViewById(R.id.treatments_reshreshfromnightscout); refreshFromNS = (Button) view.findViewById(R.id.treatments_reshreshfromnightscout);
refreshFromNS.setOnClickListener(this); refreshFromNS.setOnClickListener(this);
boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false);
if (nsUploadOnly)
refreshFromNS.setVisibility(View.GONE);
context = getContext(); context = getContext();
updateGUI(); updateGUI();
@ -180,23 +184,18 @@ public class TreatmentsBolusFragment extends Fragment implements View.OnClickLis
public void onClick(View view) { public void onClick(View view) {
switch (view.getId()) { switch (view.getId()) {
case R.id.treatments_reshreshfromnightscout: case R.id.treatments_reshreshfromnightscout:
boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false); AlertDialog.Builder builder = new AlertDialog.Builder(this.getContext());
if (nsUploadOnly) { builder.setTitle(this.getContext().getString(R.string.confirmation));
ToastUtils.showToastInUiThread(getContext(), this.getContext().getString(R.string.ns_upload_only_enabled)); builder.setMessage(this.getContext().getString(R.string.refreshtreatmentsfromnightscout));
} else { builder.setPositiveButton(this.getContext().getString(R.string.ok), new DialogInterface.OnClickListener() {
AlertDialog.Builder builder = new AlertDialog.Builder(this.getContext()); public void onClick(DialogInterface dialog, int id) {
builder.setTitle(this.getContext().getString(R.string.confirmation)); MainApp.getDbHelper().resetTreatments();
builder.setMessage(this.getContext().getString(R.string.refreshtreatmentsfromnightscout)); Intent restartNSClient = new Intent(Intents.ACTION_RESTART);
builder.setPositiveButton(this.getContext().getString(R.string.ok), new DialogInterface.OnClickListener() { MainApp.instance().getApplicationContext().sendBroadcast(restartNSClient);
public void onClick(DialogInterface dialog, int id) { }
MainApp.getDbHelper().resetTreatments(); });
Intent restartNSClient = new Intent(Intents.ACTION_RESTART); builder.setNegativeButton(this.getContext().getString(R.string.cancel), null);
MainApp.instance().getApplicationContext().sendBroadcast(restartNSClient); builder.show();
}
});
builder.setNegativeButton(this.getContext().getString(R.string.cancel), null);
builder.show();
}
break; break;
} }
} }

View file

@ -1,13 +1,11 @@
package info.nightscout.androidaps.plugins.TempTargetRange; package info.nightscout.androidaps.plugins.TreatmentsFromHistory.fragments;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Paint; import android.graphics.Paint;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
@ -21,35 +19,25 @@ import android.widget.Button;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.j256.ormlite.dao.Dao;
import com.squareup.otto.Subscribe; import com.squareup.otto.Subscribe;
import java.sql.SQLException;
import java.util.List;
import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R; import info.nightscout.androidaps.R;
import info.nightscout.androidaps.Services.Intents; import info.nightscout.androidaps.Services.Intents;
import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.events.EventTempTargetChange;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile;
import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTargetRangeChange;
import info.nightscout.utils.DateUtil; import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.DecimalFormatter;
import info.nightscout.utils.OverlappingIntervals;
import info.nightscout.utils.SP; import info.nightscout.utils.SP;
import info.nightscout.utils.ToastUtils;
/** /**
* Created by mike on 13/01/17. * Created by mike on 13/01/17.
*/ */
public class TempTargetRangeFragment extends Fragment implements View.OnClickListener { public class TreatmentsTempTargetFragment extends Fragment implements View.OnClickListener {
private static TempTargetRangePlugin tempTargetRangePlugin = new TempTargetRangePlugin();
public static TempTargetRangePlugin getPlugin() {
return tempTargetRangePlugin;
}
RecyclerView recyclerView; RecyclerView recyclerView;
LinearLayoutManager llm; LinearLayoutManager llm;
@ -59,15 +47,15 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.TempTargetsViewHolder> { public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.TempTargetsViewHolder> {
List<TempTarget> tempTargetList; OverlappingIntervals<TempTarget> tempTargetList;
RecyclerViewAdapter(List<TempTarget> TempTargetList) { RecyclerViewAdapter(OverlappingIntervals<TempTarget> TempTargetList) {
this.tempTargetList = TempTargetList; this.tempTargetList = TempTargetList;
} }
@Override @Override
public TempTargetsViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { public TempTargetsViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.temptargetrange_item, viewGroup, false); View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.treatments_temptarget_item, viewGroup, false);
TempTargetsViewHolder TempTargetsViewHolder = new TempTargetsViewHolder(v); TempTargetsViewHolder TempTargetsViewHolder = new TempTargetsViewHolder(v);
return TempTargetsViewHolder; return TempTargetsViewHolder;
} }
@ -166,14 +154,14 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.temptargetrange_fragment, container, false); View view = inflater.inflate(R.layout.treatments_temptarget_fragment, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.temptargetrange_recyclerview); recyclerView = (RecyclerView) view.findViewById(R.id.temptargetrange_recyclerview);
recyclerView.setHasFixedSize(true); recyclerView.setHasFixedSize(true);
llm = new LinearLayoutManager(view.getContext()); llm = new LinearLayoutManager(view.getContext());
recyclerView.setLayoutManager(llm); recyclerView.setLayoutManager(llm);
RecyclerViewAdapter adapter = new RecyclerViewAdapter(tempTargetRangePlugin.getList()); RecyclerViewAdapter adapter = new RecyclerViewAdapter(MainApp.getConfigBuilder().getTempTargets());
recyclerView.setAdapter(adapter); recyclerView.setAdapter(adapter);
refreshFromNS = (Button) view.findViewById(R.id.temptargetrange_refreshfromnightscout); refreshFromNS = (Button) view.findViewById(R.id.temptargetrange_refreshfromnightscout);
@ -181,6 +169,10 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
context = getContext(); context = getContext();
boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false);
if (nsUploadOnly)
refreshFromNS.setVisibility(View.GONE);
updateGUI(); updateGUI();
return view; return view;
} }
@ -189,27 +181,21 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
public void onClick(View view) { public void onClick(View view) {
switch (view.getId()) { switch (view.getId()) {
case R.id.temptargetrange_refreshfromnightscout: case R.id.temptargetrange_refreshfromnightscout:
boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false); AlertDialog.Builder builder = new AlertDialog.Builder(this.getContext());
if (nsUploadOnly) { builder.setTitle(this.getContext().getString(R.string.confirmation));
ToastUtils.showToastInUiThread(getContext(), this.getContext().getString(R.string.ns_upload_only_enabled)); builder.setMessage(this.getContext().getString(R.string.refreshtemptargetsfromnightscout));
} else { builder.setPositiveButton(this.getContext().getString(R.string.ok), new DialogInterface.OnClickListener() {
AlertDialog.Builder builder = new AlertDialog.Builder(this.getContext()); public void onClick(DialogInterface dialog, int id) {
builder.setTitle(this.getContext().getString(R.string.confirmation)); MainApp.getDbHelper().resetTempTargets();
builder.setMessage(this.getContext().getString(R.string.refreshtemptargetsfromnightscout)); Intent restartNSClient = new Intent(Intents.ACTION_RESTART);
builder.setPositiveButton(this.getContext().getString(R.string.ok), new DialogInterface.OnClickListener() { MainApp.instance().getApplicationContext().sendBroadcast(restartNSClient);
public void onClick(DialogInterface dialog, int id) { }
MainApp.getDbHelper().resetTempTargets(); });
tempTargetRangePlugin.initializeData(); builder.setNegativeButton(this.getContext().getString(R.string.cancel), null);
updateGUI(); builder.show();
Intent restartNSClient = new Intent(Intents.ACTION_RESTART);
MainApp.instance().getApplicationContext().sendBroadcast(restartNSClient);
}
});
builder.setNegativeButton(this.getContext().getString(R.string.cancel), null);
builder.show();
}
break; break;
} }
} }
@Override @Override
@ -225,7 +211,7 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
} }
@Subscribe @Subscribe
public void onStatusEvent(final EventTempTargetRangeChange ev) { public void onStatusEvent(final EventTempTargetChange ev) {
updateGUI(); updateGUI();
} }
@ -235,7 +221,7 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
activity.runOnUiThread(new Runnable() { activity.runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
recyclerView.swapAdapter(new RecyclerViewAdapter(tempTargetRangePlugin.getList()), false); recyclerView.swapAdapter(new RecyclerViewAdapter(MainApp.getConfigBuilder().getTempTargets()), false);
} }
}); });
} }

View file

@ -21,7 +21,6 @@ import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.plugins.Actions.dialogs.FillDialog; import info.nightscout.androidaps.plugins.Actions.dialogs.FillDialog;
import info.nightscout.androidaps.plugins.Loop.LoopPlugin; import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile;
import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangePlugin;
import info.nightscout.utils.BolusWizard; import info.nightscout.utils.BolusWizard;
import info.nightscout.utils.DateUtil; import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.DecimalFormatter;
@ -111,11 +110,6 @@ public class ActionStringHandler {
boolean isMGDL = Boolean.parseBoolean(act[1]); boolean isMGDL = Boolean.parseBoolean(act[1]);
NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile();
TempTargetRangePlugin tempTargetRangePlugin = (TempTargetRangePlugin) MainApp.getSpecificPlugin(TempTargetRangePlugin.class);
if (!(Config.APS && tempTargetRangePlugin != null && tempTargetRangePlugin.isEnabled(PluginBase.GENERAL))) {
sendError("TempTargets not possible! Please check your configuration.");
return;
}
if (profile == null) { if (profile == null) {
sendError("No profile found!"); sendError("No profile found!");
return; return;
@ -281,14 +275,11 @@ public class ActionStringHandler {
} }
//Check for Temp-Target: //Check for Temp-Target:
TempTargetRangePlugin tempTargetRangePlugin = (TempTargetRangePlugin) MainApp.getSpecificPlugin(TempTargetRangePlugin.class); TempTarget tempTarget = MainApp.getConfigBuilder().getTempTarget(new Date().getTime());
if (Config.APS && tempTargetRangePlugin != null && tempTargetRangePlugin.isEnabled(PluginBase.GENERAL)) { if (tempTarget != null) {
TempTarget tempTarget = tempTargetRangePlugin.getTempTargetInProgress(new Date().getTime()); ret += "Temp Target: " + NSProfile.toUnitsString(tempTarget.low, NSProfile.fromMgdlToUnits(tempTarget.low, profile.getUnits()), profile.getUnits()) + " - " + NSProfile.toUnitsString(tempTarget.high, NSProfile.fromMgdlToUnits(tempTarget.high, profile.getUnits()), profile.getUnits());
if (tempTarget != null) { ret += "\nuntil: " + DateUtil.timeString(tempTarget.originalEnd());
ret += "Temp Target: " + NSProfile.toUnitsString(tempTarget.low, NSProfile.fromMgdlToUnits(tempTarget.low, profile.getUnits()), profile.getUnits()) + " - " + NSProfile.toUnitsString(tempTarget.high, NSProfile.fromMgdlToUnits(tempTarget.high, profile.getUnits()), profile.getUnits()); ret += "\n\n";
ret += "\nuntil: " + DateUtil.timeString(tempTarget.originalEnd());
ret += "\n\n";
}
} }
//Default Range/Target //Default Range/Target

View file

@ -37,7 +37,15 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:text="@string/tempbasals" /> android:text="@string/tempbasal" />
<TextView
android:id="@+id/treatments_temptargets"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:text="@string/temptarget" />
</LinearLayout> </LinearLayout>

View file

@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context="info.nightscout.androidaps.plugins.Treatments.fragments.TreatmentsTempBasalsFragment"> tools:context="info.nightscout.androidaps.plugins.TreatmentsFromHistory.fragments.TreatmentsTempTargetFragment">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"

View file

@ -128,7 +128,6 @@
<string name="setextendedbolusquestion">Задай нов удължен болусs:</string> <string name="setextendedbolusquestion">Задай нов удължен болусs:</string>
<string name="setbasalquestion">Приложи нов временен базал:</string> <string name="setbasalquestion">Приложи нов временен базал:</string>
<string name="simpleprofile">Обикновен профил</string> <string name="simpleprofile">Обикновен профил</string>
<string name="tempbasals">Временен базал</string>
<string name="tempbasals_iob_label_string">IOB:</string> <string name="tempbasals_iob_label_string">IOB:</string>
<string name="tempbasals_iobtotal_label_string">Общо IOB:</string> <string name="tempbasals_iobtotal_label_string">Общо IOB:</string>
<string name="tempbasals_netinsulin_label_string">Инс:</string> <string name="tempbasals_netinsulin_label_string">Инс:</string>
@ -344,7 +343,6 @@
<string name="timeshift_hint">Брой часове, с които ще бъде преместен профила!</string> <string name="timeshift_hint">Брой часове, с които ще бъде преместен профила!</string>
<string name="units">Мерни единици:</string> <string name="units">Мерни единици:</string>
<string name="ns_upload_only">NS upload only (изключва синхронизацията)</string> <string name="ns_upload_only">NS upload only (изключва синхронизацията)</string>
<string name="ns_upload_only_enabled">Моля изключете "NS upload only" за да използвате това.</string>
<string name="ns_upload_only_summary">NS upload only. Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used.</string> <string name="ns_upload_only_summary">NS upload only. Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used.</string>
<string name="alert_dialog_storage_permission_text">Моля рестартирайте телефона или AndroidAPS, в противен случай информацията за грешки няма да се запише(важно за да се потвърди, че алгоритъмът работи правилно)</string> <string name="alert_dialog_storage_permission_text">Моля рестартирайте телефона или AndroidAPS, в противен случай информацията за грешки няма да се запише(важно за да се потвърди, че алгоритъмът работи правилно)</string>
<string name="androidaps_tempbasalendnote">Край на временен базал</string> <string name="androidaps_tempbasalendnote">Край на временен базал</string>
@ -420,7 +418,6 @@
<string name="short_avgdelta">Краткоср. Δ:</string> <string name="short_avgdelta">Краткоср. Δ:</string>
<string name="short_tabtitles">Къси имена</string> <string name="short_tabtitles">Къси имена</string>
<string name="smscommunicator_bolusdelivered" formatted="false">Bolus %.2fU delivered successfully</string> <string name="smscommunicator_bolusdelivered" formatted="false">Bolus %.2fU delivered successfully</string>
<string name="temptargetrange">Временна цел</string>
<string name="temptargetrange_refreshfromnightscout">Обнови временни цели от NS</string> <string name="temptargetrange_refreshfromnightscout">Обнови временни цели от NS</string>
<string name="danar_stats_expweight">Експоненциално претеглена TDD</string> <string name="danar_stats_expweight">Експоненциално претеглена TDD</string>
<string name="danar_stats_cumulative_tdd">Комулативна TDD</string> <string name="danar_stats_cumulative_tdd">Комулативна TDD</string>

View file

@ -129,7 +129,6 @@
<string name="setextendedbolusquestion">Spustit nový kombo bolus:</string> <string name="setextendedbolusquestion">Spustit nový kombo bolus:</string>
<string name="setbasalquestion">Spustit nový dočasný bazál:</string> <string name="setbasalquestion">Spustit nový dočasný bazál:</string>
<string name="simpleprofile">Jednoduchý profil</string> <string name="simpleprofile">Jednoduchý profil</string>
<string name="tempbasals">Dočasné bazály</string>
<string name="tempbasals_iob_label_string">IOB:</string> <string name="tempbasals_iob_label_string">IOB:</string>
<string name="tempbasals_iobtotal_label_string">Celkové IOB:</string> <string name="tempbasals_iobtotal_label_string">Celkové IOB:</string>
<string name="tempbasals_netinsulin_label_string">Inz:</string> <string name="tempbasals_netinsulin_label_string">Inz:</string>
@ -338,7 +337,6 @@
<string name="mgdl">mg/dl</string> <string name="mgdl">mg/dl</string>
<string name="mmol">mmol/l</string> <string name="mmol">mmol/l</string>
<string name="ns_upload_only">Pouze náhráváni do NS (zakázaná synchronizace)</string> <string name="ns_upload_only">Pouze náhráváni do NS (zakázaná synchronizace)</string>
<string name="ns_upload_only_enabled">Prosím deaktivujte \"Pouze nahrávání do NS\", abyste mohli použít tuto funkci.</string>
<string name="ns_upload_only_summary">Pouze náhrávání dat do NS. Neplatí pro glykémie, dokud není vybraní místní zdroj dat jako xDrip. Neplatí pro profily, pokud se používá NS profil.</string> <string name="ns_upload_only_summary">Pouze náhrávání dat do NS. Neplatí pro glykémie, dokud není vybraní místní zdroj dat jako xDrip. Neplatí pro profily, pokud se používá NS profil.</string>
<string name="open_settings_on_wear">Otevřít nastavení na hodinkách Wear</string> <string name="open_settings_on_wear">Otevřít nastavení na hodinkách Wear</string>
<string name="othersettings_title">Jiné</string> <string name="othersettings_title">Jiné</string>
@ -393,7 +391,6 @@
<string name="refreshtemptargetsfromnightscout">Opravdu aktualizovat dočasné cíle z NS</string> <string name="refreshtemptargetsfromnightscout">Opravdu aktualizovat dočasné cíle z NS</string>
<string name="removerecord">Odstranit záznam:</string> <string name="removerecord">Odstranit záznam:</string>
<string name="short_avgdelta">Krátkodobý průměr</string> <string name="short_avgdelta">Krátkodobý průměr</string>
<string name="temptargetrange">Dočasný cíl</string>
<string name="temptargetrange_refreshfromnightscout">Obnovit dočasné cíle z NS</string> <string name="temptargetrange_refreshfromnightscout">Obnovit dočasné cíle z NS</string>
<string name="actions_shortname">"AKCE"</string> <string name="actions_shortname">"AKCE"</string>
<string name="wear_shortname">"WEAR"</string> <string name="wear_shortname">"WEAR"</string>

View file

@ -114,7 +114,6 @@
<string name="treatmentssafety_maxbolus_title">Max erlaubter Bolus</string> <string name="treatmentssafety_maxbolus_title">Max erlaubter Bolus</string>
<string name="treatmentssafety_maxcarbs_title">Max erlaubte Kohlehydrate</string> <string name="treatmentssafety_maxcarbs_title">Max erlaubte Kohlehydrate</string>
<string name="treatmentssafety_title">Tratments Sicherheit</string> <string name="treatmentssafety_title">Tratments Sicherheit</string>
<string name="tempbasals">Temp Basals</string>
<string name="simpleprofile">Einfaches Profil</string> <string name="simpleprofile">Einfaches Profil</string>
<string name="setextendedbolusquestion">Setze neuen extended Bolus:</string> <string name="setextendedbolusquestion">Setze neuen extended Bolus:</string>
<string name="setbasalquestion">Akzeptiere neue temp Basalrate:</string> <string name="setbasalquestion">Akzeptiere neue temp Basalrate:</string>
@ -278,7 +277,6 @@
<string name="fillbolus_title">Vorfüll-Standardmengen</string> <string name="fillbolus_title">Vorfüll-Standardmengen</string>
<string name="fillwarning">Bitte vergewissern Sie sich, dass die Menge der Spezifikation des Katheters entspricht.</string> <string name="fillwarning">Bitte vergewissern Sie sich, dass die Menge der Spezifikation des Katheters entspricht.</string>
<string name="ns_upload_only">Zu NightScout nur hochladen (kein sync)</string> <string name="ns_upload_only">Zu NightScout nur hochladen (kein sync)</string>
<string name="ns_upload_only_enabled">Bitte deaktivieren Sie \"Zu NightScout nur hochladen\" um dieses Feature zu nutzen.</string>
<string name="ns_upload_only_summary">Zu NightScout nur hochladen. Nicht wirksam bei SGV wenn nicht eine lokale Quelle wie xDrip gewählt wird. Nicht wirksam bei Profilen, wenn NS-Profile verwendet werden.</string> <string name="ns_upload_only_summary">Zu NightScout nur hochladen. Nicht wirksam bei SGV wenn nicht eine lokale Quelle wie xDrip gewählt wird. Nicht wirksam bei Profilen, wenn NS-Profile verwendet werden.</string>
<string name="othersettings_title">Andere</string> <string name="othersettings_title">Andere</string>
<string name="occlusion">Verstopfung</string> <string name="occlusion">Verstopfung</string>

View file

@ -80,7 +80,6 @@
<string name="overview">Sinopsis</string> <string name="overview">Sinopsis</string>
<string name="profileviewer">Perfil NS</string> <string name="profileviewer">Perfil NS</string>
<string name="simpleprofile">Perfil simple</string> <string name="simpleprofile">Perfil simple</string>
<string name="tempbasals">Temp basales</string>
<string name="treatments">Tratamientos</string> <string name="treatments">Tratamientos</string>
<string name="virtualpump">Bomba virtual</string> <string name="virtualpump">Bomba virtual</string>
<string name="careportal">Careportal</string> <string name="careportal">Careportal</string>
@ -327,7 +326,6 @@
<string name="androidaps_start">AndroidAPS iniciado</string> <string name="androidaps_start">AndroidAPS iniciado</string>
<string name="es_lang">Español</string> <string name="es_lang">Español</string>
<string name="ns_upload_only">NS solo subida (sinc. inactiva)</string> <string name="ns_upload_only">NS solo subida (sinc. inactiva)</string>
<string name="ns_upload_only_enabled">Por favor desactiva \"NS solo subida\" para usar esta característica.</string>
<string name="ns_upload_only_summary">NS solo subida. No efectivo con SGV salvo que este seleccionada una fuente local como xDrip. No efectivo en perfiles usando perfiles NS</string> <string name="ns_upload_only_summary">NS solo subida. No efectivo con SGV salvo que este seleccionada una fuente local como xDrip. No efectivo en perfiles usando perfiles NS</string>
<string name="othersettings_title">Otros</string> <string name="othersettings_title">Otros</string>
<string name="pumpNotInitialized">¡Bomba no iniciada!</string> <string name="pumpNotInitialized">¡Bomba no iniciada!</string>
@ -396,7 +394,6 @@
<string name="sms_minago">%dmin antes</string> <string name="sms_minago">%dmin antes</string>
<string name="smscommunicator_bolusdelivered">Bolo %.2fU enviado correctamente</string> <string name="smscommunicator_bolusdelivered">Bolo %.2fU enviado correctamente</string>
<string name="target_range">Rango Objetivo:</string> <string name="target_range">Rango Objetivo:</string>
<string name="temptargetrange">Objetivo Temp</string>
<string name="temptargetrange_refreshfromnightscout">Actualizar objetivo temporal desde NS</string> <string name="temptargetrange_refreshfromnightscout">Actualizar objetivo temporal desde NS</string>
<string name="timeshift_hint"></string> <string name="timeshift_hint"></string>
<string name="units">Unidades:</string> <string name="units">Unidades:</string>

View file

@ -386,7 +386,6 @@
<string name="syncprofiletopump_title">Sincronizza profilo sul micro</string> <string name="syncprofiletopump_title">Sincronizza profilo sul micro</string>
<string name="target_range">Target range:</string> <string name="target_range">Target range:</string>
<string name="teenage">Adolescente</string> <string name="teenage">Adolescente</string>
<string name="tempbasals">Basale temporanea</string>
<string name="tempbasals_iob_label_string">IOB:</string> <string name="tempbasals_iob_label_string">IOB:</string>
<string name="tempbasals_iobtotal_label_string">Totale IOB:</string> <string name="tempbasals_iobtotal_label_string">Totale IOB:</string>
<string name="tempbasals_netinsulin_label_string">Ins:</string> <string name="tempbasals_netinsulin_label_string">Ins:</string>
@ -412,7 +411,6 @@
<string name="openapsma_mealdata_label">Data Pranzo</string> <string name="openapsma_mealdata_label">Data Pranzo</string>
<string name="overview_bolusprogress_stoped">Stoppato</string> <string name="overview_bolusprogress_stoped">Stoppato</string>
<string name="tempbasals_netratio_label_string">rapporto:</string> <string name="tempbasals_netratio_label_string">rapporto:</string>
<string name="temptargetrange">Target temp</string>
<string name="temptargetrange_refreshfromnightscout">Aggiornare i target di temp da NS</string> <string name="temptargetrange_refreshfromnightscout">Aggiornare i target di temp da NS</string>
<string name="treatmentdeliveryerror">Errore di erogazione del bolo</string> <string name="treatmentdeliveryerror">Errore di erogazione del bolo</string>
<string name="treatments_activity_string">attività</string> <string name="treatments_activity_string">attività</string>

View file

@ -82,7 +82,6 @@
<string name="overview">Overview</string> <string name="overview">Overview</string>
<string name="profileviewer">NS 프로파일</string> <string name="profileviewer">NS 프로파일</string>
<string name="simpleprofile">Simple 프로파일</string> <string name="simpleprofile">Simple 프로파일</string>
<string name="tempbasals">임시기초주입</string>
<string name="treatments">Treatments</string> <string name="treatments">Treatments</string>
<string name="virtualpump">가상펌프</string> <string name="virtualpump">가상펌프</string>
<string name="careportal">Careportal</string> <string name="careportal">Careportal</string>
@ -340,7 +339,6 @@
<string name="androidaps_start">AndroidAPS 시작</string> <string name="androidaps_start">AndroidAPS 시작</string>
<string name="ns_upload_only">NS upload only (disabled sync)</string> <string name="ns_upload_only">NS upload only (disabled sync)</string>
<string name="ns_upload_only_summary">NS upload only. 로컬소스(xDrip)가 선택되지 않으면 SGV에는 효력이 없습니다. NS프로파일이 사용중이라면 프로파일에는 효력이 없습니다.</string> <string name="ns_upload_only_summary">NS upload only. 로컬소스(xDrip)가 선택되지 않으면 SGV에는 효력이 없습니다. NS프로파일이 사용중이라면 프로파일에는 효력이 없습니다.</string>
<string name="ns_upload_only_enabled">이 기능을 사용하시려면 "NS upload only"을 비활성화 하세요.</string>
<string name="pumpNotInitialized">펌프가 초기화 되지 않았습니다!</string> <string name="pumpNotInitialized">펌프가 초기화 되지 않았습니다!</string>
<string name="pumpNotInitializedProfileNotSet">펌프가 초기화와 프로파일 설정이 되지 않았습니다!</string> <string name="pumpNotInitializedProfileNotSet">펌프가 초기화와 프로파일 설정이 되지 않았습니다!</string>
<string name="primefill">공기/채움</string> <string name="primefill">공기/채움</string>
@ -401,7 +399,6 @@
<string name="openapsma_autosensdata_label">Autosens data</string> <string name="openapsma_autosensdata_label">Autosens data</string>
<string name="openapsma_scriptdebugdata_label">Script debug</string> <string name="openapsma_scriptdebugdata_label">Script debug</string>
<string name="openapsama_useautosens">AMA autosens 기능 사용하기</string> <string name="openapsama_useautosens">AMA autosens 기능 사용하기</string>
<string name="temptargetrange">Temp Target</string>
<string name="temptargetrange_refreshfromnightscout">Refresh temp targets from NS</string> <string name="temptargetrange_refreshfromnightscout">Refresh temp targets from NS</string>
<string name="eatingsoon">Eating Soon</string> <string name="eatingsoon">Eating Soon</string>
<string name="activity">Activity</string> <string name="activity">Activity</string>

View file

@ -84,7 +84,7 @@
<string name="overview">Overview</string> <string name="overview">Overview</string>
<string name="profileviewer">NS Profile</string> <string name="profileviewer">NS Profile</string>
<string name="simpleprofile">Simple profile</string> <string name="simpleprofile">Simple profile</string>
<string name="tempbasals">Temp Basals</string> <string name="tempbasal">TempBasal</string>
<string name="treatments">Treatments</string> <string name="treatments">Treatments</string>
<string name="virtualpump">Virtual Pump</string> <string name="virtualpump">Virtual Pump</string>
<string name="careportal">Careportal</string> <string name="careportal">Careportal</string>
@ -354,7 +354,6 @@
<string name="androidaps_start">AndroidAPS started</string> <string name="androidaps_start">AndroidAPS started</string>
<string name="ns_upload_only">NS upload only (disabled sync)</string> <string name="ns_upload_only">NS upload only (disabled sync)</string>
<string name="ns_upload_only_summary">NS upload only. Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used.</string> <string name="ns_upload_only_summary">NS upload only. Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used.</string>
<string name="ns_upload_only_enabled">Please deactivate "NS upload only" to use this feature.</string>
<string name="pumpNotInitialized">Pump not initialized!</string> <string name="pumpNotInitialized">Pump not initialized!</string>
<string name="pumpNotInitializedProfileNotSet">Pump not initialized, profile not set!</string> <string name="pumpNotInitializedProfileNotSet">Pump not initialized, profile not set!</string>
<string name="primefill">Prime/Fill</string> <string name="primefill">Prime/Fill</string>
@ -415,7 +414,6 @@
<string name="openapsma_autosensdata_label">Autosens data</string> <string name="openapsma_autosensdata_label">Autosens data</string>
<string name="openapsma_scriptdebugdata_label">Script debug</string> <string name="openapsma_scriptdebugdata_label">Script debug</string>
<string name="openapsama_useautosens">Use AMA autosens feature</string> <string name="openapsama_useautosens">Use AMA autosens feature</string>
<string name="temptargetrange">Temp Target</string>
<string name="temptargetrange_refreshfromnightscout">Refresh temp targets from NS</string> <string name="temptargetrange_refreshfromnightscout">Refresh temp targets from NS</string>
<string name="eatingsoon">Eating Soon</string> <string name="eatingsoon">Eating Soon</string>
<string name="activity">Activity</string> <string name="activity">Activity</string>
@ -615,4 +613,5 @@
<string name="bolus_step">Bolus Step</string> <string name="bolus_step">Bolus Step</string>
<string name="stopevent">STOP</string> <string name="stopevent">STOP</string>
<string name="extendedbolus">ExtendedBolus</string> <string name="extendedbolus">ExtendedBolus</string>
<string name="temptarget">TempTarget</string>
</resources> </resources>