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.plugins.Actions.ActionsFragment;
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.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.services.DanaRExecutionService;
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.PumpDanaRv2.DanaRv2Fragment;
import info.nightscout.androidaps.plugins.PumpDanaRv2.services.DanaRv2ExecutionService;
import info.nightscout.androidaps.plugins.PumpMDI.MDIFragment;
import info.nightscout.androidaps.plugins.NSClientInternal.NSClientInternalFragment;
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.PumpVirtual.VirtualPumpFragment;
import info.nightscout.androidaps.plugins.SmsCommunicator.SmsCommunicatorFragment;
import info.nightscout.androidaps.plugins.SourceGlimp.SourceGlimpFragment;
import info.nightscout.androidaps.plugins.SourceMM640g.SourceMM640gFragment;
import info.nightscout.androidaps.plugins.SourceNSClient.SourceNSClientFragment;
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.Wear.WearFragment;
import info.nightscout.androidaps.plugins.Persistentnotification.PersistentNotificationPlugin;
import info.nightscout.androidaps.plugins.XDripStatusline.StatuslineFragment;
import info.nightscout.androidaps.receivers.KeepAliveReceiver;
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(CircadianPercentageProfileFragment.getPlugin());
if (Config.APS) pluginsList.add(TempTargetRangeFragment.getPlugin());
pluginsList.add(TreatmentsFromHistoryFragment.getPlugin());
if (Config.SAFETY) pluginsList.add(SafetyFragment.getPlugin());
if (Config.APS) pluginsList.add(ObjectivesFragment.getPlugin());
@ -217,7 +215,7 @@ public class MainApp extends Application {
if (pluginsList != null) {
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;
}
} else {

View file

@ -34,11 +34,11 @@ import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.events.EventExtendedBolusChange;
import info.nightscout.androidaps.events.EventNewBG;
import info.nightscout.androidaps.events.EventTempBasalChange;
import info.nightscout.androidaps.events.EventTempTargetChange;
import info.nightscout.androidaps.events.EventTreatmentChange;
import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventNewHistoryData;
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile;
import info.nightscout.androidaps.plugins.PumpDanaR.History.DanaRNSHistorySync;
import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTargetRangeChange;
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
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 ScheduledFuture<?> scheduledTemBasalsPost = null;
private static final ScheduledExecutorService tempTargetWorker = Executors.newSingleThreadScheduledExecutor();
private static ScheduledFuture<?> scheduledTemTargetPost = null;
private static final ScheduledExecutorService extendedBolusWorker = Executors.newSingleThreadScheduledExecutor();
private static ScheduledFuture<?> scheduledExtendedBolusPost = null;
@ -173,6 +176,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
scheduleTemporaryBasalChange();
scheduleTreatmentChange();
scheduleExtendedBolusChange();
scheduleTemporaryTargetChange();
}
public void resetTreatments() {
@ -193,6 +197,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
} catch (SQLException e) {
e.printStackTrace();
}
scheduleTemporaryTargetChange();
}
public void resetTemporaryBasals() {
@ -586,7 +591,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
tempTarget.date = tempTarget.date - tempTarget.date % 1000;
try {
getDaoTempTargets().createOrUpdate(tempTarget);
MainApp.bus().post(new EventTempTargetRangeChange());
scheduleTemporaryTargetChange();
} catch (SQLException e) {
e.printStackTrace();
}
@ -595,12 +600,29 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
public void delete(TempTarget tempTarget) {
try {
getDaoTempTargets().delete(tempTarget);
MainApp.bus().post(new EventTempTargetRangeChange());
scheduleTemporaryTargetChange();
} catch (SQLException e) {
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",
@ -648,7 +670,6 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
tempTarget.reason = trJson.getString("reason");
tempTarget._id = trJson.getString("_id");
createOrUpdate(tempTarget);
MainApp.bus().post(new EventTempTargetRangeChange());
} catch (SQLException e) {
e.printStackTrace();
} catch (JSONException e) {
@ -669,7 +690,6 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
if (Config.logIncommingData)
log.debug("Removing TempTarget record from database: " + record.log());
getDaoTempTargets().delete(record);
MainApp.bus().post(new EventTempTargetRangeChange());
} else {
if (Config.logIncommingData)
log.debug("TempTarget not found database: " + _id);
@ -876,7 +896,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
if (Config.logIncommingData)
log.debug("Removing TempBasal record from database: " + record.log());
getDaoTemporaryBasal().delete(record);
MainApp.bus().post(new EventTempTargetRangeChange());
MainApp.bus().post(new EventTempTargetChange());
} else {
if (Config.logIncommingData)
log.debug("TempBasal not found database: " + _id);

View file

@ -9,9 +9,7 @@ import org.slf4j.LoggerFactory;
import java.util.Date;
import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.interfaces.Interval;
import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangePlugin;
import info.nightscout.utils.DateUtil;
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.MealData;
import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.db.TemporaryBasal;
import info.nightscout.androidaps.db.Treatment;
import info.nightscout.utils.OverlappingIntervals;
@ -47,6 +48,9 @@ public interface TreatmentsInterface {
void extendedBolusStop(long time);
OverlappingIntervals<ExtendedBolus> getExtendedBoluses();
TempTarget getTempTarget (long time);
OverlappingIntervals<TempTarget> getTempTargets();
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.PumpEnactResult;
import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.db.TemporaryBasal;
import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.events.EventBolusRequested;
@ -1230,6 +1231,16 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain
return activeTreatments.getExtendedBoluses();
}
@Override
public TempTarget getTempTarget(long time) {
return activeTreatments.getTempTarget(time);
}
@Override
public OverlappingIntervals<TempTarget> getTempTargets() {
return activeTreatments.getTempTargets();
}
@Override
public long oldestDataAvaialable() {
return activeTreatments.oldestDataAvaialable();

View file

@ -12,6 +12,7 @@ import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.GlucoseStatus;
import info.nightscout.androidaps.data.IobTotal;
import info.nightscout.androidaps.data.MealData;
import info.nightscout.androidaps.db.TempTarget;
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.Loop.APSResult;
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.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.Profiler;
import info.nightscout.utils.Round;
@ -56,7 +55,7 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface {
@Override
public String getNameShort() {
String name = MainApp.sResources.getString(R.string.oaps_shortname);
if (!name.trim().isEmpty()){
if (!name.trim().isEmpty()) {
//only if translation exists
return name;
}
@ -149,7 +148,7 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface {
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)));
if (Config.logAPSResult)
log.debug(MainApp.instance().getString(R.string.openapsma_noprofile));
@ -201,24 +200,23 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface {
targetBg = verifyHardLimits(targetBg, "targetBg", Constants.VERY_HARD_LIMIT_TARGET_BG[0], Constants.VERY_HARD_LIMIT_TARGET_BG[1]);
boolean isTempTarget = false;
TempTargetRangePlugin tempTargetRangePlugin = (TempTargetRangePlugin) MainApp.getSpecificPlugin(TempTargetRangePlugin.class);
if (tempTargetRangePlugin != null && tempTargetRangePlugin.isEnabled(PluginBase.GENERAL)) {
TempTarget tempTarget = tempTargetRangePlugin.getTempTargetInProgress(new Date().getTime());
TempTarget tempTarget = MainApp.getConfigBuilder().getTempTarget(new Date().getTime());
if (tempTarget != null) {
isTempTarget = true;
minBg = verifyHardLimits(tempTarget.low, "minBg", Constants.VERY_HARD_LIMIT_TEMP_MIN_BG[0], Constants.VERY_HARD_LIMIT_TEMP_MIN_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);
maxBasal = verifyHardLimits(maxBasal, "max_basal", 0.1, 10);
if (!checkOnlyHardLimits(profile.getDia(), "dia", 2, 7)) return;
if (!checkOnlyHardLimits(profile.getIc(profile.secondsFromMidnight()), "carbratio", 2, 100)) return;
if (!checkOnlyHardLimits(NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()).doubleValue(), units), "sens", 2, 900)) return;
if (!checkOnlyHardLimits(profile.getIc(profile.secondsFromMidnight()), "carbratio", 2, 100))
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(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());
startPart = new Date();
if(MainApp.getConfigBuilder().isAMAModeEnabled()){
if (MainApp.getConfigBuilder().isAMAModeEnabled()) {
//lastAutosensResult = Autosens.detectSensitivityandCarbAbsorption(getBGDataFrom, null);
lastAutosensResult = IobCobCalculatorPlugin.detectSensitivity(getBGDataFrom);
} else {

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.OpenAPSMA.events.EventOpenAPSUpdateGui;
import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateResultGui;
import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangePlugin;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.Profiler;
import info.nightscout.utils.Round;
@ -202,15 +201,12 @@ public class OpenAPSMAPlugin implements PluginBase, APSInterface {
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]);
TempTargetRangePlugin tempTargetRangePlugin = (TempTargetRangePlugin) MainApp.getSpecificPlugin(TempTargetRangePlugin.class);
if (tempTargetRangePlugin != null && tempTargetRangePlugin.isEnabled(PluginBase.GENERAL)) {
TempTarget tempTarget = tempTargetRangePlugin.getTempTargetInProgress(new Date().getTime());
TempTarget tempTarget = MainApp.getConfigBuilder().getTempTarget(new Date().getTime());
if (tempTarget != null) {
minBg = verifyHardLimits(tempTarget.low, "minBg", Constants.VERY_HARD_LIMIT_TEMP_MIN_BG[0], Constants.VERY_HARD_LIMIT_TEMP_MIN_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);
maxBasal = verifyHardLimits(maxBasal, "max_basal", 0.1, 10);

View file

@ -78,6 +78,7 @@ import info.nightscout.androidaps.events.EventPreferenceChange;
import info.nightscout.androidaps.events.EventPumpStatusChanged;
import info.nightscout.androidaps.events.EventRefreshGui;
import info.nightscout.androidaps.events.EventTempBasalChange;
import info.nightscout.androidaps.events.EventTempTargetChange;
import info.nightscout.androidaps.events.EventTreatmentChange;
import info.nightscout.androidaps.interfaces.PluginBase;
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.TimeAsXAxisLabelFormatter;
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.DateUtil;
import info.nightscout.utils.DecimalFormatter;
@ -196,7 +195,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
View view;
if(smallHeight){
if (smallHeight) {
view = inflater.inflate(R.layout.overview_fragment_smallheight, container, false);
} else {
view = inflater.inflate(R.layout.overview_fragment, container, false);
@ -763,8 +762,8 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
}
@Subscribe
public void onStatusEvent(final EventTempTargetRangeChange ev) {
scheduleUpdateGUI("EventTempTargetRangeChange");
public void onStatusEvent(final EventTempTargetChange ev) {
scheduleUpdateGUI("EventTempTargetChange");
}
@Subscribe
@ -898,9 +897,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
// temp target
NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile();
TempTargetRangePlugin tempTargetRangePlugin = (TempTargetRangePlugin) MainApp.getSpecificPlugin(TempTargetRangePlugin.class);
if (Config.APS && tempTargetRangePlugin != null && tempTargetRangePlugin.isEnabled(PluginBase.GENERAL)) {
TempTarget tempTarget = tempTargetRangePlugin.getTempTargetInProgress(new Date().getTime());
TempTarget tempTarget = MainApp.getConfigBuilder().getTempTarget(new Date().getTime());
if (tempTarget != null) {
tempTargetView.setTextColor(Color.BLACK);
tempTargetView.setBackgroundColor(MainApp.sResources.getColor(R.color.tempTargetBackground));
@ -919,9 +916,6 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
tempTargetView.setText(SP.getDouble("openapsma_min_bg", minBgDefault) + " - " + SP.getDouble("openapsma_max_bg", maxBgDefault));
tempTargetView.setVisibility(View.VISIBLE);
}
} else {
tempTargetView.setVisibility(View.GONE);
}
// **** Temp button ****
boolean showAcceptButton = !MainApp.getConfigBuilder().isClosedModeEnabled(); // Open mode needed

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.plugins.TreatmentsFromHistory.fragments.TreatmentsBolusFragment;
import info.nightscout.androidaps.plugins.TreatmentsFromHistory.fragments.TreatmentsExtendedBolusesFragment;
import info.nightscout.androidaps.plugins.TreatmentsFromHistory.fragments.TreatmentsTempTargetFragment;
import info.nightscout.androidaps.plugins.TreatmentsFromHistory.fragments.TreatmentsTemporaryBasalsFragment;
public class TreatmentsFromHistoryFragment extends Fragment implements View.OnClickListener {
@ -30,6 +31,7 @@ public class TreatmentsFromHistoryFragment extends Fragment implements View.OnCl
TextView treatmentsTab;
TextView extendedBolusesTab;
TextView tempBasalsTab;
TextView tempTargetTab;
@Override
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);
extendedBolusesTab = (TextView) view.findViewById(R.id.treatments_extendedboluses);
tempBasalsTab = (TextView) view.findViewById(R.id.treatments_tempbasals);
tempTargetTab = (TextView) view.findViewById(R.id.treatments_temptargets);
treatmentsTab.setOnClickListener(this);
extendedBolusesTab.setOnClickListener(this);
tempBasalsTab.setOnClickListener(this);
tempTargetTab.setOnClickListener(this);
context = getContext();
setFragment(new TreatmentsBolusFragment());
@ -62,7 +66,9 @@ public class TreatmentsFromHistoryFragment extends Fragment implements View.OnCl
case R.id.treatments_tempbasals:
setFragment(new TreatmentsTemporaryBasalsFragment());
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.MealData;
import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.db.TemporaryBasal;
import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.events.EventExtendedBolusChange;
import info.nightscout.androidaps.events.EventTempBasalChange;
import info.nightscout.androidaps.events.EventTempTargetChange;
import info.nightscout.androidaps.events.EventTreatmentChange;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PumpInterface;
@ -45,6 +47,7 @@ public class TreatmentsFromHistoryPlugin implements PluginBase, TreatmentsInterf
public static List<Treatment> treatments;
private static OverlappingIntervals<TemporaryBasal> tempBasals = new OverlappingIntervals<>();
private static OverlappingIntervals<ExtendedBolus> extendedBoluses = new OverlappingIntervals<>();
private static OverlappingIntervals<TempTarget> tempTargets = new OverlappingIntervals<>();
private static boolean fragmentEnabled = true;
private static boolean fragmentVisible = true;
@ -123,6 +126,7 @@ public class TreatmentsFromHistoryPlugin implements PluginBase, TreatmentsInterf
initializeTempBasalData();
initializeTreatmentData();
initializeExtendedBolusData();
initializeTempTargetData();
}
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
public IobTotal getLastCalculationTreatments() {
return lastTreatmentCalculation;
@ -392,4 +401,22 @@ public class TreatmentsFromHistoryPlugin implements PluginBase, TreatmentsInterf
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.setOnClickListener(this);
boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false);
if (nsUploadOnly)
refreshFromNS.setVisibility(View.GONE);
context = getContext();
updateGUI();
@ -180,10 +184,6 @@ public class TreatmentsBolusFragment extends Fragment implements View.OnClickLis
public void onClick(View view) {
switch (view.getId()) {
case R.id.treatments_reshreshfromnightscout:
boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false);
if (nsUploadOnly) {
ToastUtils.showToastInUiThread(getContext(), this.getContext().getString(R.string.ns_upload_only_enabled));
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this.getContext());
builder.setTitle(this.getContext().getString(R.string.confirmation));
builder.setMessage(this.getContext().getString(R.string.refreshtreatmentsfromnightscout));
@ -196,7 +196,6 @@ public class TreatmentsBolusFragment extends Fragment implements View.OnClickLis
});
builder.setNegativeButton(this.getContext().getString(R.string.cancel), null);
builder.show();
}
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.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Paint;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
@ -21,35 +19,25 @@ import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.j256.ormlite.dao.Dao;
import com.squareup.otto.Subscribe;
import java.sql.SQLException;
import java.util.List;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.Services.Intents;
import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.events.EventTempTargetChange;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
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.DecimalFormatter;
import info.nightscout.utils.OverlappingIntervals;
import info.nightscout.utils.SP;
import info.nightscout.utils.ToastUtils;
/**
* Created by mike on 13/01/17.
*/
public class TempTargetRangeFragment extends Fragment implements View.OnClickListener {
private static TempTargetRangePlugin tempTargetRangePlugin = new TempTargetRangePlugin();
public static TempTargetRangePlugin getPlugin() {
return tempTargetRangePlugin;
}
public class TreatmentsTempTargetFragment extends Fragment implements View.OnClickListener {
RecyclerView recyclerView;
LinearLayoutManager llm;
@ -59,15 +47,15 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
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;
}
@Override
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);
return TempTargetsViewHolder;
}
@ -166,14 +154,14 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
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.setHasFixedSize(true);
llm = new LinearLayoutManager(view.getContext());
recyclerView.setLayoutManager(llm);
RecyclerViewAdapter adapter = new RecyclerViewAdapter(tempTargetRangePlugin.getList());
RecyclerViewAdapter adapter = new RecyclerViewAdapter(MainApp.getConfigBuilder().getTempTargets());
recyclerView.setAdapter(adapter);
refreshFromNS = (Button) view.findViewById(R.id.temptargetrange_refreshfromnightscout);
@ -181,6 +169,10 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
context = getContext();
boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false);
if (nsUploadOnly)
refreshFromNS.setVisibility(View.GONE);
updateGUI();
return view;
}
@ -189,27 +181,21 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
public void onClick(View view) {
switch (view.getId()) {
case R.id.temptargetrange_refreshfromnightscout:
boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false);
if (nsUploadOnly) {
ToastUtils.showToastInUiThread(getContext(), this.getContext().getString(R.string.ns_upload_only_enabled));
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this.getContext());
builder.setTitle(this.getContext().getString(R.string.confirmation));
builder.setMessage(this.getContext().getString(R.string.refreshtemptargetsfromnightscout));
builder.setPositiveButton(this.getContext().getString(R.string.ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MainApp.getDbHelper().resetTempTargets();
tempTargetRangePlugin.initializeData();
updateGUI();
Intent restartNSClient = new Intent(Intents.ACTION_RESTART);
MainApp.instance().getApplicationContext().sendBroadcast(restartNSClient);
}
});
builder.setNegativeButton(this.getContext().getString(R.string.cancel), null);
builder.show();
}
break;
}
}
@Override
@ -225,7 +211,7 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
}
@Subscribe
public void onStatusEvent(final EventTempTargetRangeChange ev) {
public void onStatusEvent(final EventTempTargetChange ev) {
updateGUI();
}
@ -235,7 +221,7 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
activity.runOnUiThread(new Runnable() {
@Override
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.Loop.LoopPlugin;
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile;
import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangePlugin;
import info.nightscout.utils.BolusWizard;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter;
@ -111,11 +110,6 @@ public class ActionStringHandler {
boolean isMGDL = Boolean.parseBoolean(act[1]);
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) {
sendError("No profile found!");
return;
@ -281,15 +275,12 @@ public class ActionStringHandler {
}
//Check for Temp-Target:
TempTargetRangePlugin tempTargetRangePlugin = (TempTargetRangePlugin) MainApp.getSpecificPlugin(TempTargetRangePlugin.class);
if (Config.APS && tempTargetRangePlugin != null && tempTargetRangePlugin.isEnabled(PluginBase.GENERAL)) {
TempTarget tempTarget = tempTargetRangePlugin.getTempTargetInProgress(new Date().getTime());
TempTarget tempTarget = MainApp.getConfigBuilder().getTempTarget(new Date().getTime());
if (tempTarget != null) {
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 += "\nuntil: " + DateUtil.timeString(tempTarget.originalEnd());
ret += "\n\n";
}
}
//Default Range/Target
Double maxBgDefault = Constants.MAX_BG_DEFAULT_MGDL;

View file

@ -37,7 +37,15 @@
android:layout_height="wrap_content"
android:layout_weight="1"
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>

View file

@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="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
android:layout_width="match_parent"

View file

@ -128,7 +128,6 @@
<string name="setextendedbolusquestion">Задай нов удължен болусs:</string>
<string name="setbasalquestion">Приложи нов временен базал:</string>
<string name="simpleprofile">Обикновен профил</string>
<string name="tempbasals">Временен базал</string>
<string name="tempbasals_iob_label_string">IOB:</string>
<string name="tempbasals_iobtotal_label_string">Общо IOB:</string>
<string name="tempbasals_netinsulin_label_string">Инс:</string>
@ -344,7 +343,6 @@
<string name="timeshift_hint">Брой часове, с които ще бъде преместен профила!</string>
<string name="units">Мерни единици:</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="alert_dialog_storage_permission_text">Моля рестартирайте телефона или AndroidAPS, в противен случай информацията за грешки няма да се запише(важно за да се потвърди, че алгоритъмът работи правилно)</string>
<string name="androidaps_tempbasalendnote">Край на временен базал</string>
@ -420,7 +418,6 @@
<string name="short_avgdelta">Краткоср. Δ:</string>
<string name="short_tabtitles">Къси имена</string>
<string name="smscommunicator_bolusdelivered" formatted="false">Bolus %.2fU delivered successfully</string>
<string name="temptargetrange">Временна цел</string>
<string name="temptargetrange_refreshfromnightscout">Обнови временни цели от NS</string>
<string name="danar_stats_expweight">Експоненциално претеглена 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="setbasalquestion">Spustit nový dočasný bazál:</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_iobtotal_label_string">Celkové IOB:</string>
<string name="tempbasals_netinsulin_label_string">Inz:</string>
@ -338,7 +337,6 @@
<string name="mgdl">mg/dl</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_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="open_settings_on_wear">Otevřít nastavení na hodinkách Wear</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="removerecord">Odstranit záznam:</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="actions_shortname">"AKCE"</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_maxcarbs_title">Max erlaubte Kohlehydrate</string>
<string name="treatmentssafety_title">Tratments Sicherheit</string>
<string name="tempbasals">Temp Basals</string>
<string name="simpleprofile">Einfaches Profil</string>
<string name="setextendedbolusquestion">Setze neuen extended Bolus:</string>
<string name="setbasalquestion">Akzeptiere neue temp Basalrate:</string>
@ -278,7 +277,6 @@
<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="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="othersettings_title">Andere</string>
<string name="occlusion">Verstopfung</string>

View file

@ -80,7 +80,6 @@
<string name="overview">Sinopsis</string>
<string name="profileviewer">Perfil NS</string>
<string name="simpleprofile">Perfil simple</string>
<string name="tempbasals">Temp basales</string>
<string name="treatments">Tratamientos</string>
<string name="virtualpump">Bomba virtual</string>
<string name="careportal">Careportal</string>
@ -327,7 +326,6 @@
<string name="androidaps_start">AndroidAPS iniciado</string>
<string name="es_lang">Español</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="othersettings_title">Otros</string>
<string name="pumpNotInitialized">¡Bomba no iniciada!</string>
@ -396,7 +394,6 @@
<string name="sms_minago">%dmin antes</string>
<string name="smscommunicator_bolusdelivered">Bolo %.2fU enviado correctamente</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="timeshift_hint"></string>
<string name="units">Unidades:</string>

View file

@ -386,7 +386,6 @@
<string name="syncprofiletopump_title">Sincronizza profilo sul micro</string>
<string name="target_range">Target range:</string>
<string name="teenage">Adolescente</string>
<string name="tempbasals">Basale temporanea</string>
<string name="tempbasals_iob_label_string">IOB:</string>
<string name="tempbasals_iobtotal_label_string">Totale IOB:</string>
<string name="tempbasals_netinsulin_label_string">Ins:</string>
@ -412,7 +411,6 @@
<string name="openapsma_mealdata_label">Data Pranzo</string>
<string name="overview_bolusprogress_stoped">Stoppato</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="treatmentdeliveryerror">Errore di erogazione del bolo</string>
<string name="treatments_activity_string">attività</string>

View file

@ -82,7 +82,6 @@
<string name="overview">Overview</string>
<string name="profileviewer">NS 프로파일</string>
<string name="simpleprofile">Simple 프로파일</string>
<string name="tempbasals">임시기초주입</string>
<string name="treatments">Treatments</string>
<string name="virtualpump">가상펌프</string>
<string name="careportal">Careportal</string>
@ -340,7 +339,6 @@
<string name="androidaps_start">AndroidAPS 시작</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_enabled">이 기능을 사용하시려면 "NS upload only"을 비활성화 하세요.</string>
<string name="pumpNotInitialized">펌프가 초기화 되지 않았습니다!</string>
<string name="pumpNotInitializedProfileNotSet">펌프가 초기화와 프로파일 설정이 되지 않았습니다!</string>
<string name="primefill">공기/채움</string>
@ -401,7 +399,6 @@
<string name="openapsma_autosensdata_label">Autosens data</string>
<string name="openapsma_scriptdebugdata_label">Script debug</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="eatingsoon">Eating Soon</string>
<string name="activity">Activity</string>

View file

@ -84,7 +84,7 @@
<string name="overview">Overview</string>
<string name="profileviewer">NS 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="virtualpump">Virtual Pump</string>
<string name="careportal">Careportal</string>
@ -354,7 +354,6 @@
<string name="androidaps_start">AndroidAPS started</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_enabled">Please deactivate "NS upload only" to use this feature.</string>
<string name="pumpNotInitialized">Pump not initialized!</string>
<string name="pumpNotInitializedProfileNotSet">Pump not initialized, profile not set!</string>
<string name="primefill">Prime/Fill</string>
@ -415,7 +414,6 @@
<string name="openapsma_autosensdata_label">Autosens data</string>
<string name="openapsma_scriptdebugdata_label">Script debug</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="eatingsoon">Eating Soon</string>
<string name="activity">Activity</string>
@ -615,4 +613,5 @@
<string name="bolus_step">Bolus Step</string>
<string name="stopevent">STOP</string>
<string name="extendedbolus">ExtendedBolus</string>
<string name="temptarget">TempTarget</string>
</resources>