Merge branch 'dev' into bug1724_tbr_iob
This commit is contained in:
commit
3ea2c761f9
630 changed files with 43905 additions and 4826 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -19,3 +19,6 @@ app/.classpath
|
|||
app/.settings/org.eclipse.buildship.core.prefs
|
||||
wear/.classpath
|
||||
wear/.settings/org.eclipse.buildship.core.prefs
|
||||
app/nsclient/*
|
||||
app/nsclient2/*
|
||||
app/pumpcontrol/*
|
||||
|
|
|
@ -3,9 +3,11 @@
|
|||
<words>
|
||||
<w>aaps</w>
|
||||
<w>abcdef</w>
|
||||
<w>accu</w>
|
||||
<w>acked</w>
|
||||
<w>actionstring</w>
|
||||
<w>aidex</w>
|
||||
<w>alarmack</w>
|
||||
<w>allowednumbers</w>
|
||||
<w>androidaps</w>
|
||||
<w>autosens</w>
|
||||
|
@ -26,11 +28,15 @@
|
|||
<w>carbsreq</w>
|
||||
<w>careportal</w>
|
||||
<w>cellnovo</w>
|
||||
<w>chek</w>
|
||||
<w>clearalarm</w>
|
||||
<w>crashlytics</w>
|
||||
<w>danar</w>
|
||||
<w>danars</w>
|
||||
<w>dataset</w>
|
||||
<w>datasets</w>
|
||||
<w>dbadd</w>
|
||||
<w>dbupdate</w>
|
||||
<w>devicestatus</w>
|
||||
<w>devicestatuses</w>
|
||||
<w>devslope</w>
|
||||
|
@ -39,12 +45,14 @@
|
|||
<w>diaconn</w>
|
||||
<w>enteredby</w>
|
||||
<w>enteredinsulin</w>
|
||||
<w>eopatch</w>
|
||||
<w>eveningoutpost</w>
|
||||
<w>eversense</w>
|
||||
<w>extendedbolus</w>
|
||||
<w>fileprovider</w>
|
||||
<w>firebase</w>
|
||||
<w>glimp</w>
|
||||
<w>glunovo</w>
|
||||
<w>gson</w>
|
||||
<w>hmac</w>
|
||||
<w>iage</w>
|
||||
|
@ -79,12 +87,14 @@
|
|||
<w>pred</w>
|
||||
<w>profileswitch</w>
|
||||
<w>pumpbtcomm</w>
|
||||
<w>pumpcontrol</w>
|
||||
<w>quickwizard</w>
|
||||
<w>readstatus</w>
|
||||
<w>realduration</w>
|
||||
<w>refresheventsfromnightscout</w>
|
||||
<w>rileylink</w>
|
||||
<w>roboelectric</w>
|
||||
<w>rozman</w>
|
||||
<w>sgvs</w>
|
||||
<w>shortgramm</w>
|
||||
<w>sitechange</w>
|
||||
|
@ -109,6 +119,7 @@
|
|||
<w>totp</w>
|
||||
<w>tunedays</w>
|
||||
<w>uart</w>
|
||||
<w>urgentalarm</w>
|
||||
<w>wizzardpage</w>
|
||||
<w>xdrip</w>
|
||||
<w>xstream</w>
|
||||
|
|
|
@ -97,12 +97,6 @@ def allCommitted = { ->
|
|||
return stringBuilder.toString().isEmpty()
|
||||
}
|
||||
|
||||
tasks.matching { it instanceof Test }.all {
|
||||
testLogging.events = ["failed", "skipped", "started"]
|
||||
// testLogging.events = ["failed", "skipped", "started", "standard_out"] use to display stdout in travis
|
||||
testLogging.exceptionFormat = "full"
|
||||
}
|
||||
|
||||
android {
|
||||
|
||||
namespace 'info.nightscout.androidaps'
|
||||
|
@ -111,7 +105,7 @@ android {
|
|||
defaultConfig {
|
||||
multiDexEnabled true
|
||||
versionCode 1500
|
||||
version "3.0.0.2-dev-m"
|
||||
version "3.1.0.2-dev-a"
|
||||
buildConfigField "String", "VERSION", '"' + version + '"'
|
||||
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
|
||||
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
|
@ -82,36 +81,53 @@
|
|||
android:name="com.google.android.gms.car.application"
|
||||
android:resource="@xml/automotive_app_desc" />
|
||||
|
||||
<activity android:name=".MainActivity"
|
||||
android:theme="@style/AppTheme"
|
||||
android:exported="true">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".activities.PreferencesActivity" />
|
||||
<activity android:name=".plugins.general.overview.activities.QuickWizardListActivity"
|
||||
android:theme="@style/AppTheme"
|
||||
android:exported="false">
|
||||
<activity
|
||||
android:name=".activities.PreferencesActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".plugins.general.overview.activities.QuickWizardListActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme">
|
||||
<intent-filter>
|
||||
<action android:name="info.nightscout.androidaps.plugins.general.overview.activities.QuickWizardListActivity" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".plugins.general.maintenance.activities.PrefImportListActivity"
|
||||
<activity
|
||||
android:name=".plugins.general.maintenance.activities.PrefImportListActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity android:name=".activities.HistoryBrowseActivity"
|
||||
<activity
|
||||
android:name=".activities.HistoryBrowseActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity android:name=".activities.TreatmentsActivity"
|
||||
<activity
|
||||
android:name=".activities.TreatmentsActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity android:name=".activities.SurveyActivity"
|
||||
<activity
|
||||
android:name=".activities.SurveyActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity android:name=".activities.ProfileHelperActivity"
|
||||
<activity
|
||||
android:name=".activities.ProfileHelperActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity android:name=".activities.StatsActivity"
|
||||
<activity
|
||||
android:name=".activities.StatsActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
|
||||
<!-- Receive new BG readings from other local apps -->
|
||||
|
@ -211,15 +227,23 @@
|
|||
<activity
|
||||
android:name=".setupwizard.SetupWizardActivity"
|
||||
android:configChanges="orientation|keyboardHidden|screenSize"
|
||||
android:theme="@style/AppTheme"
|
||||
android:label="@string/title_activity_setup_wizard" />
|
||||
android:exported="false"
|
||||
android:label="@string/title_activity_setup_wizard"
|
||||
android:theme="@style/AppTheme" />
|
||||
|
||||
<activity
|
||||
android:name=".activities.SingleFragmentActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity android:name=".plugins.general.maintenance.activities.LogSettingActivity" />
|
||||
<activity android:name=".activities.RequestDexcomPermissionActivity" />
|
||||
<activity android:name=".plugins.general.smsCommunicator.activities.SmsCommunicatorOtpActivity">
|
||||
<activity
|
||||
android:name=".plugins.general.maintenance.activities.LogSettingActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".activities.RequestDexcomPermissionActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".plugins.general.smsCommunicator.activities.SmsCommunicatorOtpActivity"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="info.nightscout.androidaps.plugins.general.smsCommunicator.activities.SmsCommunicatorOtpActivity" />
|
||||
|
||||
|
@ -227,7 +251,9 @@
|
|||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
|
||||
<uses-library
|
||||
android:name="org.apache.http.legacy"
|
||||
android:required="false" />
|
||||
|
||||
</application>
|
||||
|
||||
|
|
|
@ -218,7 +218,7 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
|
|||
//*********************************************************************************
|
||||
|
||||
console.error("---------------------------------------------------------");
|
||||
console.error( " Dynamic ISF version Beta 1.5 ");
|
||||
console.error( " Dynamic ISF version Beta 1.6.5 ");
|
||||
console.error("---------------------------------------------------------");
|
||||
|
||||
|
||||
|
@ -247,39 +247,50 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
|
|||
|
||||
/*var tdd_pump_now = meal_data.TDDPUMP;
|
||||
var tdd_pump = ( tdd_pump_now / (now / 24));*/
|
||||
var TDD = (tdd7 * 0.4) + (tdd_pump * 0.6);
|
||||
//var TDD = (tdd7 * 0.4) + (tdd_pump * 0.6);
|
||||
|
||||
console.error("Pump extrapolated TDD = "+tdd_pump+"; ");
|
||||
//if (tdd7 > 0){
|
||||
if ( tdd_pump > tdd7 && now < 5 || now < 7 && TDD < ( 0.8 * tdd7 ) ){
|
||||
TDD = ( 0.8 * tdd7 );
|
||||
console.log("Excess or too low insulin from pump so TDD set to "+TDD+" based on 75% of TDD7; ");
|
||||
rT.reason += "TDD: " +TDD+ " due to low or high tdd from pump; ";
|
||||
var tdd1 = meal_data.TDDAIMI1;
|
||||
var tdd_4 = meal_data.TDDLast4;
|
||||
var tdd8to4 = meal_data.TDD4to8;
|
||||
var tdd_last8_wt = ( ( ( 1.4 * tdd_4) + ( 0.6 * tdd8to4) ) * 3 );
|
||||
|
||||
console.error("Rolling 8 hours weight average: "+tdd_last8_wt+"; ");
|
||||
console.error("1-day average TDD is: "+tdd1+"; ");
|
||||
console.error("7-day average TDD is: " +tdd7+ "; ");
|
||||
|
||||
//TDD = ( tdd_last8_wt * 0.6) + ( tdd7 * 0.4 );
|
||||
|
||||
var TDD = ( tdd_last8_wt * 0.33 ) + ( tdd7 * 0.34 ) + (tdd1 * 0.33);
|
||||
console.log("TDD = " +TDD+ " using average of 7-day, 1-day and weighted 8hr average");
|
||||
|
||||
|
||||
//var ins_val = 75;
|
||||
var insulin = profile.insulinType;
|
||||
console.log("Insulin Peak = "+profile.insulinPeak+"; ");
|
||||
//console.log("Initial insulin value for ISF: "+ins_val+"; ");
|
||||
//console.log("Current value for insulin: "+insulin+"; ");
|
||||
|
||||
var ins_val;
|
||||
if (profile.insulinPeak > 65) { // lyumjev peak: 45
|
||||
ins_val = 55;
|
||||
} else if (profile.insulinPeak > 50 ){ // ultra rapid peak: 55
|
||||
ins_val = 65;
|
||||
} else {
|
||||
ins_val = 75; // rapid peak: 75
|
||||
}
|
||||
console.log("For "+profile.insulinType+" (insulin peak: "+profile.insulinPeak+") divisor is: "+ins_val+"; ");
|
||||
|
||||
else if (tdd_pump > (1.75 * tdd7)){
|
||||
TDD = tdd7;
|
||||
console.error("TDD set to TDD7 due to high pump usage reported. TDD = "+TDD+"; ");
|
||||
rT.reason += "TDD set to TDD7 due to high pump usage reported. TDD = "+TDD+"; ";
|
||||
}
|
||||
|
||||
|
||||
else if (tdd_pump < (0.33 * tdd7)){
|
||||
TDD = (tdd7 * 0.25) + (tdd_pump * 0.75);
|
||||
console.error("TDD weighted to pump due to low insulin usage. TDD = "+TDD+"; ");
|
||||
rT.reason += "TDD weighted to pump due to low insulin usage. TDD = "+TDD+"; ";
|
||||
}
|
||||
|
||||
else {
|
||||
console.log("TDD = " +TDD+ " based on standard pump 60/tdd7 40 split; ");
|
||||
rT.reason += "TDD: " +TDD+ " based on standard pump 60/tdd7 40 split; ";
|
||||
}
|
||||
console.log("Insulin value for ISF based on profile: "+ins_val+"; ");
|
||||
|
||||
var dynISFadjust = profile.DynISFAdjust;
|
||||
var dynISFadjust = ( dynISFadjust / 100 );
|
||||
var TDD = (dynISFadjust * TDD);
|
||||
var variable_sens = (277700 / ( TDD * bg));
|
||||
dynISFadjust = ( dynISFadjust / 100 );
|
||||
TDD = ( dynISFadjust * TDD );
|
||||
|
||||
var variable_sens = 1800 / ( TDD * (Math.log(( bg / ins_val ) + 1 ) ) );
|
||||
|
||||
variable_sens = round(variable_sens,1);
|
||||
|
||||
|
||||
if (dynISFadjust > 1 ) {
|
||||
console.log("TDD adjustment factor is: " +dynISFadjust+"; ");
|
||||
console.log("TDD adjusted to "+TDD+" using adjustment factor of "+dynISFadjust+"; ");
|
||||
|
@ -314,7 +325,7 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
|
|||
console.log("ISF from "+variable_sens+" to "+sens+ "due to temp target; ");
|
||||
}
|
||||
else {
|
||||
sensitivityRatio = ( tdd_24 / tdd7 );
|
||||
sensitivityRatio = ( meal_data.TDD24 / tdd7 );
|
||||
}
|
||||
if (sensitivityRatio > 1) {
|
||||
sensitivityRatio = Math.min(sensitivityRatio, profile.autosens_max);
|
||||
|
@ -501,8 +512,14 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
|
|||
return rT;
|
||||
}
|
||||
|
||||
// min_bg of 90 -> threshold of 65, 100 -> 70 110 -> 75, and 130 -> 85
|
||||
// min_bg of 90 -> threshold of 65, 100 -> 70 110 -> 75, and 130 -> 85, or if specified by user, take that value
|
||||
var lgsThreshold = profile.lgsThreshold;
|
||||
var threshold = min_bg - 0.5*(min_bg-40);
|
||||
var oldThreshold = threshold;
|
||||
if (lgsThreshold >= 65 && lgsThreshold <= 120 && lgsThreshold > threshold) {
|
||||
threshold = lgsThreshold;
|
||||
}
|
||||
console.error("Threshold set from " + convert_bg(oldThreshold, profile) + " to " + convert_bg(threshold, profile) + "; ");
|
||||
|
||||
//console.error(reservoir_data);
|
||||
|
||||
|
@ -807,31 +824,38 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
|
|||
|
||||
console.log("EventualBG is" +eventualBG+" ;");
|
||||
|
||||
minIOBPredBG = Math.max(39,minIOBPredBG);
|
||||
minCOBPredBG = Math.max(39,minCOBPredBG);
|
||||
minUAMPredBG = Math.max(39,minUAMPredBG);
|
||||
minPredBG = round(minIOBPredBG);
|
||||
|
||||
var fSensBG = Math.min(minPredBG,bg);
|
||||
|
||||
if (bg > target_bg && glucose_status.delta < 3 && glucose_status.delta > -3 && glucose_status.short_avgdelta > -3 && glucose_status.short_avgdelta < 3 && eventualBG > target_bg && eventualBG < bg ) {
|
||||
var future_sens = ( 277700 / (TDD * ((eventualBG * 0.5) + (bg * 0.5) ) ) );
|
||||
var future_sens = ( 1800 / (Math.log((((fSensBG * 0.5) + (bg * 0.5))/ins_val)+1)*TDD));
|
||||
//var future_sens_old = ( 277700 / (TDD * ((bg * 0.5) + (eventualBG * 0.5 ))));
|
||||
console.log("Future state sensitivity is " +future_sens+" based on eventual and current bg due to flat glucose level above target");
|
||||
rT.reason += "Dosing sensitivity: " +future_sens+" using eventual BG;";
|
||||
}
|
||||
|
||||
else if( glucose_status.delta > 0 && eventualBG > target_bg ) {
|
||||
var future_sens = ( 277700 / (TDD * bg) );
|
||||
else if( glucose_status.delta > 0 && eventualBG > target_bg || eventualBG > bg ) {
|
||||
var future_sens = ( 1800 / (Math.log((bg/ins_val)+1)*TDD));
|
||||
//var future_sens_old = ( 277700 / (TDD * bg));
|
||||
console.log("Future state sensitivity is " +future_sens+" using current bg due to small delta or variation");
|
||||
rT.reason += "Dosing sensitivity: " +future_sens+" using current BG;";
|
||||
}
|
||||
|
||||
else {
|
||||
var future_sens = ( 277700 / (TDD * eventualBG) );
|
||||
var future_sens = ( 1800 / (Math.log((fSensBG/ins_val)+1)*TDD));
|
||||
//var future_sens_old = ( 277700 / (TDD * eventualBG));
|
||||
console.log("Future state sensitivity is " +future_sens+" based on eventual bg due to -ve delta");
|
||||
rT.reason += "Dosing sensitivity: " +future_sens+" using eventual BG;";
|
||||
}
|
||||
var future_sens = round(future_sens,1);
|
||||
future_sens = round(future_sens,1);
|
||||
|
||||
|
||||
|
||||
|
||||
minIOBPredBG = Math.max(39,minIOBPredBG);
|
||||
minCOBPredBG = Math.max(39,minCOBPredBG);
|
||||
minUAMPredBG = Math.max(39,minUAMPredBG);
|
||||
minPredBG = round(minIOBPredBG);
|
||||
|
||||
var fractionCarbsLeft = meal_data.mealCOB/meal_data.carbs;
|
||||
// if we have COB and UAM is enabled, average both
|
||||
|
|
|
@ -49,6 +49,7 @@ import info.nightscout.androidaps.utils.alertDialogs.OKDialog.show
|
|||
import info.nightscout.androidaps.utils.protection.PasswordCheck
|
||||
import info.nightscout.androidaps.utils.protection.ProtectionCheck.ProtectionType.*
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.aps.openAPSSMBDynamicISF.OpenAPSSMBDynamicISFPlugin
|
||||
import info.nightscout.shared.SafeParse
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import javax.inject.Inject
|
||||
|
@ -79,6 +80,7 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
|
|||
@Inject lateinit var nsClientPlugin: NSClientPlugin
|
||||
@Inject lateinit var openAPSAMAPlugin: OpenAPSAMAPlugin
|
||||
@Inject lateinit var openAPSSMBPlugin: OpenAPSSMBPlugin
|
||||
@Inject lateinit var openAPSSMBDynamicISFPlugin: OpenAPSSMBDynamicISFPlugin
|
||||
@Inject lateinit var safetyPlugin: SafetyPlugin
|
||||
@Inject lateinit var sensitivityAAPSPlugin: SensitivityAAPSPlugin
|
||||
@Inject lateinit var sensitivityOref1Plugin: SensitivityOref1Plugin
|
||||
|
@ -171,6 +173,7 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
|
|||
addPreferencesFromResourceIfEnabled(loopPlugin, rootKey, config.APS)
|
||||
addPreferencesFromResourceIfEnabled(openAPSAMAPlugin, rootKey, config.APS)
|
||||
addPreferencesFromResourceIfEnabled(openAPSSMBPlugin, rootKey, config.APS)
|
||||
addPreferencesFromResourceIfEnabled(openAPSSMBDynamicISFPlugin, rootKey, config.APS)
|
||||
addPreferencesFromResourceIfEnabled(sensitivityAAPSPlugin, rootKey)
|
||||
addPreferencesFromResourceIfEnabled(sensitivityWeightedAveragePlugin, rootKey)
|
||||
addPreferencesFromResourceIfEnabled(sensitivityOref1Plugin, rootKey)
|
||||
|
@ -350,7 +353,7 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
|
|||
}
|
||||
}
|
||||
if (pref is EditTextPreference) {
|
||||
if (pref.getKey().contains("password") || pref.getKey().contains("pin") || pref.getKey().contains("secret")) {
|
||||
if (pref.getKey().contains("password") || pref.getKey().contains("pin") || pref.getKey().contains("secret") || pref.getKey().contains("token")) {
|
||||
pref.setSummary("******")
|
||||
} else if (pref.text != null) {
|
||||
pref.dialogMessage = pref.dialogMessage
|
||||
|
|
|
@ -2,9 +2,9 @@ package info.nightscout.androidaps.activities
|
|||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.preference.PreferenceScreen
|
||||
import info.nightscout.androidaps.R
|
||||
|
@ -15,6 +15,7 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
|
|||
|
||||
private var preferenceId = 0
|
||||
private var myPreferenceFragment: MyPreferenceFragment? = null
|
||||
private var searchView: SearchView? = null
|
||||
|
||||
private lateinit var binding: ActivityPreferencesBinding
|
||||
|
||||
|
@ -24,15 +25,6 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
|
|||
binding = ActivityPreferencesBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
binding.prefFilter.addTextChangedListener(object : TextWatcher {
|
||||
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
|
||||
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
|
||||
filterPreferences()
|
||||
}
|
||||
|
||||
override fun afterTextChanged(s: Editable) {}
|
||||
})
|
||||
|
||||
title = rh.gs(R.string.nav_preferences)
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
supportActionBar?.setDisplayShowHomeEnabled(true)
|
||||
|
@ -40,12 +32,29 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
|
|||
preferenceId = intent.getIntExtra("id", -1)
|
||||
myPreferenceFragment?.arguments = Bundle().also {
|
||||
it.putInt("id", preferenceId)
|
||||
it.putString("filter", binding.prefFilter.text.toString())
|
||||
}
|
||||
if (savedInstanceState == null)
|
||||
supportFragmentManager.beginTransaction().replace(R.id.frame_layout, myPreferenceFragment!!).commit()
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.menu_preferences, menu)
|
||||
val searchItem = menu.findItem(R.id.menu_search)
|
||||
searchView = searchItem.actionView as SearchView
|
||||
searchView?.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||
|
||||
override fun onQueryTextChange(newText: String): Boolean {
|
||||
myPreferenceFragment?.setFilter(newText)
|
||||
return false
|
||||
}
|
||||
|
||||
override fun onQueryTextSubmit(query: String): Boolean {
|
||||
return false
|
||||
}
|
||||
})
|
||||
return super.onCreateOptionsMenu(menu)
|
||||
}
|
||||
|
||||
override fun onPreferenceStartScreen(caller: PreferenceFragmentCompat, pref: PreferenceScreen): Boolean {
|
||||
val fragment = MyPreferenceFragment()
|
||||
fragment.arguments = Bundle().also {
|
||||
|
@ -60,10 +69,6 @@ class PreferencesActivity : NoSplashAppCompatActivity(), PreferenceFragmentCompa
|
|||
super.attachBaseContext(LocaleHelper.wrap(newBase))
|
||||
}
|
||||
|
||||
private fun filterPreferences() {
|
||||
myPreferenceFragment?.setFilter(binding.prefFilter.text.toString())
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
android.R.id.home -> {
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
package info.nightscout.androidaps.activities
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.res.ColorStateList
|
||||
import android.os.Bundle
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.view.Menu
|
||||
import android.widget.PopupMenu
|
||||
import android.widget.ArrayAdapter
|
||||
import android.widget.TextView
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.common.collect.Lists
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.data.ProfileSealed
|
||||
import info.nightscout.androidaps.data.PureProfile
|
||||
|
@ -18,7 +18,6 @@ import info.nightscout.androidaps.dialogs.ProfileViewerDialog
|
|||
import info.nightscout.androidaps.extensions.toVisibility
|
||||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
|
||||
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
|
@ -72,61 +71,49 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
|
|||
binding = ActivityProfilehelperBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
binding.menu1.setOnClickListener {
|
||||
switchTab(0, typeSelected[0])
|
||||
}
|
||||
binding.menu2.setOnClickListener {
|
||||
switchTab(1, typeSelected[1])
|
||||
binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
|
||||
override fun onTabSelected(tab: TabLayout.Tab) {
|
||||
switchTab(tab.position, typeSelected[tab.position])
|
||||
}
|
||||
|
||||
binding.profileType.setOnClickListener {
|
||||
PopupMenu(this, binding.profileType).apply {
|
||||
menuInflater.inflate(R.menu.menu_profilehelper, menu)
|
||||
setOnMenuItemClickListener { item ->
|
||||
binding.profileType.setText(item.title)
|
||||
when (item.itemId) {
|
||||
R.id.menu_default -> switchTab(tabSelected, ProfileType.MOTOL_DEFAULT)
|
||||
R.id.menu_default_dpv -> switchTab(tabSelected, ProfileType.DPV_DEFAULT)
|
||||
R.id.menu_current -> switchTab(tabSelected, ProfileType.CURRENT)
|
||||
R.id.menu_available -> switchTab(tabSelected, ProfileType.AVAILABLE_PROFILE)
|
||||
R.id.menu_profileswitch -> switchTab(tabSelected, ProfileType.PROFILE_SWITCH)
|
||||
}
|
||||
true
|
||||
}
|
||||
show()
|
||||
override fun onTabUnselected(tab: TabLayout.Tab) {}
|
||||
override fun onTabReselected(tab: TabLayout.Tab) {}
|
||||
})
|
||||
|
||||
val profileTypeList = Lists.newArrayList(
|
||||
rh.gs(R.string.motoldefaultprofile),
|
||||
rh.gs(R.string.dpvdefaultprofile),
|
||||
rh.gs(R.string.currentprofile),
|
||||
rh.gs(R.string.availableprofile),
|
||||
rh.gs(R.string.careportal_profileswitch)
|
||||
)
|
||||
binding.profileType.setAdapter(ArrayAdapter(this, R.layout.spinner_centered, profileTypeList))
|
||||
|
||||
binding.profileType.setOnItemClickListener { _, _, _, _ ->
|
||||
when (binding.profileType.text.toString()) {
|
||||
rh.gs(R.string.motoldefaultprofile) -> switchTab(tabSelected, ProfileType.MOTOL_DEFAULT)
|
||||
rh.gs(R.string.dpvdefaultprofile) -> switchTab(tabSelected, ProfileType.DPV_DEFAULT)
|
||||
rh.gs(R.string.currentprofile) -> switchTab(tabSelected, ProfileType.CURRENT)
|
||||
rh.gs(R.string.availableprofile) -> switchTab(tabSelected, ProfileType.AVAILABLE_PROFILE)
|
||||
rh.gs(R.string.careportal_profileswitch) -> switchTab(tabSelected, ProfileType.PROFILE_SWITCH)
|
||||
}
|
||||
}
|
||||
|
||||
// Active profile
|
||||
profileList = activePlugin.activeProfileSource.profile?.getProfileList() ?: ArrayList()
|
||||
|
||||
binding.availableProfileList.setOnClickListener {
|
||||
PopupMenu(this, binding.availableProfileList).apply {
|
||||
var order = 0
|
||||
for (name in profileList) menu.add(Menu.NONE, order, order++, name)
|
||||
setOnMenuItemClickListener { item ->
|
||||
binding.availableProfileList.setText(item.title)
|
||||
profileUsed[tabSelected] = item.itemId
|
||||
true
|
||||
}
|
||||
show()
|
||||
}
|
||||
binding.availableProfileList.setAdapter(ArrayAdapter(this, R.layout.spinner_centered, profileList))
|
||||
binding.availableProfileList.setOnItemClickListener { _, _, index, _ ->
|
||||
profileUsed[tabSelected] = index
|
||||
}
|
||||
|
||||
// Profile switch
|
||||
profileSwitch = repository.getEffectiveProfileSwitchDataFromTime(dateUtil.now() - T.months(2).msecs(), true).blockingGet()
|
||||
|
||||
binding.profileswitchList.setOnClickListener {
|
||||
PopupMenu(this, binding.profileswitchList).apply {
|
||||
var order = 0
|
||||
for (name in profileSwitch) menu.add(Menu.NONE, order, order++, name.originalCustomizedName)
|
||||
setOnMenuItemClickListener { item ->
|
||||
binding.profileswitchList.setText(item.title)
|
||||
profileSwitchUsed[tabSelected] = item.itemId
|
||||
true
|
||||
}
|
||||
show()
|
||||
}
|
||||
val profileswitchListNames = profileSwitch.map { it.originalCustomizedName }
|
||||
binding.profileswitchList.setAdapter(ArrayAdapter(this, R.layout.spinner_centered, profileswitchListNames))
|
||||
binding.profileswitchList.setOnItemClickListener { _, _, index, _ ->
|
||||
profileSwitchUsed[tabSelected] = index
|
||||
}
|
||||
|
||||
// Default profile
|
||||
|
@ -250,7 +237,7 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
|
|||
}
|
||||
|
||||
private fun getProfile(age: Double, tdd: Double, weight: Double, basalPct: Double, tab: Int): PureProfile? =
|
||||
try { // profile must not exist
|
||||
try { // Profile must not exist
|
||||
when (typeSelected[tab]) {
|
||||
ProfileType.MOTOL_DEFAULT -> defaultProfile.profile(age, tdd, weight, profileFunction.getUnits())
|
||||
ProfileType.DPV_DEFAULT -> defaultProfileDPV.profile(age, tdd, basalPct, profileFunction.getUnits())
|
||||
|
@ -279,15 +266,13 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
|
|||
}
|
||||
|
||||
private fun switchTab(tab: Int, newContent: ProfileType, storeOld: Boolean = true) {
|
||||
setBackgroundColorOnSelected(tab)
|
||||
// Store values for selected tab. listBox values are stored on selection change
|
||||
if (storeOld) storeValues()
|
||||
|
||||
tabSelected = tab
|
||||
typeSelected[tabSelected] = newContent
|
||||
binding.profileTypeTitle.defaultHintTextColor = ColorStateList.valueOf(rh.gac( this, if (tab == 0) R.attr.helperProfileColor else R.attr.examinedProfileColor))
|
||||
|
||||
// show new content
|
||||
// Show new content
|
||||
binding.profileType.setText(
|
||||
when (typeSelected[tabSelected]) {
|
||||
ProfileType.MOTOL_DEFAULT -> rh.gs(R.string.motoldefaultprofile)
|
||||
|
@ -295,28 +280,27 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
|
|||
ProfileType.CURRENT -> rh.gs(R.string.currentprofile)
|
||||
ProfileType.AVAILABLE_PROFILE -> rh.gs(R.string.availableprofile)
|
||||
ProfileType.PROFILE_SWITCH -> rh.gs(R.string.careportal_profileswitch)
|
||||
}
|
||||
},
|
||||
false
|
||||
)
|
||||
binding.defaultProfile.visibility = (newContent == ProfileType.MOTOL_DEFAULT || newContent == ProfileType.DPV_DEFAULT).toVisibility()
|
||||
binding.currentProfile.visibility = (newContent == ProfileType.CURRENT).toVisibility()
|
||||
binding.availableProfile.visibility = (newContent == ProfileType.AVAILABLE_PROFILE).toVisibility()
|
||||
binding.profileSwitch.visibility = (newContent == ProfileType.PROFILE_SWITCH).toVisibility()
|
||||
|
||||
// restore selected values
|
||||
// Restore selected values
|
||||
binding.age.value = ageUsed[tabSelected]
|
||||
binding.weight.value = weightUsed[tabSelected]
|
||||
binding.tdd.value = tddUsed[tabSelected]
|
||||
binding.basalPctFromTdd.value = pctUsed[tabSelected]
|
||||
|
||||
binding.basalPctFromTddRow.visibility = (newContent == ProfileType.DPV_DEFAULT).toVisibility()
|
||||
if (profileList.isNotEmpty())
|
||||
binding.availableProfileList.setText(profileList[profileUsed[tabSelected]].toString())
|
||||
if (profileSwitch.isNotEmpty())
|
||||
binding.profileswitchList.setText(profileSwitch[profileSwitchUsed[tabSelected]].originalCustomizedName)
|
||||
if (profileList.isNotEmpty()) {
|
||||
binding.availableProfileList.setText(profileList[profileUsed[tabSelected]].toString(), false)
|
||||
}
|
||||
if (profileSwitch.isNotEmpty()) {
|
||||
binding.profileswitchList.setText(profileSwitch[profileSwitchUsed[tabSelected]].originalCustomizedName, false)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setBackgroundColorOnSelected(tab: Int) {
|
||||
binding.menu1.setBackgroundColor(rh.gac(this, if (tab == 1) R.attr.defaultBackground else R.attr.helperProfileColor))
|
||||
binding.menu2.setBackgroundColor(rh.gac(this, if (tab == 0) R.attr.defaultBackground else R.attr.examinedProfileColor))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,12 +16,12 @@ import info.nightscout.androidaps.dependencyInjection.AutotuneModule
|
|||
import info.nightscout.androidaps.diaconn.di.DiaconnG8Module
|
||||
import info.nightscout.androidaps.insight.di.InsightDatabaseModule
|
||||
import info.nightscout.androidaps.insight.di.InsightModule
|
||||
import info.nightscout.androidaps.plugin.general.openhumans.dagger.OpenHumansModule
|
||||
import info.nightscout.androidaps.plugin.general.openhumans.di.OpenHumansModule
|
||||
import info.nightscout.androidaps.plugins.pump.common.di.PumpCommonModule
|
||||
import info.nightscout.androidaps.plugins.pump.common.di.RileyLinkModule
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.di.MedtronicModule
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.dagger.OmnipodDashModule
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger.OmnipodErosModule
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.di.OmnipodDashModule
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.di.OmnipodErosModule
|
||||
import info.nightscout.shared.di.SharedModule
|
||||
import javax.inject.Singleton
|
||||
|
||||
|
|
|
@ -56,9 +56,9 @@ class CarbsDialog : DialogFragmentWithDate() {
|
|||
|
||||
companion object {
|
||||
|
||||
private const val FAV1_DEFAULT = 5
|
||||
private const val FAV2_DEFAULT = 10
|
||||
private const val FAV3_DEFAULT = 20
|
||||
const val FAV1_DEFAULT = 5
|
||||
const val FAV2_DEFAULT = 10
|
||||
const val FAV3_DEFAULT = 20
|
||||
}
|
||||
|
||||
private var queryingProtection = false
|
||||
|
@ -179,7 +179,7 @@ class CarbsDialog : DialogFragmentWithDate() {
|
|||
setOnValueChangedListener { eventTime: Long ->
|
||||
run {
|
||||
val timeOffset = ((eventTime - eventTimeOriginal) / (1000 * 60)).toDouble()
|
||||
binding.time.value = timeOffset
|
||||
if (_binding != null) binding.time.value = timeOffset
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -250,7 +250,8 @@ class CarbsDialog : DialogFragmentWithDate() {
|
|||
val hypoSelected = binding.hypoTt.isChecked
|
||||
if (hypoSelected)
|
||||
actions.add(
|
||||
rh.gs(R.string.temptargetshort) + ": " + (DecimalFormatter.to1Decimal(hypoTT) + " " + unitLabel + " (" + rh.gs(R.string.format_mins, hypoTTDuration) + ")").formatColor( context,
|
||||
rh.gs(R.string.temptargetshort) + ": " + (DecimalFormatter.to1Decimal(hypoTT) + " " + unitLabel + " (" + rh.gs(R.string.format_mins, hypoTTDuration) + ")").formatColor(
|
||||
context,
|
||||
rh,
|
||||
R.attr.tempTargetConfirmation
|
||||
)
|
||||
|
|
|
@ -58,9 +58,9 @@ class InsulinDialog : DialogFragmentWithDate() {
|
|||
|
||||
companion object {
|
||||
|
||||
private const val PLUS1_DEFAULT = 0.5
|
||||
private const val PLUS2_DEFAULT = 1.0
|
||||
private const val PLUS3_DEFAULT = 2.0
|
||||
const val PLUS1_DEFAULT = 0.5
|
||||
const val PLUS2_DEFAULT = 1.0
|
||||
const val PLUS3_DEFAULT = 2.0
|
||||
}
|
||||
|
||||
private var queryingProtection = false
|
||||
|
|
|
@ -3,6 +3,8 @@ package info.nightscout.androidaps.dialogs
|
|||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.HandlerThread
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.view.LayoutInflater
|
||||
|
@ -24,6 +26,7 @@ import info.nightscout.androidaps.database.ValueWrapper
|
|||
import info.nightscout.androidaps.databinding.DialogWizardBinding
|
||||
import info.nightscout.androidaps.events.EventAutosensCalculationFinished
|
||||
import info.nightscout.androidaps.extensions.formatColor
|
||||
import info.nightscout.androidaps.extensions.runOnUiThread
|
||||
import info.nightscout.androidaps.extensions.toVisibility
|
||||
import info.nightscout.androidaps.extensions.valueToUnits
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
|
@ -63,11 +66,13 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
@Inject lateinit var dateUtil: DateUtil
|
||||
@Inject lateinit var protectionCheck: ProtectionCheck
|
||||
|
||||
private val handler = Handler(HandlerThread(this::class.simpleName + "Handler").also { it.start() }.looper)
|
||||
|
||||
private var queryingProtection = false
|
||||
private var wizard: BolusWizard? = null
|
||||
private var calculatedPercentage = 100.0
|
||||
private var calculatedCorrection = 0.0
|
||||
private var correctionPercent = false
|
||||
private var usePercentage = false
|
||||
private var carbsPassedIntoWizard = 0.0
|
||||
private var notesPassedIntoWizard = ""
|
||||
private var okClicked: Boolean = false // one shot guards
|
||||
|
@ -152,7 +157,7 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
?: 0.0, 0.0, maxCarbs.toDouble(), 1.0, DecimalFormat("0"), false, binding.okcancel.ok, textWatcher
|
||||
)
|
||||
|
||||
if (correctionPercent) {
|
||||
if (usePercentage) {
|
||||
calculatedPercentage = sp.getInt(R.string.key_boluswizard_percentage, 100).toDouble()
|
||||
binding.correctionInput.setParams(calculatedPercentage, 10.0, 200.0, 5.0, DecimalFormat("0"), false, binding.okcancel.ok, textWatcher)
|
||||
binding.correctionInput.value = calculatedPercentage
|
||||
|
@ -168,9 +173,10 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
savedInstanceState?.getDouble("carb_time_input")
|
||||
?: 0.0, -60.0, 60.0, 5.0, DecimalFormat("0"), false, binding.okcancel.ok, timeTextWatcher
|
||||
)
|
||||
initDialog()
|
||||
handler.post { initDialog() }
|
||||
calculatedPercentage = sp.getInt(R.string.key_boluswizard_percentage, 100).toDouble()
|
||||
binding.percentUsed.text = rh.gs(R.string.format_percent, sp.getInt(R.string.key_boluswizard_percentage, 100))
|
||||
binding.percentUsed.visibility = (sp.getInt(R.string.key_boluswizard_percentage, 100) != 100 || usePercentage).toVisibility()
|
||||
// ok button
|
||||
binding.okcancel.ok.setOnClickListener {
|
||||
if (okClicked) {
|
||||
|
@ -222,8 +228,8 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
run {
|
||||
sp.putBoolean(rh.gs(R.string.key_wizard_correction_percent), isChecked)
|
||||
binding.correctionUnit.text = if (isChecked) "%" else rh.gs(R.string.insulin_unit_shortname)
|
||||
correctionPercent = binding.correctionPercent.isChecked
|
||||
if (correctionPercent) {
|
||||
usePercentage = binding.correctionPercent.isChecked
|
||||
if (usePercentage) {
|
||||
binding.correctionInput.setParams(calculatedPercentage, 10.0, 200.0, 5.0, DecimalFormat("0"), false, binding.okcancel.ok, textWatcher)
|
||||
binding.correctionInput.customContentDescription = rh.gs(R.string.a11_correction_percentage)
|
||||
} else {
|
||||
|
@ -234,7 +240,7 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
binding.correctionInput.customContentDescription = rh.gs(R.string.a11_correction_units)
|
||||
}
|
||||
binding.correctionInput.updateA11yDescription()
|
||||
binding.correctionInput.value = if (correctionPercent) calculatedPercentage else Round.roundTo(calculatedCorrection, bolusStep)
|
||||
binding.correctionInput.value = if (usePercentage) calculatedPercentage else Round.roundTo(calculatedCorrection, bolusStep)
|
||||
}
|
||||
}
|
||||
// profile
|
||||
|
@ -257,6 +263,7 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
disposable.clear()
|
||||
handler.removeCallbacksAndMessages(null)
|
||||
_binding = null
|
||||
}
|
||||
|
||||
|
@ -314,8 +321,8 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
private fun loadCheckedStates() {
|
||||
binding.bgTrendCheckbox.isChecked = sp.getBoolean(R.string.key_wizard_include_trend_bg, false)
|
||||
binding.cobCheckbox.isChecked = sp.getBoolean(R.string.key_wizard_include_cob, false)
|
||||
correctionPercent = sp.getBoolean(R.string.key_wizard_correction_percent, false)
|
||||
binding.correctionPercent.isChecked = correctionPercent
|
||||
usePercentage = sp.getBoolean(R.string.key_wizard_correction_percent, false)
|
||||
binding.correctionPercent.isChecked = usePercentage
|
||||
}
|
||||
|
||||
private fun valueToUnitsToString(value: Double, units: String): String =
|
||||
|
@ -323,14 +330,9 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
else DecimalFormatter.to1Decimal(value * Constants.MGDL_TO_MMOLL)
|
||||
|
||||
private fun initDialog() {
|
||||
if (carbsPassedIntoWizard != 0.0) {
|
||||
binding.carbsInput.value = carbsPassedIntoWizard
|
||||
}
|
||||
if (notesPassedIntoWizard.isNotBlank()) {
|
||||
binding.notesLayout.notes.setText(notesPassedIntoWizard)
|
||||
}
|
||||
val profile = profileFunction.getProfile()
|
||||
val profileStore = activePlugin.activeProfileSource.profile
|
||||
val tempTarget = repository.getTemporaryTargetActiveAt(dateUtil.now()).blockingGet()
|
||||
|
||||
if (profile == null || profileStore == null) {
|
||||
ToastUtils.showToastInUiThread(ctx, rh.gs(R.string.noprofile))
|
||||
|
@ -338,6 +340,19 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
return
|
||||
}
|
||||
|
||||
// IOB calculation
|
||||
val bolusIob = iobCobCalculator.calculateIobFromBolus().round()
|
||||
val basalIob = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round()
|
||||
|
||||
runOnUiThread {
|
||||
_binding ?: return@runOnUiThread
|
||||
if (carbsPassedIntoWizard != 0.0) {
|
||||
binding.carbsInput.value = carbsPassedIntoWizard
|
||||
}
|
||||
if (notesPassedIntoWizard.isNotBlank()) {
|
||||
binding.notesLayout.notes.setText(notesPassedIntoWizard)
|
||||
}
|
||||
|
||||
val profileList: ArrayList<CharSequence> = profileStore.getProfileList()
|
||||
profileList.add(0, rh.gs(R.string.active))
|
||||
context?.let { context ->
|
||||
|
@ -352,18 +367,12 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
// Set BG if not old
|
||||
binding.bgInput.value = iobCobCalculator.ads.actualBg()?.valueToUnits(units) ?: 0.0
|
||||
|
||||
binding.ttCheckbox.isEnabled = repository.getTemporaryTargetActiveAt(dateUtil.now()).blockingGet() is ValueWrapper.Existing
|
||||
binding.ttCheckbox.isEnabled = tempTarget is ValueWrapper.Existing
|
||||
binding.ttCheckboxIcon.visibility = binding.ttCheckbox.isEnabled.toVisibility()
|
||||
|
||||
// IOB calculation
|
||||
val bolusIob = iobCobCalculator.calculateIobFromBolus().round()
|
||||
val basalIob = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round()
|
||||
|
||||
binding.iobInsulin.text = rh.gs(R.string.formatinsulinunits, -bolusIob.iob - basalIob.basaliob)
|
||||
|
||||
calculateInsulin()
|
||||
|
||||
binding.percentUsed.visibility = (sp.getInt(R.string.key_boluswizard_percentage, 100) != 100 || correctionPercent).toVisibility()
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
|
|
|
@ -192,6 +192,11 @@ class DetermineBasalAdapterSMBDynamicISFJS internal constructor(private val scri
|
|||
this.profile.put("sens", profile.getIsfMgdl())
|
||||
this.profile.put("max_daily_safety_multiplier", sp.getInt(R.string.key_openapsama_max_daily_safety_multiplier, 3))
|
||||
this.profile.put("current_basal_safety_multiplier", sp.getDouble(R.string.key_openapsama_current_basal_safety_multiplier, 4.0))
|
||||
this.profile.put("lgsThreshold", Profile.toMgdl(sp.getDouble(R.string.key_lgs_threshold, 65.0)))
|
||||
|
||||
val insulin = activePlugin.activeInsulin
|
||||
val insulinType = insulin.friendlyName
|
||||
val insulinPeak = insulin.peak
|
||||
|
||||
//mProfile.put("high_temptarget_raises_sensitivity", SP.getBoolean(R.string.key_high_temptarget_raises_sensitivity, SMBDefaults.high_temptarget_raises_sensitivity));
|
||||
this.profile.put("high_temptarget_raises_sensitivity", sp.getBoolean(R.string.key_high_temptarget_raises_sensitivity, SMBDefaults.high_temptarget_raises_sensitivity))
|
||||
|
@ -223,6 +228,8 @@ class DetermineBasalAdapterSMBDynamicISFJS internal constructor(private val scri
|
|||
this.profile.put("maxSMBBasalMinutes", sp.getInt(R.string.key_smbmaxminutes, SMBDefaults.maxSMBBasalMinutes))
|
||||
this.profile.put("maxUAMSMBBasalMinutes", sp.getInt(R.string.key_uamsmbmaxminutes, SMBDefaults.maxUAMSMBBasalMinutes))
|
||||
this.profile.put("DynISFAdjust", SafeParse.stringToDouble(sp.getString(R.string.key_DynISFAdjust, "100")))
|
||||
this.profile.put("insulinType", insulinType)
|
||||
this.profile.put("insulinPeak", insulinPeak)
|
||||
this.profile.put("maxUAMSMBBasalMinutes", sp.getInt(R.string.key_uamsmbmaxminutes, SMBDefaults.maxUAMSMBBasalMinutes))
|
||||
//set the min SMB amount to be the amount set by the pump.
|
||||
this.profile.put("bolus_increment", pumpBolusStep)
|
||||
|
@ -263,9 +270,13 @@ class DetermineBasalAdapterSMBDynamicISFJS internal constructor(private val scri
|
|||
this.mealData.put("lastBolusTime", mealData.lastBolusTime)
|
||||
this.mealData.put("lastCarbTime", mealData.lastCarbTime)
|
||||
|
||||
this.mealData.put("TDDAIMI1", tddCalculator.averageTDD(tddCalculator.calculate(1))?.totalAmount)
|
||||
this.mealData.put("TDDAIMI7", tddCalculator.averageTDD(tddCalculator.calculate(7))?.totalAmount)
|
||||
this.mealData.put("TDDPUMP", tddCalculator.calculateDaily().totalAmount)
|
||||
this.mealData.put("TDDLast24", tddCalculator.calculate24Daily().totalAmount)
|
||||
this.mealData.put("TDDLast4", tddCalculator.calculateDaily(-4, 0).totalAmount)
|
||||
this.mealData.put("TDD4to8", tddCalculator.calculateDaily(-8, -4).totalAmount)
|
||||
this.mealData.put("TDD24", tddCalculator.calculateDaily(-24, 0).totalAmount)
|
||||
|
||||
|
||||
|
||||
if (constraintChecker.isAutosensModeEnabled().value()) {
|
||||
autosensData.put("ratio", autosensDataRatio)
|
||||
|
|
|
@ -68,6 +68,7 @@ class OpenAPSSMBDynamicISFPlugin @Inject constructor(
|
|||
.shortName(R.string.dynisf_shortname)
|
||||
.preferencesId(R.xml.pref_openapssmbdynamicisf)
|
||||
.setDefault(false)
|
||||
.showInList(buildHelper.isEngineeringMode() && buildHelper.isDev())
|
||||
}
|
||||
|
||||
override fun specialEnableCondition(): Boolean = buildHelper.isEngineeringMode() && buildHelper.isDev()
|
||||
|
|
|
@ -178,6 +178,21 @@ class Objective2(injector: HasAndroidInjector) : Objective(injector, "exam", R.s
|
|||
.option(Option(R.string.iob_negiob, true))
|
||||
.option(Option(R.string.iob_posiob, true))
|
||||
)
|
||||
tasks.add(ExamTask(this, R.string.cob_label, R.string.cob_question, "cob1")
|
||||
.option(Option(R.string.cob_longer, true))
|
||||
.option(Option(R.string.cob_shorter, false))
|
||||
.option(Option(R.string.cob_no_effect, false))
|
||||
)
|
||||
tasks.add(ExamTask(this, R.string.cob_label, R.string.cob2_question, "cob2")
|
||||
.option(Option(R.string.cob2_longer, false))
|
||||
.option(Option(R.string.cob2_shorter, true))
|
||||
.option(Option(R.string.cob2_no_effect, false))
|
||||
)
|
||||
tasks.add(ExamTask(this, R.string.cob_label, R.string.cob3_question, "cob3")
|
||||
.option(Option(R.string.cob3_longer, false))
|
||||
.option(Option(R.string.cob3_shorter, false))
|
||||
.option(Option(R.string.cob3_no_effect, true))
|
||||
)
|
||||
tasks.add(ExamTask(this, R.string.breadgrams_label, R.string.blank, "breadgrams")
|
||||
.option(Option(R.string.breadgrams_grams, true))
|
||||
.option(Option(R.string.breadgrams_exchange, false))
|
||||
|
|
|
@ -2,7 +2,9 @@ package info.nightscout.androidaps.plugins.constraints.objectives.objectives
|
|||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.interfaces.Constraint
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
|
||||
import info.nightscout.androidaps.plugins.constraints.safety.SafetyPlugin
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import javax.inject.Inject
|
||||
|
||||
|
@ -10,10 +12,17 @@ import javax.inject.Inject
|
|||
class Objective6(injector: HasAndroidInjector) : Objective(injector, "maxiob", R.string.objectives_maxiob_objective, R.string.objectives_maxiob_gate) {
|
||||
|
||||
@Inject lateinit var constraintChecker: ConstraintChecker
|
||||
@Inject lateinit var safetyPlugin: SafetyPlugin
|
||||
|
||||
init {
|
||||
tasks.add(MinimumDurationTask(this, T.days(1).msecs()))
|
||||
tasks.add(object : Task(this, R.string.maxiobset) {
|
||||
tasks.add(
|
||||
object : Task(this, R.string.closedmodeenabled) {
|
||||
override fun isCompleted(): Boolean = sp.getString(R.string.key_aps_mode, "open") == "closed"
|
||||
})
|
||||
tasks.add(
|
||||
object : Task(this, R.string.maxiobset) {
|
||||
|
||||
override fun isCompleted(): Boolean {
|
||||
val maxIOB = constraintChecker.getMaxIOBAllowed().value()
|
||||
return maxIOB > 0
|
||||
|
|
|
@ -18,37 +18,37 @@ import dagger.android.HasAndroidInjector
|
|||
import dagger.android.support.DaggerFragment
|
||||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.data.LocalInsulin
|
||||
import info.nightscout.androidaps.data.ProfileSealed
|
||||
import info.nightscout.androidaps.database.entities.UserEntry
|
||||
import info.nightscout.androidaps.database.entities.ValueWithUnit
|
||||
import info.nightscout.androidaps.databinding.AutotuneFragmentBinding
|
||||
import info.nightscout.androidaps.dialogs.ProfileViewerDialog
|
||||
import info.nightscout.androidaps.extensions.runOnUiThread
|
||||
import info.nightscout.androidaps.extensions.toVisibility
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.androidaps.logging.UserEntryLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.general.autotune.data.ATProfile
|
||||
import info.nightscout.androidaps.plugins.general.autotune.events.EventAutotuneUpdateGui
|
||||
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
|
||||
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
|
||||
import info.nightscout.androidaps.data.LocalInsulin
|
||||
import info.nightscout.androidaps.data.ProfileSealed
|
||||
import info.nightscout.androidaps.database.entities.UserEntry
|
||||
import info.nightscout.androidaps.database.entities.ValueWithUnit
|
||||
import info.nightscout.androidaps.extensions.runOnUiThread
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.androidaps.logging.UserEntryLogger
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.utils.MidnightTime
|
||||
import info.nightscout.androidaps.utils.Round
|
||||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.shared.SafeParse
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||
import org.json.JSONObject
|
||||
//import org.slf4j.LoggerFactory
|
||||
import java.text.DecimalFormat
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
class AutotuneFragment : DaggerFragment() {
|
||||
|
||||
@Inject lateinit var profileFunction: ProfileFunction
|
||||
@Inject lateinit var autotunePlugin: AutotunePlugin
|
||||
@Inject lateinit var autotuneFS: AutotuneFS
|
||||
|
@ -61,13 +61,16 @@ class AutotuneFragment : DaggerFragment() {
|
|||
@Inject lateinit var rh: ResourceHelper
|
||||
@Inject lateinit var rxBus: RxBus
|
||||
@Inject lateinit var injector: HasAndroidInjector
|
||||
@Inject lateinit var aapsSchedulers: AapsSchedulers
|
||||
|
||||
private var disposable: CompositeDisposable = CompositeDisposable()
|
||||
|
||||
//private val log = LoggerFactory.getLogger(AutotunePlugin::class.java)
|
||||
private var _binding: AutotuneFragmentBinding? = null
|
||||
private lateinit var profileStore: ProfileStore
|
||||
private var profileName = ""
|
||||
private lateinit var profile: ATProfile
|
||||
private var profile: ATProfile? = null
|
||||
|
||||
// This property is only valid between onCreateView and
|
||||
// onDestroyView.
|
||||
private val binding get() = _binding!!
|
||||
|
@ -93,10 +96,10 @@ class AutotuneFragment : DaggerFragment() {
|
|||
|
||||
binding.tuneDays.setParams(
|
||||
savedInstanceState?.getDouble("tunedays")
|
||||
?: defaultValue, 1.0, 30.0, 1.0, DecimalFormat("0"), false, null, textWatcher)
|
||||
?: defaultValue, 1.0, 30.0, 1.0, DecimalFormat("0"), false, null, textWatcher
|
||||
)
|
||||
binding.autotuneRun.setOnClickListener {
|
||||
val daysBack = SafeParse.stringToInt(binding.tuneDays.text)
|
||||
autotunePlugin.calculationRunning = true
|
||||
autotunePlugin.lastNbDays = daysBack.toString()
|
||||
log("Run Autotune $profileName, $daysBack days")
|
||||
Thread {
|
||||
|
@ -105,8 +108,7 @@ class AutotuneFragment : DaggerFragment() {
|
|||
updateGui()
|
||||
}
|
||||
binding.profileList.onItemClickListener = AdapterView.OnItemClickListener { _, _, _, _ ->
|
||||
if (!autotunePlugin.calculationRunning)
|
||||
{
|
||||
if (!autotunePlugin.calculationRunning) {
|
||||
profileName = if (binding.profileList.text.toString() == rh.gs(R.string.active)) "" else binding.profileList.text.toString()
|
||||
profileFunction.getProfile()?.let { currentProfile ->
|
||||
profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?: currentProfile, LocalInsulin(""), injector)
|
||||
|
@ -123,7 +125,7 @@ class AutotuneFragment : DaggerFragment() {
|
|||
autotunePlugin.tunedProfile?.let { tunedProfile ->
|
||||
showConfirmation(requireContext(),
|
||||
rh.gs(R.string.autotune_copy_localprofile_button),
|
||||
rh.gs(R.string.autotune_copy_local_profile_message) + "\n" + localName + " " + dateUtil.dateAndTimeString(autotunePlugin.lastRun),
|
||||
rh.gs(R.string.autotune_copy_local_profile_message) + "\n" + localName,
|
||||
Runnable {
|
||||
localProfilePlugin.addProfile(localProfilePlugin.copyFrom(tunedProfile.getProfile(circadian), localName))
|
||||
rxBus.send(EventLocalProfileChanged())
|
||||
|
@ -204,13 +206,13 @@ class AutotuneFragment : DaggerFragment() {
|
|||
binding.autotuneCompare.setOnClickListener {
|
||||
val pumpProfile = autotunePlugin.pumpProfile
|
||||
val circadian = sp.getBoolean(R.string.key_autotune_circadian_ic_isf, false)
|
||||
val tunedprofile = if (circadian) autotunePlugin.tunedProfile?.circadianProfile else autotunePlugin.tunedProfile?.profile
|
||||
val tunedProfile = if (circadian) autotunePlugin.tunedProfile?.circadianProfile else autotunePlugin.tunedProfile?.profile
|
||||
ProfileViewerDialog().also { pvd ->
|
||||
pvd.arguments = Bundle().also {
|
||||
it.putLong("time", dateUtil.now())
|
||||
it.putInt("mode", ProfileViewerDialog.Mode.PROFILE_COMPARE.ordinal)
|
||||
it.putString("customProfile", pumpProfile.profile.toPureNsJson(dateUtil).toString())
|
||||
it.putString("customProfile2", tunedprofile?.toPureNsJson(dateUtil).toString())
|
||||
it.putString("customProfile2", tunedProfile?.toPureNsJson(dateUtil).toString())
|
||||
it.putString("customProfileUnits", profileFunction.getUnits().asText)
|
||||
it.putString("customProfileName", pumpProfile.profilename + "\n" + rh.gs(R.string.autotune_tunedprofile_name))
|
||||
}
|
||||
|
@ -270,10 +272,8 @@ class AutotuneFragment : DaggerFragment() {
|
|||
super.onResume()
|
||||
disposable += rxBus
|
||||
.toObservable(EventAutotuneUpdateGui::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({
|
||||
updateGui()
|
||||
}, { fabricPrivacy.logException(it) })
|
||||
.observeOn(aapsSchedulers.main)
|
||||
.subscribe({ updateGui() }, fabricPrivacy::logException)
|
||||
checkNewDay()
|
||||
updateGui()
|
||||
}
|
||||
|
@ -315,6 +315,7 @@ class AutotuneFragment : DaggerFragment() {
|
|||
autotunePlugin.calculationRunning -> {
|
||||
binding.tuneWarning.text = rh.gs(R.string.autotune_warning_during_run)
|
||||
}
|
||||
|
||||
autotunePlugin.lastRunSuccess -> {
|
||||
binding.autotuneCopylocal.visibility = View.VISIBLE
|
||||
binding.autotuneUpdateProfile.visibility = autotunePlugin.updateButtonVisibility
|
||||
|
@ -323,9 +324,9 @@ class AutotuneFragment : DaggerFragment() {
|
|||
binding.tuneWarning.text = rh.gs(R.string.autotune_warning_after_run)
|
||||
binding.autotuneCompare.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
else -> {
|
||||
if (profile.isValid)
|
||||
binding.autotuneRun.visibility = View.VISIBLE
|
||||
binding.autotuneRun.visibility = (profile?.isValid == true).toVisibility()
|
||||
binding.autotuneCheckInputProfile.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
@ -335,10 +336,9 @@ class AutotuneFragment : DaggerFragment() {
|
|||
|
||||
private fun checkNewDay() {
|
||||
val runToday = autotunePlugin.lastRun > MidnightTime.calc(dateUtil.now() - autotunePlugin.autotuneStartHour * 3600 * 1000L) + autotunePlugin.autotuneStartHour * 3600 * 1000L
|
||||
if (runToday && autotunePlugin.result != "")
|
||||
{
|
||||
if (runToday && autotunePlugin.result != "") {
|
||||
binding.tuneWarning.text = rh.gs(R.string.autotune_warning_after_run)
|
||||
} else if (!runToday || autotunePlugin.result.isEmpty()) { //if new day reinit result, default days, warning and button's visibility
|
||||
} else if (!runToday || autotunePlugin.result.isEmpty()) { //if new day re-init result, default days, warning and button's visibility
|
||||
resetParam(!runToday)
|
||||
}
|
||||
}
|
||||
|
@ -351,7 +351,7 @@ class AutotuneFragment : DaggerFragment() {
|
|||
return warning
|
||||
}
|
||||
profileFunction.getProfile()?.let { currentProfile ->
|
||||
profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?:currentProfile, LocalInsulin(""), injector)
|
||||
profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?: currentProfile, LocalInsulin(""), injector).also { profile ->
|
||||
if (!profile.isValid) return rh.gs(R.string.autotune_profile_invalid)
|
||||
if (profile.icSize > 1) {
|
||||
warning += nl + rh.gs(R.string.autotune_ic_warning, profile.icSize, profile.ic)
|
||||
|
@ -361,6 +361,7 @@ class AutotuneFragment : DaggerFragment() {
|
|||
warning += nl + rh.gs(R.string.autotune_isf_warning, profile.isfSize, Profile.fromMgdlToUnits(profile.isf, profileFunction.getUnits()), profileFunction.getUnits().asText)
|
||||
}
|
||||
}
|
||||
}
|
||||
return warning
|
||||
}
|
||||
|
||||
|
@ -376,7 +377,10 @@ class AutotuneFragment : DaggerFragment() {
|
|||
}
|
||||
|
||||
private val textWatcher = object : TextWatcher {
|
||||
override fun afterTextChanged(s: Editable) { updateGui() }
|
||||
override fun afterTextChanged(s: Editable) {
|
||||
updateGui()
|
||||
}
|
||||
|
||||
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
|
||||
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
|
||||
if (binding.tuneDays.text.isNotEmpty()) {
|
||||
|
@ -387,7 +391,9 @@ class AutotuneFragment : DaggerFragment() {
|
|||
autotunePlugin.lastNbDays = binding.tuneDays.text
|
||||
resetParam(false)
|
||||
}
|
||||
} catch (e:Exception) { }
|
||||
} catch (e: Exception) {
|
||||
fabricPrivacy.logException(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,34 +2,34 @@ package info.nightscout.androidaps.plugins.general.autotune
|
|||
|
||||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.data.*
|
||||
import info.nightscout.androidaps.data.IobTotal
|
||||
import info.nightscout.androidaps.data.LocalInsulin
|
||||
import info.nightscout.androidaps.database.AppRepository
|
||||
import info.nightscout.androidaps.database.embedments.InterfaceIDs
|
||||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.database.entities.*
|
||||
import info.nightscout.androidaps.extensions.durationInMinutes
|
||||
import info.nightscout.androidaps.extensions.iobCalc
|
||||
import info.nightscout.androidaps.extensions.toJson
|
||||
import info.nightscout.androidaps.extensions.toTemporaryBasal
|
||||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||
import info.nightscout.androidaps.interfaces.Profile
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.general.autotune.data.ATProfile
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.utils.Round
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONObject
|
||||
import org.slf4j.LoggerFactory
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
import kotlin.math.ceil
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@Singleton
|
||||
class AutotuneIob @Inject constructor(
|
||||
open class AutotuneIob @Inject constructor(
|
||||
private val aapsLogger: AAPSLogger,
|
||||
private val repository: AppRepository,
|
||||
private val profileFunction: ProfileFunction,
|
||||
|
@ -39,12 +39,12 @@ class AutotuneIob @Inject constructor(
|
|||
private val autotuneFS: AutotuneFS
|
||||
) {
|
||||
|
||||
private val nsTreatments = ArrayList<NsTreatment>()
|
||||
private var nsTreatments = ArrayList<NsTreatment>()
|
||||
private var dia: Double = Constants.defaultDIA
|
||||
var boluses: MutableList<Bolus> = ArrayList()
|
||||
var boluses: ArrayList<Bolus> = ArrayList()
|
||||
var meals = ArrayList<Carbs>()
|
||||
lateinit var glucose: List<GlucoseValue> // newest at index 0
|
||||
private lateinit var tempBasals: MutableList<TemporaryBasal>
|
||||
private lateinit var tempBasals: ArrayList<TemporaryBasal>
|
||||
var startBG: Long = 0
|
||||
var endBG: Long = 0
|
||||
private fun range(): Long = (60 * 60 * 1000L * dia + T.hours(2).msecs()).toLong()
|
||||
|
@ -59,24 +59,38 @@ class AutotuneIob @Inject constructor(
|
|||
initializeTreatmentData(from - range(), to)
|
||||
initializeTempBasalData(from - range(), to, tunedProfile)
|
||||
initializeExtendedBolusData(from - range(), to, tunedProfile)
|
||||
Collections.sort(tempBasals) { o1: TemporaryBasal, o2: TemporaryBasal -> (o2.timestamp - o1.timestamp).toInt() }
|
||||
// Without Neutral TBR, Autotune Web will ignore iob for periods without TBR running
|
||||
addNeutralTempBasal(from - range(), to, tunedProfile)
|
||||
Collections.sort(nsTreatments) { o1: NsTreatment, o2: NsTreatment -> (o2.date - o1.date).toInt() }
|
||||
Collections.sort(boluses) { o1: Bolus, o2: Bolus -> (o2.timestamp - o1.timestamp).toInt() }
|
||||
log.debug("D/AutotunePlugin: Nb Treatments: " + nsTreatments.size + " Nb meals: " + meals.size)
|
||||
sortTempBasal()
|
||||
addNeutralTempBasal(from - range(), to, tunedProfile) // Without Neutral TBR, Autotune Web will ignore iob for periods without TBR running
|
||||
sortNsTreatments()
|
||||
sortBoluses()
|
||||
aapsLogger.debug(LTag.AUTOTUNE, "Nb Treatments: " + nsTreatments.size + " Nb meals: " + meals.size)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun sortTempBasal() {
|
||||
tempBasals = ArrayList(tempBasals.toList().sortedWith { o1: TemporaryBasal, o2: TemporaryBasal -> (o2.timestamp - o1.timestamp).toInt() })
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun sortNsTreatments() {
|
||||
nsTreatments = ArrayList(nsTreatments.toList().sortedWith { o1: NsTreatment, o2: NsTreatment -> (o2.date - o1.date).toInt() })
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun sortBoluses() {
|
||||
boluses = ArrayList(boluses.toList().sortedWith { o1: Bolus, o2: Bolus -> (o2.timestamp - o1.timestamp).toInt() })
|
||||
}
|
||||
|
||||
private fun initializeBgreadings(from: Long, to: Long) {
|
||||
glucose = repository.compatGetBgReadingsDataFromTime(from, to, false).blockingGet();
|
||||
glucose = repository.compatGetBgReadingsDataFromTime(from, to, false).blockingGet()
|
||||
}
|
||||
|
||||
//nsTreatment is used only for export data, meals is used in AutotunePrep
|
||||
private fun initializeTreatmentData(from: Long, to: Long) {
|
||||
val oldestBgDate = if (glucose.size > 0) glucose[glucose.size - 1].timestamp else from
|
||||
log.debug("AutotunePlugin Check BG date: BG Size: " + glucose.size + " OldestBG: " + dateUtil.dateAndTimeAndSecondsString(oldestBgDate) + " to: " + dateUtil.dateAndTimeAndSecondsString(to))
|
||||
val oldestBgDate = if (glucose.isNotEmpty()) glucose[glucose.size - 1].timestamp else from
|
||||
aapsLogger.debug(LTag.AUTOTUNE, "Check BG date: BG Size: " + glucose.size + " OldestBG: " + dateUtil.dateAndTimeAndSecondsString(oldestBgDate) + " to: " + dateUtil.dateAndTimeAndSecondsString(to))
|
||||
val tmpCarbs = repository.getCarbsDataFromTimeToTimeExpanded(from, to, false).blockingGet()
|
||||
log.debug("AutotunePlugin Nb treatments after query: " + tmpCarbs.size)
|
||||
aapsLogger.debug(LTag.AUTOTUNE, "Nb treatments after query: " + tmpCarbs.size)
|
||||
meals.clear()
|
||||
boluses.clear()
|
||||
var nbCarbs = 0
|
||||
|
@ -146,6 +160,7 @@ class AutotuneIob @Inject constructor(
|
|||
|
||||
// addNeutralTempBasal will add a fake neutral TBR (100%) to have correct basal rate in exported file for periods without TBR running
|
||||
// to be able to compare results between oref0 algo and aaps
|
||||
@Synchronized
|
||||
private fun addNeutralTempBasal(from: Long, to: Long, tunedProfile: ATProfile) {
|
||||
var previousStart = to
|
||||
for (i in tempBasals.indices) {
|
||||
|
@ -180,6 +195,7 @@ class AutotuneIob @Inject constructor(
|
|||
|
||||
// toSplittedTimestampTB will split all TBR across hours in different TBR with correct absolute value to be sure to have correct basal rate
|
||||
// even if profile rate is not the same
|
||||
@Synchronized
|
||||
private fun toSplittedTimestampTB(tb: TemporaryBasal, tunedProfile: ATProfile) {
|
||||
var splittedTimestamp = tb.timestamp
|
||||
val cutInMilliSec = T.mins(60).msecs() //30 min to compare with oref0, 60 min to improve accuracy
|
||||
|
@ -217,7 +233,7 @@ class AutotuneIob @Inject constructor(
|
|||
tempBasals.add(newtb)
|
||||
nsTreatments.add(NsTreatment(newtb))
|
||||
splittedTimestamp += durationFilled
|
||||
splittedDuration = splittedDuration - durationFilled
|
||||
splittedDuration -= durationFilled
|
||||
val profile = profileFunction.getProfile(newtb.timestamp) ?:continue
|
||||
boluses.addAll(convertToBoluses(newtb, profile, tunedProfile.profile)) // required for correct iob calculation with oref0 algo
|
||||
}
|
||||
|
@ -225,7 +241,7 @@ class AutotuneIob @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
fun getIOB(time: Long, localInsulin: LocalInsulin): IobTotal {
|
||||
open fun getIOB(time: Long, localInsulin: LocalInsulin): IobTotal {
|
||||
val bolusIob = getCalculationToTimeTreatments(time, localInsulin).round()
|
||||
return bolusIob
|
||||
}
|
||||
|
@ -295,7 +311,7 @@ class AutotuneIob @Inject constructor(
|
|||
return result
|
||||
}
|
||||
|
||||
|
||||
@Synchronized
|
||||
fun glucoseToJSON(): String {
|
||||
val glucoseJson = JSONArray()
|
||||
for (bgreading in glucose)
|
||||
|
@ -303,6 +319,7 @@ class AutotuneIob @Inject constructor(
|
|||
return glucoseJson.toString(2)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun bolusesToJSON(): String {
|
||||
val bolusesJson = JSONArray()
|
||||
for (bolus in boluses)
|
||||
|
@ -310,6 +327,7 @@ class AutotuneIob @Inject constructor(
|
|||
return bolusesJson.toString(2)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun nsHistoryToJSON(): String {
|
||||
val json = JSONArray()
|
||||
for (t in nsTreatments) {
|
||||
|
@ -377,8 +395,4 @@ class AutotuneIob @Inject constructor(
|
|||
private fun log(message: String) {
|
||||
autotuneFS.atLog("[iob] $message")
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val log = LoggerFactory.getLogger(AutotunePlugin::class.java)
|
||||
}
|
||||
}
|
|
@ -22,6 +22,7 @@ import info.nightscout.androidaps.utils.MidnightTime
|
|||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.androidaps.interfaces.BuildHelper
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import org.json.JSONException
|
||||
import org.json.JSONObject
|
||||
|
@ -60,12 +61,13 @@ class AutotunePlugin @Inject constructor(
|
|||
.pluginName(R.string.autotune)
|
||||
.shortName(R.string.autotune_shortname)
|
||||
.preferencesId(R.xml.pref_autotune)
|
||||
.showInList(buildHelper.isEngineeringMode() && buildHelper.isDev())
|
||||
.description(R.string.autotune_description),
|
||||
aapsLogger, resourceHelper, injector
|
||||
), Autotune {
|
||||
@Volatile override var lastRunSuccess: Boolean = false
|
||||
@Volatile var result: String = ""
|
||||
@Volatile var calculationRunning: Boolean = false
|
||||
@Volatile override var calculationRunning: Boolean = false
|
||||
@Volatile var lastRun: Long = 0
|
||||
@Volatile var selectedProfile = ""
|
||||
@Volatile var lastNbDays: String = ""
|
||||
|
@ -76,21 +78,34 @@ class AutotunePlugin @Inject constructor(
|
|||
private lateinit var profile: Profile
|
||||
val autotuneStartHour: Int = 4
|
||||
|
||||
override fun aapsAutotune(daysBack: Int, autoSwitch: Boolean, profileToTune: String): String {
|
||||
override fun aapsAutotune(daysBack: Int, autoSwitch: Boolean, profileToTune: String) {
|
||||
lastRunSuccess = false
|
||||
if (calculationRunning) {
|
||||
aapsLogger.debug(LTag.AUTOMATION, "Autotune run detected, Autotune Run Cancelled")
|
||||
return
|
||||
}
|
||||
calculationRunning = true
|
||||
tunedProfile = null
|
||||
updateButtonVisibility = View.GONE
|
||||
lastRunSuccess = false
|
||||
var logResult = ""
|
||||
result = ""
|
||||
if (profileFunction.getProfile() == null) {
|
||||
result = rh.gs(R.string.profileswitch_ismissing)
|
||||
return result
|
||||
rxBus.send(EventAutotuneUpdateGui())
|
||||
calculationRunning = false
|
||||
return
|
||||
}
|
||||
val detailedLog = sp.getBoolean(R.string.key_autotune_additional_log, false)
|
||||
calculationRunning = true
|
||||
lastNbDays = "" + daysBack
|
||||
lastRun = dateUtil.now()
|
||||
val profileStore = activePlugin.activeProfileSource.profile ?: return rh.gs(R.string.profileswitch_ismissing)
|
||||
val profileStore = activePlugin.activeProfileSource.profile
|
||||
if (profileStore == null) {
|
||||
result = rh.gs(R.string.profileswitch_ismissing)
|
||||
rxBus.send(EventAutotuneUpdateGui())
|
||||
calculationRunning = false
|
||||
return
|
||||
}
|
||||
selectedProfile = if (profileToTune.isEmpty()) profileFunction.getProfileName() else profileToTune
|
||||
profileFunction.getProfile()?.let { currentProfile ->
|
||||
profile = profileStore.getSpecificProfile(profileToTune)?.let { ProfileSealed.Pure(it) } ?: currentProfile
|
||||
|
@ -144,11 +159,11 @@ class AutotunePlugin @Inject constructor(
|
|||
if (tunedProfile == null) {
|
||||
result = rh.gs(R.string.autotune_error)
|
||||
log("TunedProfile is null on day ${i + 1}")
|
||||
calculationRunning = false
|
||||
rxBus.send(EventAutotuneUpdateGui())
|
||||
autotuneFS.exportResult(result)
|
||||
autotuneFS.exportLogAndZip(lastRun)
|
||||
return result
|
||||
rxBus.send(EventAutotuneUpdateGui())
|
||||
calculationRunning = false
|
||||
return
|
||||
}
|
||||
}
|
||||
result = rh.gs(R.string.autotune_result, dateUtil.dateAndTimeString(lastRun))
|
||||
|
@ -193,13 +208,16 @@ class AutotunePlugin @Inject constructor(
|
|||
}
|
||||
|
||||
tunedProfile?.let {
|
||||
lastRunSuccess = true
|
||||
saveLastRun()
|
||||
lastRunSuccess = true
|
||||
rxBus.send(EventAutotuneUpdateGui())
|
||||
calculationRunning = false
|
||||
return result
|
||||
return
|
||||
}
|
||||
return rh.gs(R.string.autotune_error)
|
||||
result = rh.gs(R.string.autotune_error)
|
||||
rxBus.send(EventAutotuneUpdateGui())
|
||||
calculationRunning = false
|
||||
return
|
||||
}
|
||||
|
||||
private fun showResults(tunedProfile: ATProfile?, pumpProfile: ATProfile): String {
|
||||
|
@ -310,11 +328,16 @@ class AutotunePlugin @Inject constructor(
|
|||
json.put("pumpProfileName", pumpProfile.profilename)
|
||||
json.put("pumpPeak", pumpProfile.peak)
|
||||
json.put("pumpDia", pumpProfile.dia)
|
||||
json.put("tunedProfile", tunedProfile?.profile?.toPureNsJson(dateUtil))
|
||||
json.put("tunedCircadianProfile", tunedProfile?.circadianProfile?.toPureNsJson(dateUtil))
|
||||
json.put("tunedProfileName", tunedProfile?.profilename)
|
||||
json.put("tunedPeak", tunedProfile?.peak)
|
||||
json.put("tunedDia", tunedProfile?.dia)
|
||||
tunedProfile?.let { atProfile ->
|
||||
json.put("tunedProfile", atProfile.profile.toPureNsJson(dateUtil))
|
||||
json.put("tunedCircadianProfile", atProfile.circadianProfile.toPureNsJson(dateUtil))
|
||||
json.put("tunedProfileName", atProfile.profilename)
|
||||
json.put("tunedPeak", atProfile.peak)
|
||||
json.put("tunedDia", atProfile.dia)
|
||||
for (i in 0..23) {
|
||||
json.put("missingDays_$i", atProfile.basalUntuned[i])
|
||||
}
|
||||
}
|
||||
json.put("result", result)
|
||||
json.put("updateButtonVisibility", updateButtonVisibility)
|
||||
sp.putString(R.string.key_autotune_last_run, json.toString())
|
||||
|
@ -345,6 +368,9 @@ class AutotunePlugin @Inject constructor(
|
|||
tunedProfile = ATProfile(ProfileSealed.Pure(tuned), localInsulin, injector).also { atProfile ->
|
||||
atProfile.profilename = tunedProfileName
|
||||
atProfile.circadianProfile = ProfileSealed.Pure(circadianTuned)
|
||||
for (i in 0..23) {
|
||||
atProfile.basalUntuned[i] = JsonHelper.safeGetInt(json,"missingDays_$i")
|
||||
}
|
||||
}
|
||||
result = JsonHelper.safeGetString(json, "result", "")
|
||||
updateButtonVisibility = JsonHelper.safeGetInt(json, "updateButtonVisibility")
|
||||
|
|
|
@ -10,6 +10,8 @@ import info.nightscout.androidaps.utils.DateUtil
|
|||
import info.nightscout.androidaps.utils.MidnightTime
|
||||
import info.nightscout.androidaps.utils.Round
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
@ -17,6 +19,7 @@ import javax.inject.Singleton
|
|||
|
||||
@Singleton
|
||||
class AutotunePrep @Inject constructor(
|
||||
private val aapsLogger: AAPSLogger,
|
||||
private val sp: SP,
|
||||
private val dateUtil: DateUtil,
|
||||
private val autotuneFS: AutotuneFS,
|
||||
|
@ -146,6 +149,7 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
}
|
||||
if (glucose.size == 0 || glucoseData.size == 0 ) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "No BG value received")
|
||||
if (verbose)
|
||||
log("No BG value received")
|
||||
return null
|
||||
|
@ -159,11 +163,13 @@ class AutotunePrep @Inject constructor(
|
|||
//val boluses = 0
|
||||
//val maxCarbs = 0
|
||||
if (treatments.size == 0) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "No Carbs entries")
|
||||
if (verbose)
|
||||
log("No Carbs entries")
|
||||
//return null
|
||||
}
|
||||
if (autotuneIob.boluses.size == 0) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "No treatment received")
|
||||
if (verbose)
|
||||
log("No treatment received")
|
||||
return null
|
||||
|
@ -253,6 +259,7 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
avgDelta = (bg - bucketedData[i + 4].value) / 4
|
||||
} else {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Could not find glucose data")
|
||||
if (verbose)
|
||||
log("Could not find glucose data")
|
||||
}
|
||||
|
@ -302,7 +309,7 @@ class AutotunePrep @Inject constructor(
|
|||
|
||||
// Then, calculate carb absorption for that 5m interval using the deviation.
|
||||
if (mealCOB > 0) {
|
||||
val ci = Math.max(deviation, sp.getDouble("openapsama_min_5m_carbimpact", 3.0))
|
||||
val ci = Math.max(deviation, sp.getDouble(R.string.key_openapsama_min_5m_carbimpact, 3.0))
|
||||
val absorbed = ci * tunedprofile.ic / sens
|
||||
// Store the COB, and use it as the starting point for the next data point.
|
||||
mealCOB = Math.max(0.0, mealCOB - absorbed)
|
||||
|
@ -320,8 +327,9 @@ class AutotunePrep @Inject constructor(
|
|||
crInitialIOB = iob.iob
|
||||
crInitialBG = glucoseDatum.value
|
||||
crInitialCarbTime = glucoseDatum.date
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "CRInitialIOB: $crInitialIOB CRInitialBG: $crInitialBG CRInitialCarbTime: ${dateUtil.toISOString(crInitialCarbTime)}")
|
||||
if (verbose)
|
||||
log("CRInitialIOB: " + crInitialIOB + " CRInitialBG: " + crInitialBG + " CRInitialCarbTime: " + dateUtil.toISOString(crInitialCarbTime))
|
||||
log("CRInitialIOB: $crInitialIOB CRInitialBG: $crInitialBG CRInitialCarbTime: ${dateUtil.toISOString(crInitialCarbTime)}")
|
||||
}
|
||||
// keep calculatingCR as long as we have COB or enough IOB
|
||||
if (mealCOB > 0 && i > 1) {
|
||||
|
@ -333,8 +341,9 @@ class AutotunePrep @Inject constructor(
|
|||
val crEndIOB = iob.iob
|
||||
val crEndBG = glucoseDatum.value
|
||||
val crEndTime = glucoseDatum.date
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "CREndIOB: $crEndIOB CREndBG: $crEndBG CREndTime: ${dateUtil.toISOString(crEndTime)}")
|
||||
if (verbose)
|
||||
log("CREndIOB: " + crEndIOB + " CREndBG: " + crEndBG + " CREndTime: " + dateUtil.toISOString(crEndTime))
|
||||
log("CREndIOB: $crEndIOB CREndBG: $crEndBG CREndTime: ${dateUtil.toISOString(crEndTime)}")
|
||||
val crDatum = CRDatum(dateUtil)
|
||||
crDatum.crInitialBG = crInitialBG
|
||||
crDatum.crInitialIOB = crInitialIOB
|
||||
|
@ -349,6 +358,7 @@ class AutotunePrep @Inject constructor(
|
|||
|
||||
//log.debug(CREndTime - CRInitialCarbTime, CRElapsedMinutes);
|
||||
if (CRElapsedMinutes < 60 || i == 1 && mealCOB > 0) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Ignoring $CRElapsedMinutes m CR period.")
|
||||
if (verbose)
|
||||
log("Ignoring $CRElapsedMinutes m CR period.")
|
||||
} else {
|
||||
|
@ -378,8 +388,9 @@ class AutotunePrep @Inject constructor(
|
|||
//log.debug(type);
|
||||
if (type != "csf") {
|
||||
glucoseDatum.mealAbsorption = "start"
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "${glucoseDatum.mealAbsorption} carb absorption")
|
||||
if (verbose)
|
||||
log(glucoseDatum.mealAbsorption + " carb absorption")
|
||||
log("${glucoseDatum.mealAbsorption} carb absorption")
|
||||
}
|
||||
type = "csf"
|
||||
glucoseDatum.mealCarbs = mealCarbs.toInt()
|
||||
|
@ -389,8 +400,9 @@ class AutotunePrep @Inject constructor(
|
|||
// check previous "type" value, and if it was csf, set a mealAbsorption end flag
|
||||
if (type == "csf") {
|
||||
csfGlucoseData[csfGlucoseData.size - 1].mealAbsorption = "end"
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "${csfGlucoseData[csfGlucoseData.size - 1].mealAbsorption} carb absorption")
|
||||
if (verbose)
|
||||
log(csfGlucoseData[csfGlucoseData.size - 1].mealAbsorption + " carb absorption")
|
||||
log("${csfGlucoseData[csfGlucoseData.size - 1].mealAbsorption} carb absorption")
|
||||
}
|
||||
if (iob.iob > 2 * currentBasal || deviation > 6 || uam) {
|
||||
uam = if (deviation > 0) {
|
||||
|
@ -400,6 +412,7 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
if (type != "uam") {
|
||||
glucoseDatum.uamAbsorption = "start"
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "${glucoseDatum.uamAbsorption} unannnounced meal absorption")
|
||||
if (verbose)
|
||||
log(glucoseDatum.uamAbsorption + " unannnounced meal absorption")
|
||||
}
|
||||
|
@ -407,6 +420,7 @@ class AutotunePrep @Inject constructor(
|
|||
uamGlucoseData.add(glucoseDatum)
|
||||
} else {
|
||||
if (type == "uam") {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "end unannounced meal absorption")
|
||||
if (verbose)
|
||||
log("end unannounced meal absorption")
|
||||
}
|
||||
|
@ -433,8 +447,10 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
}
|
||||
// debug line to print out all the things
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "${(if (absorbing) 1 else 0)} mealCOB: ${Round.roundTo(mealCOB, 0.1)} mealCarbs: ${Math.round(mealCarbs)} basalBGI: ${Round.roundTo(basalBGI, 0.1)} BGI: ${Round.roundTo(BGI, 0.1)} IOB: ${iob.iob} Activity: ${iob.activity} at ${dateUtil.timeStringWithSeconds(BGTime)} dev: $deviation avgDelta: $avgDelta $type")
|
||||
if (verbose)
|
||||
log((if (absorbing) 1 else 0).toString() + " mealCOB: " + Round.roundTo(mealCOB, 0.1) + " mealCarbs: " + Math.round(mealCarbs) + " basalBGI: " + Round.roundTo(basalBGI, 0.1) + " BGI: " + Round.roundTo(BGI, 0.1) + " IOB: " + iob.iob+ " Activity: " + iob.activity + " at " + dateUtil.timeStringWithSeconds(BGTime) + " dev: " + deviation + " avgDelta: " + avgDelta + " " + type)
|
||||
log("${(if (absorbing) 1 else 0)} mealCOB: ${Round.roundTo(mealCOB, 0.1)} mealCarbs: ${Math.round(mealCarbs)} basalBGI: ${Round.roundTo(basalBGI, 0.1)} BGI: ${Round
|
||||
.roundTo(BGI, 0.1)} IOB: ${iob.iob} Activity: ${iob.activity} at ${dateUtil.timeStringWithSeconds(BGTime)} dev: $deviation avgDelta: $avgDelta $type")
|
||||
}
|
||||
|
||||
//****************************************************************************************************************************************
|
||||
|
@ -449,16 +465,20 @@ class AutotunePrep @Inject constructor(
|
|||
val UAMLength = uamGlucoseData.size
|
||||
var basalLength = basalGlucoseData.size
|
||||
if (sp.getBoolean(R.string.key_autotune_categorize_uam_as_basal, false)) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Categorizing all UAM data as basal.")
|
||||
if (verbose)
|
||||
log("Categorizing all UAM data as basal.")
|
||||
basalGlucoseData.addAll(uamGlucoseData)
|
||||
} else if (CSFLength > 12) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Found at least 1h of carb: assuming meals were announced, and categorizing UAM data as basal.")
|
||||
if (verbose)
|
||||
log("Found at least 1h of carb: assuming meals were announced, and categorizing UAM data as basal.")
|
||||
basalGlucoseData.addAll(uamGlucoseData)
|
||||
} else {
|
||||
if (2 * basalLength < UAMLength) {
|
||||
//log.debug(basalGlucoseData, UAMGlucoseData);
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Warning: too many deviations categorized as UnAnnounced Meals")
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Adding $UAMLength UAM deviations to $basalLength basal ones")
|
||||
if (verbose) {
|
||||
log("Warning: too many deviations categorized as UnAnnounced Meals")
|
||||
log("Adding $UAMLength UAM deviations to $basalLength basal ones")
|
||||
|
@ -473,10 +493,12 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
//log.debug(newBasalGlucose);
|
||||
basalGlucoseData = newBasalGlucose
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "and selecting the lowest 50%, leaving ${basalGlucoseData.size} basal+UAM ones")
|
||||
if (verbose)
|
||||
log("and selecting the lowest 50%, leaving " + basalGlucoseData.size + " basal+UAM ones")
|
||||
log("and selecting the lowest 50%, leaving ${basalGlucoseData.size} basal+UAM ones")
|
||||
}
|
||||
if (2 * ISFLength < UAMLength) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Adding $UAMLength UAM deviations to $ISFLength ISF ones")
|
||||
if (verbose)
|
||||
log("Adding $UAMLength UAM deviations to $ISFLength ISF ones")
|
||||
isfGlucoseData.addAll(uamGlucoseData)
|
||||
|
@ -488,14 +510,17 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
//console.error(newISFGlucose);
|
||||
isfGlucoseData = newISFGlucose
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "and selecting the lowest 50%, leaving ${isfGlucoseData.size} ISF+UAM ones")
|
||||
if (verbose)
|
||||
log("and selecting the lowest 50%, leaving " + isfGlucoseData.size + " ISF+UAM ones")
|
||||
log("and selecting the lowest 50%, leaving ${isfGlucoseData.size} ISF+UAM ones")
|
||||
//log.error(ISFGlucoseData.length, UAMLength);
|
||||
}
|
||||
}
|
||||
basalLength = basalGlucoseData.size
|
||||
ISFLength = isfGlucoseData.size
|
||||
if (4 * basalLength + ISFLength < CSFLength && ISFLength < 10) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Warning: too many deviations categorized as meals")
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Adding $CSFLength CSF deviations to $ISFLength ISF ones")
|
||||
if (verbose) {
|
||||
log("Warning: too many deviations categorized as meals")
|
||||
//log.debug("Adding",CSFLength,"CSF deviations to",basalLength,"basal ones");
|
||||
|
@ -507,8 +532,9 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
|
||||
// categorize.js Lines 437-444
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "CRData: ${crData.size} CSFGlucoseData: ${csfGlucoseData.size} ISFGlucoseData: ${isfGlucoseData.size} BasalGlucoseData: ${basalGlucoseData.size}")
|
||||
if (verbose)
|
||||
log("CRData: " + crData.size + " CSFGlucoseData: " + csfGlucoseData.size + " ISFGlucoseData: " + isfGlucoseData.size + " BasalGlucoseData: " + basalGlucoseData.size)
|
||||
log("CRData: ${crData.size} CSFGlucoseData: ${csfGlucoseData.size} ISFGlucoseData: ${isfGlucoseData.size} BasalGlucoseData: ${basalGlucoseData.size}")
|
||||
|
||||
return PreppedGlucose(autotuneIob.startBG, crData, csfGlucoseData, isfGlucoseData, basalGlucoseData, dateUtil)
|
||||
}
|
||||
|
@ -516,6 +542,7 @@ class AutotunePrep @Inject constructor(
|
|||
//dosed.js full
|
||||
private fun dosed(start: Long, end: Long, treatments: List<Bolus>): Double {
|
||||
var insulinDosed = 0.0
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "No treatments to process.")
|
||||
if (treatments.size == 0) {
|
||||
log("No treatments to process.")
|
||||
return 0.0
|
||||
|
|
|
@ -31,7 +31,7 @@ class BGDatum {
|
|||
constructor(json: JSONObject, dateUtil: DateUtil) {
|
||||
this.dateUtil = dateUtil
|
||||
try {
|
||||
if (json.has("_id")) id = json.getLong("_id")
|
||||
//if (json.has("_id")) id = json.getLong("_id")
|
||||
if (json.has("date")) date = json.getLong("date")
|
||||
if (json.has("sgv")) value = json.getDouble("sgv")
|
||||
if (json.has("direction")) direction = TrendArrow.fromString(json.getString("direction"))
|
||||
|
@ -77,4 +77,15 @@ class BGDatum {
|
|||
}
|
||||
return bgjson
|
||||
}
|
||||
|
||||
fun equals(obj: BGDatum): Boolean {
|
||||
var isEqual = true
|
||||
if (date / 1000 != obj.date / 1000) isEqual = false
|
||||
if (deviation != obj.deviation) isEqual = false
|
||||
if (avgDelta != obj.avgDelta) isEqual = false
|
||||
if (bgi != obj.bgi) isEqual = false
|
||||
if (mealAbsorption != obj.mealAbsorption) isEqual = false
|
||||
if (mealCarbs != obj.mealCarbs) isEqual = false
|
||||
return isEqual
|
||||
}
|
||||
}
|
|
@ -51,4 +51,17 @@ class CRDatum {
|
|||
}
|
||||
return crjson
|
||||
}
|
||||
|
||||
fun equals(obj: CRDatum): Boolean {
|
||||
var isEqual = true
|
||||
if (crInitialIOB != obj.crInitialIOB) isEqual = false
|
||||
if (crInitialBG != obj.crInitialBG) isEqual = false
|
||||
if (crInitialCarbTime / 1000 != obj.crInitialCarbTime / 1000) isEqual = false
|
||||
if (crEndIOB != obj.crEndIOB) isEqual = false
|
||||
if (crEndBG != obj.crEndBG) isEqual = false
|
||||
if (crEndTime / 1000 != obj.crEndTime / 1000) isEqual = false
|
||||
if (crCarbs != obj.crCarbs) isEqual = false
|
||||
if (crInsulin != obj.crInsulin) isEqual = false
|
||||
return isEqual
|
||||
}
|
||||
}
|
|
@ -5,6 +5,7 @@ import android.bluetooth.BluetoothManager
|
|||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Build
|
||||
import android.provider.Settings
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
|
@ -113,7 +114,7 @@ class ImportExportPrefsImpl @Inject constructor(
|
|||
val n1 = Settings.System.getString(context.contentResolver, "bluetooth_name")
|
||||
val n2 = Settings.Secure.getString(context.contentResolver, "bluetooth_name")
|
||||
val n3 = try {
|
||||
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH_CONNECT) == PackageManager.PERMISSION_GRANTED) {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S || ActivityCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH_CONNECT) == PackageManager.PERMISSION_GRANTED) {
|
||||
(context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager?)?.adapter?.name
|
||||
} else null
|
||||
} catch (e: Exception){
|
||||
|
|
|
@ -148,7 +148,7 @@ class MaintenancePlugin @Inject constructor(
|
|||
* @return
|
||||
*/
|
||||
private fun constructName(): String {
|
||||
return "AndroidAPS_LOG_" + Date().time + loggerUtils.suffix
|
||||
return "AndroidAPS_LOG_" + System.currentTimeMillis() + loggerUtils.suffix
|
||||
}
|
||||
|
||||
private fun zip(zipFile: File?, files: List<File>) {
|
||||
|
|
|
@ -28,6 +28,7 @@ import info.nightscout.androidaps.utils.DateUtil
|
|||
import info.nightscout.androidaps.utils.JsonHelper
|
||||
import info.nightscout.androidaps.utils.JsonHelper.safeGetLong
|
||||
import info.nightscout.androidaps.interfaces.BuildHelper
|
||||
import info.nightscout.androidaps.utils.XDripBroadcast
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.inject.Inject
|
||||
|
@ -49,6 +50,7 @@ class NSClientAddUpdateWorker(
|
|||
@Inject lateinit var rxBus: RxBus
|
||||
@Inject lateinit var uel: UserEntryLogger
|
||||
@Inject lateinit var virtualPumpPlugin: VirtualPumpPlugin
|
||||
@Inject lateinit var xDripBroadcast: XDripBroadcast
|
||||
|
||||
override fun doWork(): Result {
|
||||
val treatments = dataWorker.pickupJSONArray(inputData.getLong(DataWorker.STORE_KEY, -1))
|
||||
|
@ -85,14 +87,16 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.BOLUS, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.BOLUS, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Insulin(it.amount)
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted bolus $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.BOLUS_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.BOLUS_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Insulin(it.amount)
|
||||
)
|
||||
|
@ -119,21 +123,24 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.CARBS, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.CARBS, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Gram(it.amount.toInt())
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted carbs $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.CARBS_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.CARBS_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Gram(it.amount.toInt())
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Invalidated carbs $it")
|
||||
}
|
||||
result.updated.forEach {
|
||||
uel.log(Action.CARBS, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.CARBS, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Gram(it.amount.toInt())
|
||||
)
|
||||
|
@ -169,7 +176,8 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach { tt ->
|
||||
uel.log(Action.TT, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.TT, Sources.NSClient,
|
||||
ValueWithUnit.TherapyEventTTReason(tt.reason),
|
||||
ValueWithUnit.fromGlucoseUnit(tt.lowTarget, Constants.MGDL),
|
||||
ValueWithUnit.fromGlucoseUnit(tt.highTarget, Constants.MGDL).takeIf { tt.lowTarget != tt.highTarget },
|
||||
|
@ -178,7 +186,8 @@ class NSClientAddUpdateWorker(
|
|||
aapsLogger.debug(LTag.DATABASE, "Inserted TemporaryTarget $tt")
|
||||
}
|
||||
result.invalidated.forEach { tt ->
|
||||
uel.log(Action.TT_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.TT_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.TherapyEventTTReason(tt.reason),
|
||||
ValueWithUnit.Mgdl(tt.lowTarget),
|
||||
ValueWithUnit.Mgdl(tt.highTarget).takeIf { tt.lowTarget != tt.highTarget },
|
||||
|
@ -187,7 +196,8 @@ class NSClientAddUpdateWorker(
|
|||
aapsLogger.debug(LTag.DATABASE, "Invalidated TemporaryTarget $tt")
|
||||
}
|
||||
result.ended.forEach { tt ->
|
||||
uel.log(Action.CANCEL_TT, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.CANCEL_TT, Sources.NSClient,
|
||||
ValueWithUnit.TherapyEventTTReason(tt.reason),
|
||||
ValueWithUnit.Mgdl(tt.lowTarget),
|
||||
ValueWithUnit.Mgdl(tt.highTarget).takeIf { tt.lowTarget != tt.highTarget },
|
||||
|
@ -215,13 +225,17 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.PROFILE_SWITCH, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp))
|
||||
uel.log(
|
||||
Action.PROFILE_SWITCH, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp)
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted EffectiveProfileSwitch $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.PROFILE_SWITCH_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp))
|
||||
uel.log(
|
||||
Action.PROFILE_SWITCH_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp)
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Invalidated EffectiveProfileSwitch $it")
|
||||
}
|
||||
result.updatedNsId.forEach {
|
||||
|
@ -231,7 +245,6 @@ class NSClientAddUpdateWorker(
|
|||
} ?: aapsLogger.error("Error parsing EffectiveProfileSwitch json $json")
|
||||
}
|
||||
eventType == TherapyEvent.Type.BOLUS_WIZARD.text ->
|
||||
if (config.NSCLIENT) {
|
||||
bolusCalculatorResultFromJson(json)?.let { bolusCalculatorResult ->
|
||||
repository.runTransactionForResult(SyncNsBolusCalculatorResultTransaction(bolusCalculatorResult))
|
||||
.doOnError {
|
||||
|
@ -241,13 +254,15 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.BOLUS_CALCULATOR_RESULT, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.BOLUS_CALCULATOR_RESULT, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted BolusCalculatorResult $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.BOLUS_CALCULATOR_RESULT_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.BOLUS_CALCULATOR_RESULT_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Invalidated BolusCalculatorResult $it")
|
||||
|
@ -257,7 +272,6 @@ class NSClientAddUpdateWorker(
|
|||
}
|
||||
}
|
||||
} ?: aapsLogger.error("Error parsing BolusCalculatorResult json $json")
|
||||
}
|
||||
eventType == TherapyEvent.Type.CANNULA_CHANGE.text ||
|
||||
eventType == TherapyEvent.Type.INSULIN_CHANGE.text ||
|
||||
eventType == TherapyEvent.Type.SENSOR_CHANGE.text ||
|
||||
|
@ -320,7 +334,8 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.EXTENDED_BOLUS, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.EXTENDED_BOLUS, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Insulin(it.amount),
|
||||
ValueWithUnit.UnitPerHour(it.rate),
|
||||
|
@ -329,7 +344,8 @@ class NSClientAddUpdateWorker(
|
|||
aapsLogger.debug(LTag.DATABASE, "Inserted ExtendedBolus $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.EXTENDED_BOLUS_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.EXTENDED_BOLUS_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Insulin(it.amount),
|
||||
ValueWithUnit.UnitPerHour(it.rate),
|
||||
|
@ -338,7 +354,8 @@ class NSClientAddUpdateWorker(
|
|||
aapsLogger.debug(LTag.DATABASE, "Invalidated ExtendedBolus $it")
|
||||
}
|
||||
result.ended.forEach {
|
||||
uel.log(Action.CANCEL_EXTENDED_BOLUS, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.CANCEL_EXTENDED_BOLUS, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Insulin(it.amount),
|
||||
ValueWithUnit.UnitPerHour(it.rate),
|
||||
|
@ -366,7 +383,8 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.TEMP_BASAL, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.TEMP_BASAL, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
if (it.isAbsolute) ValueWithUnit.UnitPerHour(it.rate) else ValueWithUnit.Percent(it.rate.toInt()),
|
||||
ValueWithUnit.Minute(TimeUnit.MILLISECONDS.toMinutes(it.duration).toInt())
|
||||
|
@ -374,7 +392,8 @@ class NSClientAddUpdateWorker(
|
|||
aapsLogger.debug(LTag.DATABASE, "Inserted TemporaryBasal $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.TEMP_BASAL_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.TEMP_BASAL_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
if (it.isAbsolute) ValueWithUnit.UnitPerHour(it.rate) else ValueWithUnit.Percent(it.rate.toInt()),
|
||||
ValueWithUnit.Minute(TimeUnit.MILLISECONDS.toMinutes(it.duration).toInt())
|
||||
|
@ -382,7 +401,8 @@ class NSClientAddUpdateWorker(
|
|||
aapsLogger.debug(LTag.DATABASE, "Invalidated TemporaryBasal $it")
|
||||
}
|
||||
result.ended.forEach {
|
||||
uel.log(Action.CANCEL_TEMP_BASAL, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.CANCEL_TEMP_BASAL, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
if (it.isAbsolute) ValueWithUnit.UnitPerHour(it.rate) else ValueWithUnit.Percent(it.rate.toInt()),
|
||||
ValueWithUnit.Minute(TimeUnit.MILLISECONDS.toMinutes(it.duration).toInt())
|
||||
|
@ -409,13 +429,17 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.PROFILE_SWITCH, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp))
|
||||
uel.log(
|
||||
Action.PROFILE_SWITCH, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp)
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted ProfileSwitch $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.PROFILE_SWITCH_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp))
|
||||
uel.log(
|
||||
Action.PROFILE_SWITCH_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp)
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Invalidated ProfileSwitch $it")
|
||||
}
|
||||
result.updatedNsId.forEach {
|
||||
|
@ -435,21 +459,24 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach { oe ->
|
||||
uel.log(Action.LOOP_CHANGE, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.LOOP_CHANGE, Sources.NSClient,
|
||||
ValueWithUnit.OfflineEventReason(oe.reason),
|
||||
ValueWithUnit.Minute(TimeUnit.MILLISECONDS.toMinutes(oe.duration).toInt())
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted OfflineEvent $oe")
|
||||
}
|
||||
result.invalidated.forEach { oe ->
|
||||
uel.log(Action.LOOP_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.LOOP_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.OfflineEventReason(oe.reason),
|
||||
ValueWithUnit.Minute(TimeUnit.MILLISECONDS.toMinutes(oe.duration).toInt())
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Invalidated OfflineEvent $oe")
|
||||
}
|
||||
result.ended.forEach { oe ->
|
||||
uel.log(Action.LOOP_CHANGE, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.LOOP_CHANGE, Sources.NSClient,
|
||||
ValueWithUnit.OfflineEventReason(oe.reason),
|
||||
ValueWithUnit.Minute(TimeUnit.MILLISECONDS.toMinutes(oe.duration).toInt())
|
||||
)
|
||||
|
@ -472,7 +499,8 @@ class NSClientAddUpdateWorker(
|
|||
val enteredBy = JsonHelper.safeGetString(json, "enteredBy", "")
|
||||
val notes = JsonHelper.safeGetString(json, "notes", "")
|
||||
if (date > now - 15 * 60 * 1000L && notes.isNotEmpty()
|
||||
&& enteredBy != sp.getString("careportal_enteredby", "AndroidAPS")) {
|
||||
&& enteredBy != sp.getString("careportal_enteredby", "AndroidAPS")
|
||||
) {
|
||||
val defaultVal = config.NSCLIENT
|
||||
if (sp.getBoolean(R.string.key_ns_announcements, defaultVal)) {
|
||||
val announcement = Notification(Notification.NS_ANNOUNCEMENT, notes, Notification.ANNOUNCEMENT, 60)
|
||||
|
@ -482,6 +510,7 @@ class NSClientAddUpdateWorker(
|
|||
}
|
||||
}
|
||||
nsClientPlugin.updateLatestDateReceivedIfNewer(latestDateInReceivedData)
|
||||
xDripBroadcast.sendTreatments(treatments)
|
||||
return ret
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import info.nightscout.androidaps.database.AppRepository
|
|||
import info.nightscout.androidaps.events.EventAppExit
|
||||
import info.nightscout.androidaps.events.EventConfigBuilderChange
|
||||
import info.nightscout.androidaps.events.EventPreferenceChange
|
||||
import info.nightscout.androidaps.interfaces.BuildHelper
|
||||
import info.nightscout.androidaps.interfaces.Config
|
||||
import info.nightscout.androidaps.interfaces.DataSyncSelector
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
|
@ -47,8 +48,6 @@ import info.nightscout.androidaps.utils.FabricPrivacy
|
|||
import info.nightscout.androidaps.utils.JsonHelper.safeGetString
|
||||
import info.nightscout.androidaps.utils.JsonHelper.safeGetStringAllowNull
|
||||
import info.nightscout.androidaps.utils.T.Companion.mins
|
||||
import info.nightscout.androidaps.utils.XDripBroadcast
|
||||
import info.nightscout.androidaps.interfaces.BuildHelper
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
|
@ -83,7 +82,6 @@ class NSClientService : DaggerService() {
|
|||
@Inject lateinit var dataWorker: DataWorker
|
||||
@Inject lateinit var dataSyncSelector: DataSyncSelector
|
||||
@Inject lateinit var repository: AppRepository
|
||||
@Inject lateinit var xDripBroadcast: XDripBroadcast
|
||||
|
||||
companion object {
|
||||
|
||||
|
@ -473,7 +471,6 @@ class NSClientService : DaggerService() {
|
|||
.setInputData(dataWorker.storeInputData(profileStoreJson))
|
||||
.build()
|
||||
)
|
||||
xDripBroadcast.sendProfile(profileStoreJson)
|
||||
}
|
||||
}
|
||||
if (data.has("treatments")) {
|
||||
|
@ -492,7 +489,6 @@ class NSClientService : DaggerService() {
|
|||
.setInputData(dataWorker.storeInputData(addedOrUpdatedTreatments))
|
||||
.build()
|
||||
)
|
||||
xDripBroadcast.sendTreatments(addedOrUpdatedTreatments)
|
||||
}
|
||||
}
|
||||
if (data.has("devicestatus")) {
|
||||
|
@ -536,7 +532,6 @@ class NSClientService : DaggerService() {
|
|||
.setInputData(dataWorker.storeInputData(sgvs))
|
||||
.build()
|
||||
)
|
||||
xDripBroadcast.sendSgvs(sgvs)
|
||||
}
|
||||
}
|
||||
rxBus.send(EventNSClientNewLog("LAST", dateUtil.dateAndTimeString(latestDateInReceivedData)))
|
||||
|
|
|
@ -207,8 +207,8 @@ class OverviewData @Inject constructor(
|
|||
* IOB, COB
|
||||
*/
|
||||
|
||||
fun bolusIob(iobCobCalculator: IobCobCalculator): IobTotal = iobCobCalculator.calculateIobFromBolus().round(fabricPrivacy)
|
||||
fun basalIob(iobCobCalculator: IobCobCalculator): IobTotal = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round(fabricPrivacy)
|
||||
fun bolusIob(iobCobCalculator: IobCobCalculator): IobTotal = iobCobCalculator.calculateIobFromBolus().round()
|
||||
fun basalIob(iobCobCalculator: IobCobCalculator): IobTotal = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round()
|
||||
fun cobInfo(iobCobCalculator: IobCobCalculator): CobInfo = iobCobCalculator.getCobInfo(true, "Overview COB")
|
||||
|
||||
val lastCarbsTime: Long
|
||||
|
|
|
@ -51,7 +51,11 @@ import info.nightscout.androidaps.plugins.constraints.bgQualityCheck.BgQualityCh
|
|||
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.data.NSDeviceStatus
|
||||
import info.nightscout.androidaps.plugins.general.overview.activities.QuickWizardListActivity
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.*
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewCalcProgress
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewGraph
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewIobCob
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewSensitivity
|
||||
import info.nightscout.androidaps.plugins.general.overview.graphData.GraphData
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationStore
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider
|
||||
|
@ -66,7 +70,6 @@ import info.nightscout.androidaps.utils.FabricPrivacy
|
|||
import info.nightscout.androidaps.utils.ToastUtils
|
||||
import info.nightscout.androidaps.utils.TrendCalculator
|
||||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
|
||||
import info.nightscout.androidaps.interfaces.BuildHelper
|
||||
import info.nightscout.androidaps.utils.protection.ProtectionCheck
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
|
@ -236,10 +239,6 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
.debounce(1L, TimeUnit.SECONDS)
|
||||
.observeOn(aapsSchedulers.main)
|
||||
.subscribe({ updateGraph() }, fabricPrivacy::logException)
|
||||
disposable += activePlugin.activeOverview.overviewBus
|
||||
.toObservable(EventUpdateOverviewPumpStatus::class.java)
|
||||
.observeOn(aapsSchedulers.main)
|
||||
.subscribe({ updatePumpStatus() }, fabricPrivacy::logException)
|
||||
disposable += activePlugin.activeOverview.overviewBus
|
||||
.toObservable(EventUpdateOverviewNotification::class.java)
|
||||
.observeOn(aapsSchedulers.main)
|
||||
|
@ -308,7 +307,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
}
|
||||
handler.postDelayed(refreshLoop, 60 * 1000L)
|
||||
|
||||
refreshAll()
|
||||
handler.post { refreshAll() }
|
||||
updatePumpStatus()
|
||||
updateCalcProgress()
|
||||
}
|
||||
|
|
|
@ -134,8 +134,8 @@ class OverviewMenus @Inject constructor(
|
|||
val item = popup.menu.add(Menu.NONE, m.ordinal + 100 * (g + 1), Menu.NONE, rh.gs(m.nameId))
|
||||
val title = item.title
|
||||
val s = SpannableString(" $title ")
|
||||
s.setSpan(ForegroundColorSpan(rh.gac(context, m.attrTextId)), 0, s.length, 0)
|
||||
s.setSpan(BackgroundColorSpan(rh.gac(context, m.attrId)), 0, s.length, 0)
|
||||
s.setSpan(ForegroundColorSpan(rh.gac(m.attrTextId)), 0, s.length, 0)
|
||||
s.setSpan(BackgroundColorSpan(rh.gac(m.attrId)), 0, s.length, 0)
|
||||
item.title = s
|
||||
item.isCheckable = true
|
||||
item.isChecked = settingsCopy[g][m.ordinal]
|
||||
|
|
|
@ -6,11 +6,7 @@ import dagger.android.HasAndroidInjector
|
|||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.events.EventPumpStatusChanged
|
||||
import info.nightscout.androidaps.extensions.*
|
||||
import info.nightscout.androidaps.interfaces.Config
|
||||
import info.nightscout.androidaps.interfaces.Overview
|
||||
import info.nightscout.androidaps.interfaces.PluginBase
|
||||
import info.nightscout.androidaps.interfaces.PluginDescription
|
||||
import info.nightscout.androidaps.interfaces.PluginType
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
|
||||
|
@ -21,7 +17,6 @@ import info.nightscout.androidaps.plugins.general.overview.graphExtensions.Scale
|
|||
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationStore
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventIobCalculationProgress
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
|
@ -175,46 +170,4 @@ class OverviewPlugin @Inject constructor(
|
|||
.storeDouble(R.string.key_statuslights_bat_critical, sp, rh)
|
||||
.storeInt(R.string.key_boluswizard_percentage, sp, rh)
|
||||
}
|
||||
/*
|
||||
@Volatile
|
||||
var runningRefresh = false
|
||||
override fun refreshLoop(from: String) {
|
||||
if (runningRefresh) return
|
||||
runningRefresh = true
|
||||
overviewBus.send(EventUpdateOverviewNotification(from))
|
||||
loadIobCobResults(from)
|
||||
overviewBus.send(EventUpdateOverviewProfile(from))
|
||||
overviewBus.send(EventUpdateOverviewBg(from))
|
||||
overviewBus.send(EventUpdateOverviewTime(from))
|
||||
overviewBus.send(EventUpdateOverviewTemporaryBasal(from))
|
||||
overviewBus.send(EventUpdateOverviewExtendedBolus(from))
|
||||
overviewBus.send(EventUpdateOverviewTemporaryTarget(from))
|
||||
loadAsData(from)
|
||||
overviewData.preparePredictions(from)
|
||||
overviewData.prepareBasalData(from)
|
||||
overviewData.prepareTemporaryTargetData(from)
|
||||
overviewData.prepareTreatmentsData(from)
|
||||
overviewData.prepareIobAutosensData(from)
|
||||
overviewBus.send(EventUpdateOverviewGraph(from))
|
||||
overviewBus.send(EventUpdateOverviewIobCob(from))
|
||||
aapsLogger.debug(LTag.UI, "refreshLoop finished")
|
||||
runningRefresh = false
|
||||
}
|
||||
|
||||
@Suppress("SameParameterValue")
|
||||
private fun loadAll(from: String) {
|
||||
loadBg(from)
|
||||
loadProfile(from)
|
||||
loadTemporaryTarget(from)
|
||||
loadIobCobResults(from)
|
||||
loadAsData(from)
|
||||
overviewData.prepareBasalData(from)
|
||||
overviewData.prepareTemporaryTargetData(from)
|
||||
overviewData.prepareTreatmentsData(from)
|
||||
// prepareIobAutosensData(from)
|
||||
// preparePredictions(from)
|
||||
overviewBus.send(EventUpdateOverviewGraph(from))
|
||||
aapsLogger.debug(LTag.UI, "loadAll finished")
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package info.nightscout.androidaps.plugins.general.overview
|
||||
|
||||
import android.graphics.Color
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.R
|
||||
|
@ -97,7 +96,7 @@ class StatusLightHandler @Inject constructor(
|
|||
if (level > OmnipodConstants.MAX_RESERVOIR_READING) {
|
||||
@Suppress("SetTextI18n")
|
||||
view?.text = " 50+$units"
|
||||
view?.setTextColor(Color.WHITE)
|
||||
view?.setTextColor(rh.gac(view.context, R.attr.defaultTextColor))
|
||||
} else {
|
||||
handleLevel(view, criticalSetting, criticalDefaultValue, warnSetting, warnDefaultValue, level, units)
|
||||
}
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.general.overview.events
|
||||
|
||||
import info.nightscout.androidaps.events.Event
|
||||
|
||||
class EventUpdateOverviewPumpStatus(val from: String) : Event()
|
|
@ -966,6 +966,7 @@ class SmsCommunicatorPlugin @Inject constructor(
|
|||
var keyTarget = 0
|
||||
var defaultTargetMMOL = 0.0
|
||||
var defaultTargetMGDL = 0.0
|
||||
var reason = TemporaryTarget.Reason.EATING_SOON
|
||||
when {
|
||||
isMeal -> {
|
||||
keyDuration = R.string.key_eatingsoon_duration
|
||||
|
@ -973,6 +974,7 @@ class SmsCommunicatorPlugin @Inject constructor(
|
|||
keyTarget = R.string.key_eatingsoon_target
|
||||
defaultTargetMMOL = Constants.defaultEatingSoonTTmmol
|
||||
defaultTargetMGDL = Constants.defaultEatingSoonTTmgdl
|
||||
reason = TemporaryTarget.Reason.EATING_SOON
|
||||
}
|
||||
|
||||
isActivity -> {
|
||||
|
@ -981,6 +983,7 @@ class SmsCommunicatorPlugin @Inject constructor(
|
|||
keyTarget = R.string.key_activity_target
|
||||
defaultTargetMMOL = Constants.defaultActivityTTmmol
|
||||
defaultTargetMGDL = Constants.defaultActivityTTmgdl
|
||||
reason = TemporaryTarget.Reason.ACTIVITY
|
||||
}
|
||||
|
||||
isHypo -> {
|
||||
|
@ -989,6 +992,7 @@ class SmsCommunicatorPlugin @Inject constructor(
|
|||
keyTarget = R.string.key_hypo_target
|
||||
defaultTargetMMOL = Constants.defaultHypoTTmmol
|
||||
defaultTargetMGDL = Constants.defaultHypoTTmgdl
|
||||
reason = TemporaryTarget.Reason.HYPOGLYCEMIA
|
||||
}
|
||||
}
|
||||
var ttDuration = sp.getInt(keyDuration, defaultTargetDuration)
|
||||
|
@ -999,7 +1003,7 @@ class SmsCommunicatorPlugin @Inject constructor(
|
|||
disposable += repository.runTransactionForResult(InsertAndCancelCurrentTemporaryTargetTransaction(
|
||||
timestamp = dateUtil.now(),
|
||||
duration = TimeUnit.MINUTES.toMillis(ttDuration.toLong()),
|
||||
reason = TemporaryTarget.Reason.EATING_SOON,
|
||||
reason = reason,
|
||||
lowTarget = Profile.toMgdl(tt, profileFunction.getUnits()),
|
||||
highTarget = Profile.toMgdl(tt, profileFunction.getUnits())
|
||||
)).subscribe({ result ->
|
||||
|
|
|
@ -12,6 +12,8 @@ import info.nightscout.androidaps.database.entities.*
|
|||
import info.nightscout.androidaps.database.interfaces.end
|
||||
import info.nightscout.androidaps.database.transactions.CancelCurrentTemporaryTargetIfAnyTransaction
|
||||
import info.nightscout.androidaps.database.transactions.InsertAndCancelCurrentTemporaryTargetTransaction
|
||||
import info.nightscout.androidaps.dialogs.CarbsDialog
|
||||
import info.nightscout.androidaps.dialogs.InsulinDialog
|
||||
import info.nightscout.androidaps.events.EventMobileToWear
|
||||
import info.nightscout.androidaps.extensions.convertedToAbsolute
|
||||
import info.nightscout.androidaps.extensions.toStringShort
|
||||
|
@ -27,6 +29,7 @@ import info.nightscout.androidaps.plugins.general.overview.graphExtensions.Gluco
|
|||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider
|
||||
import info.nightscout.androidaps.queue.Callback
|
||||
import info.nightscout.androidaps.receivers.ReceiverStatusStore
|
||||
import info.nightscout.androidaps.services.AlarmSoundServiceHelper
|
||||
import info.nightscout.androidaps.utils.*
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.androidaps.utils.wizard.BolusWizard
|
||||
|
@ -73,7 +76,8 @@ class DataHandlerMobile @Inject constructor(
|
|||
private val uel: UserEntryLogger,
|
||||
private val activePlugin: ActivePlugin,
|
||||
private val commandQueue: CommandQueue,
|
||||
private val fabricPrivacy: FabricPrivacy
|
||||
private val fabricPrivacy: FabricPrivacy,
|
||||
private val alarmSoundServiceHelper: AlarmSoundServiceHelper
|
||||
) {
|
||||
|
||||
private val disposable = CompositeDisposable()
|
||||
|
@ -260,6 +264,20 @@ class DataHandlerMobile @Inject constructor(
|
|||
}
|
||||
lastBolusWizard = null
|
||||
}, fabricPrivacy::logException)
|
||||
disposable += rxBus
|
||||
.toObservable(EventData.SnoozeAlert::class.java)
|
||||
.observeOn(aapsSchedulers.io)
|
||||
.subscribe({
|
||||
aapsLogger.debug(LTag.WEAR, "SnoozeAlert received $it from ${it.sourceNodeId}")
|
||||
alarmSoundServiceHelper.stopService(context, "Muted from wear")
|
||||
}, fabricPrivacy::logException)
|
||||
disposable += rxBus
|
||||
.toObservable(EventData.WearException::class.java)
|
||||
.observeOn(aapsSchedulers.io)
|
||||
.subscribe({
|
||||
aapsLogger.debug(LTag.WEAR, "WearException received $it from ${it.sourceNodeId}")
|
||||
fabricPrivacy.logWearException(it)
|
||||
}, fabricPrivacy::logException)
|
||||
}
|
||||
|
||||
private fun handleTddStatus() {
|
||||
|
@ -463,7 +481,7 @@ class DataHandlerMobile @Inject constructor(
|
|||
}
|
||||
|
||||
private fun handleECarbsPreCheck(command: EventData.ActionECarbsPreCheck) {
|
||||
val startTimeStamp = System.currentTimeMillis() + T.hours(command.carbsTimeShift.toLong()).msecs()
|
||||
val startTimeStamp = System.currentTimeMillis() + T.mins(command.carbsTimeShift.toLong()).msecs()
|
||||
val carbsAfterConstraints = constraintChecker.applyCarbsConstraints(Constraint(command.carbs)).value()
|
||||
var message = rh.gs(R.string.carbs) + ": " + carbsAfterConstraints + "g" +
|
||||
"\n" + rh.gs(R.string.time) + ": " + dateUtil.timeString(startTimeStamp) +
|
||||
|
@ -685,7 +703,11 @@ class DataHandlerMobile @Inject constructor(
|
|||
unitsMgdl = profileFunction.getUnits() == GlucoseUnit.MGDL,
|
||||
bolusPercentage = sp.getInt(R.string.key_boluswizard_percentage, 100),
|
||||
maxCarbs = sp.getInt(R.string.key_treatmentssafety_maxcarbs, 48),
|
||||
maxBolus = sp.getDouble(R.string.key_treatmentssafety_maxbolus, 3.0)
|
||||
maxBolus = sp.getDouble(R.string.key_treatmentssafety_maxbolus, 3.0),
|
||||
insulinButtonIncrement1 = sp.getDouble(R.string.key_insulin_button_increment_1, InsulinDialog.PLUS1_DEFAULT),
|
||||
insulinButtonIncrement2 = sp.getDouble(R.string.key_insulin_button_increment_2, InsulinDialog.PLUS2_DEFAULT),
|
||||
carbsButtonIncrement1 = sp.getInt(R.string.key_carbs_button_increment_1, CarbsDialog.FAV1_DEFAULT),
|
||||
carbsButtonIncrement2 = sp.getInt(R.string.key_carbs_button_increment_2, CarbsDialog.FAV2_DEFAULT)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -8,18 +8,13 @@ import dagger.android.AndroidInjection
|
|||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.database.AppRepository
|
||||
import info.nightscout.androidaps.events.EventMobileToWear
|
||||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||
import info.nightscout.androidaps.interfaces.Config
|
||||
import info.nightscout.androidaps.interfaces.IobCobCalculator
|
||||
import info.nightscout.androidaps.interfaces.Loop
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.data.NSDeviceStatus
|
||||
import info.nightscout.androidaps.plugins.general.wear.WearPlugin
|
||||
import info.nightscout.androidaps.plugins.general.wear.events.EventWearUpdateGui
|
||||
import info.nightscout.androidaps.receivers.ReceiverStatusStore
|
||||
import info.nightscout.androidaps.utils.DefaultValueHelper
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.androidaps.utils.wizard.QuickWizard
|
||||
|
@ -116,7 +111,7 @@ class DataLayerListenerServiceMobile : WearableListenerService() {
|
|||
if (wearPlugin.isEnabled()) {
|
||||
when (messageEvent.path) {
|
||||
rxPath -> {
|
||||
aapsLogger.debug(LTag.WEAR, "onMessageReceived: ${String(messageEvent.data)}")
|
||||
aapsLogger.debug(LTag.WEAR, "onMessageReceived rxPath: ${String(messageEvent.data)}")
|
||||
val command = EventData.deserialize(String(messageEvent.data))
|
||||
rxBus.send(command.also { it.sourceNodeId = messageEvent.sourceNodeId })
|
||||
}
|
||||
|
@ -134,7 +129,7 @@ class DataLayerListenerServiceMobile : WearableListenerService() {
|
|||
aapsLogger.debug(LTag.WEAR, "Nodes: ${capabilityInfo.nodes.joinToString(", ") { it.displayName + "(" + it.id + ")" }}")
|
||||
val bestNode = pickBestNodeId(capabilityInfo.nodes)
|
||||
transcriptionNodeId = bestNode?.id
|
||||
wearPlugin.connectedDevice = bestNode?.displayName ?: "---"
|
||||
wearPlugin.connectedDevice = bestNode?.displayName ?: rh.gs(R.string.no_watch_connected)
|
||||
rxBus.send(EventWearUpdateGui())
|
||||
aapsLogger.debug(LTag.WEAR, "Selected node: ${bestNode?.displayName} $transcriptionNodeId")
|
||||
rxBus.send(EventMobileToWear(EventData.ActionPing(System.currentTimeMillis())))
|
||||
|
|
|
@ -8,12 +8,11 @@ import info.nightscout.androidaps.R
|
|||
import info.nightscout.androidaps.events.*
|
||||
import info.nightscout.androidaps.extensions.toStringShort
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.utils.DecimalFormatter
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||
|
@ -123,8 +122,8 @@ class StatusLinePlugin @Inject constructor(
|
|||
status += activeTemp.toStringShort() + " "
|
||||
}
|
||||
//IOB
|
||||
val bolusIob = iobCobCalculator.calculateIobFromBolus().round(fabricPrivacy)
|
||||
val basalIob = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round(fabricPrivacy)
|
||||
val bolusIob = iobCobCalculator.calculateIobFromBolus().round()
|
||||
val basalIob = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round()
|
||||
status += DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U"
|
||||
if (sp.getBoolean(R.string.key_xdripstatus_detailediob, true)) {
|
||||
status += ("("
|
||||
|
|
|
@ -8,6 +8,7 @@ import info.nightscout.androidaps.interfaces.ProfileFunction
|
|||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import org.json.JSONObject
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
@ -19,8 +20,9 @@ class InsulinLyumjevPlugin @Inject constructor(
|
|||
profileFunction: ProfileFunction,
|
||||
rxBus: RxBus,
|
||||
aapsLogger: AAPSLogger,
|
||||
config: Config
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config) {
|
||||
config: Config,
|
||||
hardLimits: HardLimits
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits) {
|
||||
|
||||
override val id get(): Insulin.InsulinType = Insulin.InsulinType.OREF_LYUMJEV
|
||||
override val friendlyName get(): String = rh.gs(R.string.lyumjev)
|
||||
|
|
|
@ -6,12 +6,12 @@ import info.nightscout.androidaps.data.Iob
|
|||
import info.nightscout.androidaps.database.embedments.InsulinConfiguration
|
||||
import info.nightscout.androidaps.database.entities.Bolus
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import kotlin.math.exp
|
||||
import kotlin.math.pow
|
||||
|
||||
|
@ -27,7 +27,8 @@ abstract class InsulinOrefBasePlugin(
|
|||
val profileFunction: ProfileFunction,
|
||||
val rxBus: RxBus,
|
||||
aapsLogger: AAPSLogger,
|
||||
config: Config
|
||||
config: Config,
|
||||
val hardLimits: HardLimits
|
||||
) : PluginBase(
|
||||
PluginDescription()
|
||||
.mainType(PluginType.INSULIN)
|
||||
|
@ -43,18 +44,18 @@ abstract class InsulinOrefBasePlugin(
|
|||
override val dia
|
||||
get(): Double {
|
||||
val dia = userDefinedDia
|
||||
return if (dia >= MIN_DIA) {
|
||||
return if (dia >= hardLimits.minDia()) {
|
||||
dia
|
||||
} else {
|
||||
sendShortDiaNotification(dia)
|
||||
MIN_DIA
|
||||
hardLimits.minDia()
|
||||
}
|
||||
}
|
||||
|
||||
open fun sendShortDiaNotification(dia: Double) {
|
||||
if (System.currentTimeMillis() - lastWarned > 60 * 1000) {
|
||||
lastWarned = System.currentTimeMillis()
|
||||
val notification = Notification(Notification.SHORT_DIA, String.format(notificationPattern, dia, MIN_DIA), Notification.URGENT)
|
||||
val notification = Notification(Notification.SHORT_DIA, String.format(notificationPattern, dia, hardLimits.minDia()), Notification.URGENT)
|
||||
rxBus.send(EventNewNotification(notification))
|
||||
}
|
||||
}
|
||||
|
@ -65,12 +66,13 @@ abstract class InsulinOrefBasePlugin(
|
|||
open val userDefinedDia: Double
|
||||
get() {
|
||||
val profile = profileFunction.getProfile()
|
||||
return profile?.dia ?: MIN_DIA
|
||||
return profile?.dia ?: hardLimits.minDia()
|
||||
}
|
||||
|
||||
override fun iobCalcForTreatment(bolus: Bolus, time: Long, dia: Double): Iob {
|
||||
assert(dia != 0.0)
|
||||
assert(peak != 0)
|
||||
val result = Iob()
|
||||
val peak = peak
|
||||
if (bolus.amount != 0.0) {
|
||||
val bolusTime = bolus.timestamp
|
||||
val t = (time - bolusTime) / 1000.0 / 60.0
|
||||
|
@ -80,9 +82,9 @@ abstract class InsulinOrefBasePlugin(
|
|||
if (t < td) {
|
||||
val tau = tp * (1 - tp / td) / (1 - 2 * tp / td)
|
||||
val a = 2 * tau / td
|
||||
val S = 1 / (1 - a + (1 + a) * exp(-td / tau))
|
||||
result.activityContrib = bolus.amount * (S / tau.pow(2.0)) * t * (1 - t / td) * exp(-t / tau)
|
||||
result.iobContrib = bolus.amount * (1 - S * (1 - a) * ((t.pow(2.0) / (tau * td * (1 - a)) - t / tau - 1) * Math.exp(-t / tau) + 1))
|
||||
val s = 1 / (1 - a + (1 + a) * exp(-td / tau))
|
||||
result.activityContrib = bolus.amount * (s / tau.pow(2.0)) * t * (1 - t / td) * exp(-t / tau)
|
||||
result.iobContrib = bolus.amount * (1 - s * (1 - a) * ((t.pow(2.0) / (tau * td * (1 - a)) - t / tau - 1) * exp(-t / tau) + 1))
|
||||
}
|
||||
}
|
||||
return result
|
||||
|
@ -95,17 +97,12 @@ abstract class InsulinOrefBasePlugin(
|
|||
get(): String {
|
||||
var comment = commentStandardText()
|
||||
val userDia = userDefinedDia
|
||||
if (userDia < MIN_DIA) {
|
||||
comment += "\n" + rh.gs(R.string.dia_too_short, userDia, MIN_DIA)
|
||||
if (userDia < hardLimits.minDia()) {
|
||||
comment += "\n" + rh.gs(R.string.dia_too_short, userDia, hardLimits.minDia())
|
||||
}
|
||||
return comment
|
||||
}
|
||||
|
||||
override abstract val peak: Int
|
||||
abstract override val peak: Int
|
||||
abstract fun commentStandardText(): String
|
||||
|
||||
companion object {
|
||||
|
||||
const val MIN_DIA = 5.0
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ import info.nightscout.androidaps.interfaces.ProfileFunction
|
|||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import org.json.JSONObject
|
||||
import javax.inject.Inject
|
||||
|
@ -26,8 +27,9 @@ class InsulinOrefFreePeakPlugin @Inject constructor(
|
|||
profileFunction: ProfileFunction,
|
||||
rxBus: RxBus,
|
||||
aapsLogger: AAPSLogger,
|
||||
config: Config
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config) {
|
||||
config: Config,
|
||||
hardLimits: HardLimits
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits) {
|
||||
|
||||
override val id get(): Insulin.InsulinType = Insulin.InsulinType.OREF_FREE_PEAK
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ import info.nightscout.androidaps.interfaces.ProfileFunction
|
|||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import org.json.JSONObject
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
@ -22,8 +23,9 @@ class InsulinOrefRapidActingPlugin @Inject constructor(
|
|||
profileFunction: ProfileFunction,
|
||||
rxBus: RxBus,
|
||||
aapsLogger: AAPSLogger,
|
||||
config: Config
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config) {
|
||||
config: Config,
|
||||
hardLimits: HardLimits
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits) {
|
||||
|
||||
override val id get(): Insulin.InsulinType = Insulin.InsulinType.OREF_RAPID_ACTING
|
||||
override val friendlyName get(): String = rh.gs(R.string.rapid_acting_oref)
|
||||
|
|
|
@ -8,6 +8,7 @@ import info.nightscout.androidaps.interfaces.ProfileFunction
|
|||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import org.json.JSONObject
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
@ -22,8 +23,9 @@ class InsulinOrefUltraRapidActingPlugin @Inject constructor(
|
|||
profileFunction: ProfileFunction,
|
||||
rxBus: RxBus,
|
||||
aapsLogger: AAPSLogger,
|
||||
config: Config
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config) {
|
||||
config: Config,
|
||||
hardLimits: HardLimits
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits) {
|
||||
|
||||
override val id get(): Insulin.InsulinType = Insulin.InsulinType.OREF_ULTRA_RAPID_ACTING
|
||||
override val friendlyName get(): String = rh.gs(R.string.ultrarapid_oref)
|
||||
|
|
|
@ -481,6 +481,7 @@ class IobCobCalculatorPlugin @Inject constructor(
|
|||
val profile = profileFunction.getProfile() ?: return total
|
||||
val dia = profile.dia
|
||||
val divisor = sp.getDouble(R.string.key_openapsama_bolussnooze_dia_divisor, 2.0)
|
||||
assert(divisor > 0)
|
||||
|
||||
val boluses = repository.getBolusesDataFromTime(toTime - range(), true).blockingGet()
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import info.nightscout.androidaps.extensions.toVisibility
|
|||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||
import info.nightscout.androidaps.interfaces.GlucoseUnit
|
||||
import info.nightscout.androidaps.interfaces.Profile
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.logging.UserEntryLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
|
||||
|
@ -52,6 +53,7 @@ class LocalProfileFragment : DaggerFragment() {
|
|||
@Inject lateinit var activePlugin: ActivePlugin
|
||||
@Inject lateinit var fabricPrivacy: FabricPrivacy
|
||||
@Inject lateinit var localProfilePlugin: LocalProfilePlugin
|
||||
@Inject lateinit var profileFunction: ProfileFunction
|
||||
@Inject lateinit var hardLimits: HardLimits
|
||||
@Inject lateinit var protectionCheck: ProtectionCheck
|
||||
@Inject lateinit var dateUtil: DateUtil
|
||||
|
@ -117,6 +119,11 @@ class LocalProfileFragment : DaggerFragment() {
|
|||
})
|
||||
binding.diaLabel.labelFor = binding.dia.editTextId
|
||||
binding.unlock.setOnClickListener { queryProtection() }
|
||||
|
||||
val profiles = localProfilePlugin.profile?.getProfileList() ?: ArrayList()
|
||||
val activeProfile = profileFunction.getProfileName()
|
||||
val profileIndex = profiles.indexOf(activeProfile)
|
||||
localProfilePlugin.currentProfileIndex = if (profileIndex >= 0) profileIndex else 0
|
||||
}
|
||||
|
||||
fun build() {
|
||||
|
@ -394,6 +401,7 @@ class LocalProfileFragment : DaggerFragment() {
|
|||
}
|
||||
|
||||
private fun updateProtectedUi() {
|
||||
_binding ?: return
|
||||
val isLocked = protectionCheck.isLocked(ProtectionCheck.Protection.PREFERENCES)
|
||||
binding.mainLayout.visibility = isLocked.not().toVisibility()
|
||||
binding.unlock.visibility = isLocked.toVisibility()
|
||||
|
|
|
@ -461,6 +461,7 @@ class LocalProfilePlugin @Inject constructor(
|
|||
@Inject lateinit var sp: SP
|
||||
@Inject lateinit var config: Config
|
||||
@Inject lateinit var localProfilePlugin: LocalProfilePlugin
|
||||
@Inject lateinit var xDripBroadcast: XDripBroadcast
|
||||
|
||||
init {
|
||||
(context.applicationContext as HasAndroidInjector).androidInjector().inject(this)
|
||||
|
@ -469,6 +470,7 @@ class LocalProfilePlugin @Inject constructor(
|
|||
override fun doWork(): Result {
|
||||
val profileJson = dataWorker.pickupJSONObject(inputData.getLong(DataWorker.STORE_KEY, -1))
|
||||
?: return Result.failure(workDataOf("Error" to "missing input data"))
|
||||
xDripBroadcast.sendProfile(profileJson)
|
||||
if (sp.getBoolean(R.string.key_ns_receive_profile_store, true) || config.NSCLIENT) {
|
||||
val store = ProfileStore(injector, profileJson, dateUtil)
|
||||
val createdAt = store.getStartDate()
|
||||
|
|
|
@ -115,11 +115,11 @@ class NSClientSourcePlugin @Inject constructor(
|
|||
@Suppress("SpellCheckingInspection")
|
||||
override fun doWork(): Result {
|
||||
var ret = Result.success()
|
||||
|
||||
if (!nsClientSourcePlugin.isEnabled() && !sp.getBoolean(R.string.key_ns_receive_cgm, false)) return Result.success(workDataOf("Result" to "Sync not enabled"))
|
||||
|
||||
val sgvs = dataWorker.pickupJSONArray(inputData.getLong(DataWorker.STORE_KEY, -1))
|
||||
?: return Result.failure(workDataOf("Error" to "missing input data"))
|
||||
xDripBroadcast.sendSgvs(sgvs)
|
||||
if (!nsClientSourcePlugin.isEnabled() && !sp.getBoolean(R.string.key_ns_receive_cgm, false))
|
||||
return Result.success(workDataOf("Result" to "Sync not enabled"))
|
||||
|
||||
try {
|
||||
var latestDateInReceivedData: Long = 0
|
||||
|
|
|
@ -8,15 +8,13 @@ import info.nightscout.androidaps.R
|
|||
import info.nightscout.androidaps.database.AppRepository
|
||||
import info.nightscout.androidaps.database.entities.GlucoseValue
|
||||
import info.nightscout.androidaps.database.transactions.CgmSourceTransaction
|
||||
import info.nightscout.androidaps.interfaces.BgSource
|
||||
import info.nightscout.androidaps.interfaces.PluginBase
|
||||
import info.nightscout.androidaps.interfaces.PluginDescription
|
||||
import info.nightscout.androidaps.interfaces.PluginType
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.androidaps.utils.XDripBroadcast
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
|
||||
import info.nightscout.androidaps.utils.extensions.isRunningTest
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||
|
@ -33,7 +31,9 @@ class RandomBgPlugin @Inject constructor(
|
|||
aapsLogger: AAPSLogger,
|
||||
private val sp: SP,
|
||||
private val repository: AppRepository,
|
||||
private val xDripBroadcast: XDripBroadcast
|
||||
private val xDripBroadcast: XDripBroadcast,
|
||||
private val virtualPumpPlugin: VirtualPumpPlugin,
|
||||
private val buildHelper: BuildHelper
|
||||
) : PluginBase(
|
||||
PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
|
@ -89,8 +89,8 @@ class RandomBgPlugin @Inject constructor(
|
|||
}
|
||||
|
||||
override fun specialEnableCondition(): Boolean {
|
||||
// return isRunningTest() || virtualPumpPlugin.isEnabled() && buildHelper.isEngineeringMode()
|
||||
return true
|
||||
return isRunningTest() || virtualPumpPlugin.isEnabled() && buildHelper.isEngineeringMode()
|
||||
// return true
|
||||
}
|
||||
|
||||
private fun handleNewData() {
|
||||
|
|
|
@ -46,6 +46,7 @@ import io.reactivex.rxjava3.disposables.CompositeDisposable
|
|||
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||
import io.reactivex.rxjava3.kotlin.subscribeBy
|
||||
import java.util.*
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
|
@ -81,6 +82,7 @@ class CommandQueueImplementation @Inject constructor(
|
|||
disposable += rxBus
|
||||
.toObservable(EventProfileSwitchChanged::class.java)
|
||||
.observeOn(aapsSchedulers.io)
|
||||
.throttleLatest(3L, TimeUnit.SECONDS)
|
||||
.subscribe({
|
||||
if (config.NSCLIENT) { // Effective profileswitch should be synced over NS, do not create EffectiveProfileSwitch here
|
||||
return@subscribe
|
||||
|
@ -321,13 +323,13 @@ class CommandQueueImplementation @Inject constructor(
|
|||
}
|
||||
|
||||
@Synchronized
|
||||
override fun cancelAllBoluses() {
|
||||
override fun cancelAllBoluses(id: Long) {
|
||||
if (!isRunning(CommandType.BOLUS)) {
|
||||
rxBus.send(EventDismissBolusProgressIfRunning(PumpEnactResult(injector).success(true).enacted(false), null))
|
||||
rxBus.send(EventDismissBolusProgressIfRunning(PumpEnactResult(injector).success(true).enacted(false), id))
|
||||
}
|
||||
removeAll(CommandType.BOLUS)
|
||||
removeAll(CommandType.SMB_BOLUS)
|
||||
Thread { activePlugin.activePump.stopBolusDelivering() }.run()
|
||||
Thread { activePlugin.activePump.stopBolusDelivering() }.start()
|
||||
}
|
||||
|
||||
// returns true if command is queued
|
||||
|
@ -598,12 +600,12 @@ class CommandQueueImplementation @Inject constructor(
|
|||
if (detailedBolusInfo.context != null) {
|
||||
val bolusProgressDialog = BolusProgressDialog()
|
||||
bolusProgressDialog.setInsulin(detailedBolusInfo.insulin)
|
||||
bolusProgressDialog.setTimestamp(detailedBolusInfo.timestamp)
|
||||
bolusProgressDialog.setId(detailedBolusInfo.id)
|
||||
bolusProgressDialog.show((detailedBolusInfo.context as AppCompatActivity).supportFragmentManager, "BolusProgress")
|
||||
} else {
|
||||
val i = Intent()
|
||||
i.putExtra("insulin", detailedBolusInfo.insulin)
|
||||
i.putExtra("timestamp", detailedBolusInfo.timestamp)
|
||||
i.putExtra("id", detailedBolusInfo.id)
|
||||
i.setClass(context, BolusProgressHelperActivity::class.java)
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context.startActivity(i)
|
||||
|
|
|
@ -26,7 +26,7 @@ class CommandBolus(
|
|||
val r = activePlugin.activePump.deliverTreatment(detailedBolusInfo)
|
||||
if (r.success) carbsRunnable.run()
|
||||
BolusProgressDialog.bolusEnded = true
|
||||
rxBus.send(EventDismissBolusProgressIfRunning(r, detailedBolusInfo.timestamp))
|
||||
rxBus.send(EventDismissBolusProgressIfRunning(r, detailedBolusInfo.id))
|
||||
aapsLogger.debug(LTag.PUMPQUEUE, "Result success: ${r.success} enacted: ${r.enacted}")
|
||||
callback?.result(r)?.run()
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@ package info.nightscout.androidaps.utils
|
|||
|
||||
import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
import android.annotation.TargetApi
|
||||
import android.bluetooth.BluetoothAdapter
|
||||
import android.content.ActivityNotFoundException
|
||||
import android.content.Context
|
||||
|
@ -95,13 +94,14 @@ class AndroidPermission @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
@Synchronized
|
||||
fun notifyForBtConnectPermission(activity: FragmentActivity) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
// Manifest.permission.BLUETOOTH_CONNECT
|
||||
if (permissionNotGranted(activity, "android.permission.BLUETOOTH_CONNECT") || permissionNotGranted(activity, "android.permission.BLUETOOTH_SCAN")) {
|
||||
if (permissionNotGranted(activity, Manifest.permission.BLUETOOTH_CONNECT) || permissionNotGranted(activity, Manifest.permission.BLUETOOTH_SCAN)) {
|
||||
val notification = NotificationWithAction(injector, Notification.PERMISSION_BT, rh.gs(R.string.needconnectpermission), Notification.URGENT)
|
||||
notification.action(R.string.request) { askForPermission(activity, arrayOf("android.permission.BLUETOOTH_SCAN", "android.permission.BLUETOOTH_CONNECT")) }
|
||||
notification.action(R.string.request) { askForPermission(activity, arrayOf(Manifest.permission.BLUETOOTH_SCAN, Manifest.permission.BLUETOOTH_CONNECT)) }
|
||||
rxBus.send(EventNewNotification(notification))
|
||||
} else {
|
||||
activity.startActivity(Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE))
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package info.nightscout.androidaps.utils.stats
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.graphics.Typeface
|
||||
import android.util.LongSparseArray
|
||||
|
@ -99,41 +98,19 @@ class TddCalculator @Inject constructor(
|
|||
return result
|
||||
}
|
||||
|
||||
fun calculateDaily(): TotalDailyDose {
|
||||
val startTime = MidnightTime.calc(dateUtil.now())
|
||||
fun calculateToday(): TotalDailyDose {
|
||||
var startTime = MidnightTime.calc(dateUtil.now())
|
||||
val endTime = dateUtil.now()
|
||||
val tdd = TotalDailyDose(timestamp = startTime)
|
||||
//val result = TotalDailyDose()
|
||||
repository.getBolusesDataFromTimeToTime(startTime, endTime, true).blockingGet()
|
||||
.filter { it.type != Bolus.Type.PRIMING }
|
||||
.forEach { t ->
|
||||
tdd.bolusAmount += t.amount
|
||||
}
|
||||
repository.getCarbsDataFromTimeToTimeExpanded(startTime, endTime, true).blockingGet().forEach { t ->
|
||||
tdd.carbs += t.amount
|
||||
}
|
||||
val calculationStep = T.mins(5).msecs()
|
||||
for (t in startTime until endTime step calculationStep) {
|
||||
val tbr = iobCobCalculator.getTempBasalIncludingConvertedExtended(t)
|
||||
val profile = profileFunction.getProfile(t) ?: continue
|
||||
val absoluteRate = tbr?.convertedToAbsolute(t, profile) ?: profile.getBasal(t)
|
||||
tdd.basalAmount += absoluteRate / 60.0 * 5.0
|
||||
|
||||
if (!activePlugin.activePump.isFakingTempsByExtendedBoluses) {
|
||||
// they are not included in TBRs
|
||||
val eb = iobCobCalculator.getExtendedBolus(t)
|
||||
val absoluteEbRate = eb?.rate ?: 0.0
|
||||
tdd.bolusAmount += absoluteEbRate / 60.0 * 5.0
|
||||
}
|
||||
}
|
||||
tdd.totalAmount = tdd.bolusAmount + tdd.basalAmount
|
||||
aapsLogger.debug(LTag.CORE, tdd.toString())
|
||||
return tdd
|
||||
return calculate(startTime, endTime)
|
||||
}
|
||||
|
||||
fun calculate24Daily(): TotalDailyDose {
|
||||
val startTime = dateUtil.now() - T.hours(hour = 24).msecs()
|
||||
val endTime = dateUtil.now()
|
||||
fun calculateDaily(startHours: Long, endHours: Long): TotalDailyDose {
|
||||
val startTime = dateUtil.now() + T.hours(hour = startHours).msecs()
|
||||
val endTime = dateUtil.now() + T.hours(hour = endHours).msecs()
|
||||
return calculate(startTime, endTime)
|
||||
}
|
||||
|
||||
fun calculate(startTime: Long, endTime: Long): TotalDailyDose {
|
||||
val tdd = TotalDailyDose(timestamp = startTime)
|
||||
repository.getBolusesDataFromTimeToTime(startTime, endTime, true).blockingGet()
|
||||
.filter { it.type != Bolus.Type.PRIMING }
|
||||
|
@ -179,10 +156,10 @@ class TddCalculator @Inject constructor(
|
|||
return totalTdd
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
fun stats(context: Context): TableLayout {
|
||||
val tdds = calculate(7)
|
||||
val averageTdd = averageTDD(tdds)
|
||||
val todayTdd = calculateToday()
|
||||
val lp = TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT)
|
||||
return TableLayout(context).also { layout ->
|
||||
layout.layoutParams = TableLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f)
|
||||
|
@ -204,6 +181,13 @@ class TddCalculator @Inject constructor(
|
|||
})
|
||||
layout.addView(averageTdd.toTableRow(context, rh, tdds.size(), includeCarbs = true))
|
||||
}
|
||||
layout.addView(TextView(context).apply {
|
||||
text = rh.gs(R.string.today)
|
||||
setTypeface(typeface, Typeface.BOLD)
|
||||
gravity = Gravity.CENTER_HORIZONTAL
|
||||
setTextAppearance(android.R.style.TextAppearance_Material_Medium)
|
||||
})
|
||||
layout.addView(todayTdd.toTableRow(context, rh, dateUtil, includeCarbs = true))
|
||||
}
|
||||
}
|
||||
}
|
|
@ -182,7 +182,7 @@ public class TimeListEdit {
|
|||
numberPickers1[position].setTextWatcher(new TextWatcher() {
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
Double value1 = SafeParse.INSTANCE.stringToDouble(numberPickers1[position].getText());
|
||||
Double value1 = SafeParse.INSTANCE.stringToDouble(numberPickers1[position].getText(), 0.0);
|
||||
Double value2 = value2(position);
|
||||
if (data2 != null && value1 > value2) {
|
||||
value2 = value1;
|
||||
|
@ -209,7 +209,7 @@ public class TimeListEdit {
|
|||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
Double value1 = value1(position);
|
||||
Double value2 = SafeParse.INSTANCE.stringToDouble(numberPickers2[position].getText());
|
||||
Double value2 = SafeParse.INSTANCE.stringToDouble(numberPickers2[position].getText(), 0.0);
|
||||
if (data2 != null && value2 < value1) {
|
||||
value1 = value2;
|
||||
numberPickers1[position].setValue(value1);
|
||||
|
|
|
@ -443,12 +443,7 @@ class BolusWizard @Inject constructor(
|
|||
commandQueue.tempBasalPercent(0, 120, true, profile, PumpSync.TemporaryBasalType.NORMAL, object : Callback() {
|
||||
override fun run() {
|
||||
if (!result.success) {
|
||||
val i = Intent(ctx, ErrorHelperActivity::class.java)
|
||||
i.putExtra(ErrorHelperActivity.SOUND_ID, R.raw.boluserror)
|
||||
i.putExtra(ErrorHelperActivity.STATUS, result.comment)
|
||||
i.putExtra(ErrorHelperActivity.TITLE, rh.gs(R.string.tempbasaldeliveryerror))
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
ctx.startActivity(i)
|
||||
ErrorHelperActivity.runAlarm(ctx, result.comment, rh.gs(R.string.tempbasaldeliveryerror), R.raw.boluserror)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -8,6 +8,8 @@ import android.content.Context
|
|||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.graphics.Paint
|
||||
import android.os.Handler
|
||||
import android.os.HandlerThread
|
||||
import android.view.View
|
||||
import android.widget.RemoteViews
|
||||
import dagger.android.HasAndroidInjector
|
||||
|
@ -26,7 +28,6 @@ import info.nightscout.androidaps.plugins.general.overview.OverviewData
|
|||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.utils.TrendCalculator
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
|
@ -53,6 +54,7 @@ class Widget : AppWidgetProvider() {
|
|||
@Inject lateinit var sp: SP
|
||||
@Inject lateinit var constraintChecker: ConstraintChecker
|
||||
|
||||
private var handler = Handler(HandlerThread(this::class.simpleName + "Handler").also { it.start() }.looper)
|
||||
private val intentAction = "OpenApp"
|
||||
|
||||
override fun onReceive(context: Context, intent: Intent?) {
|
||||
|
@ -88,6 +90,7 @@ class Widget : AppWidgetProvider() {
|
|||
views.setOnClickPendingIntent(R.id.widget_layout, pendingIntent)
|
||||
views.setInt(R.id.widget_layout, "setBackgroundColor", Color.argb(alpha, 0, 0, 0))
|
||||
|
||||
handler.post {
|
||||
updateBg(views)
|
||||
updateTemporaryBasal(views)
|
||||
updateExtendedBolus(views)
|
||||
|
@ -95,10 +98,10 @@ class Widget : AppWidgetProvider() {
|
|||
updateTemporaryTarget(views)
|
||||
updateProfile(views)
|
||||
updateSensitivity(views)
|
||||
|
||||
// Instruct the widget manager to update the widget
|
||||
appWidgetManager.updateAppWidget(appWidgetId, views)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateBg(views: RemoteViews) {
|
||||
val units = profileFunction.getUnits()
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:autoMirrored="true"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
|
|
|
@ -5,28 +5,6 @@
|
|||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/filter"
|
||||
app:endIconMode="clear_text">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/pref_filter"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_weight="1"
|
||||
android:autofillHints="@string/filter"
|
||||
android:gravity="start"
|
||||
android:textStyle="bold"
|
||||
android:inputType="text"
|
||||
android:background="@color/transparent"/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
|
|
@ -12,52 +12,38 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/tab_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/defaultBackground"
|
||||
android:orientation="horizontal"
|
||||
android:paddingBottom="10dp">
|
||||
android:layout_marginBottom="10dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/menu1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/profile1" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/menu2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/profile2" />
|
||||
|
||||
</LinearLayout>
|
||||
</com.google.android.material.tabs.TabLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/profile_type_title"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:hint="@string/profiletype">
|
||||
android:hint="@string/profiletype"
|
||||
android:paddingHorizontal="5dp">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
<com.google.android.material.textfield.MaterialAutoCompleteTextView
|
||||
android:id="@+id/profile_type"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="true"
|
||||
android:cursorVisible="false"
|
||||
android:focusable="false"
|
||||
android:focusableInTouchMode="false"
|
||||
android:importantForAutofill="no" />
|
||||
android:inputType="none" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
|
@ -206,21 +192,18 @@
|
|||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/selected_profile">
|
||||
android:hint="@string/selected_profile"
|
||||
android:paddingHorizontal="5dp">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
<com.google.android.material.textfield.MaterialAutoCompleteTextView
|
||||
android:id="@+id/available_profile_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:clickable="true"
|
||||
android:cursorVisible="false"
|
||||
android:focusable="false"
|
||||
android:focusableInTouchMode="false"
|
||||
android:importantForAutofill="no" />
|
||||
android:inputType="none" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
|
@ -233,21 +216,19 @@
|
|||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/careportal_profileswitch">
|
||||
android:hint="@string/careportal_profileswitch"
|
||||
android:paddingHorizontal="5dp">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
<com.google.android.material.textfield.MaterialAutoCompleteTextView
|
||||
android:id="@+id/profileswitch_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:clickable="true"
|
||||
android:cursorVisible="false"
|
||||
android:focusable="false"
|
||||
android:focusableInTouchMode="false"
|
||||
android:importantForAutofill="no" />
|
||||
|
||||
android:inputType="none" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginEnd="3dp"
|
||||
android:contentDescription="@string/chart_menu"
|
||||
android:paddingTop="5dp"
|
||||
app:srcCompat="@drawable/ic_arrow_drop_down_white_24dp" />
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
android:gravity="center_vertical|center_horizontal"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:text="---"
|
||||
android:text="@string/no_watch_connected"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
|
|
11
app/src/main/res/menu/menu_preferences.xml
Normal file
11
app/src/main/res/menu/menu_preferences.xml
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_search"
|
||||
android:title="@string/search"
|
||||
app:showAsAction="always"
|
||||
app:actionViewClass="androidx.appcompat.widget.SearchView" />
|
||||
|
||||
</menu>
|
|
@ -1,20 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_default"
|
||||
android:title="@string/motoldefaultprofile" />
|
||||
<item
|
||||
android:id="@+id/menu_default_dpv"
|
||||
android:title="@string/dpvdefaultprofile" />
|
||||
<item
|
||||
android:id="@+id/menu_current"
|
||||
android:title="@string/currentprofile" />
|
||||
<item
|
||||
android:id="@+id/menu_available"
|
||||
android:title="@string/availableprofile" />
|
||||
<item
|
||||
android:id="@+id/menu_profileswitch"
|
||||
android:title="@string/careportal_profileswitch" />
|
||||
|
||||
</menu>
|
|
@ -127,6 +127,7 @@
|
|||
<string name="end_user_license_agreement">Eindverbruiker Lisensie Ooreenkoms</string>
|
||||
<string name="end_user_license_agreement_text">MOET NIE GEBRUIK WORD OM MEDIESE BESLUITE TE MAAK NIE. DAAR IS GEEN WAARBORG DAT DIE PROGRAM, ONDERWORPE AAN TOEPASSELIKE WETTE EN WETGEWING. TENSY ANDERS GEMELD IN TEKS VOORSIEN DIE KOPIEREG-HOUERS EN / OF ANDER PARTYE DIE PROGRAM \"AS IS\" SONDER ËNIGE WAARBORG VAN ENIGE ORDE, UITDRUKKELIK OF IMPLISIET, INKLUSIEF, MAAR NIE BEPERK TOT DIE IMPLISIETE WAARBORG VAN TOEPAASBAARHEID OF NUT VIR EEN SPESIFIEKE DOEL. DIE TOTALE EN ALLE RISIKOVIR DIE KWALITEIT EN PRESTASIE VAN DIE PROGRAM RUS MET JOUSELF. VIR ENIGE PROGRAM DEFEKTIEWE OF FALINGS MOET JY PERSOONLIK DIE KOSTE EN REGSAANSPREEKLIKHEID DRA VAN ALLE NODIGE AKSIES, DIENS, REPARASIES OF KORREKSIES VIR USELF OF ENIGE DERDE PARTYE EN/OF AKSIES, DIENS, REPARASIES OF KORREKSIES WAT DEUR DIE PROGRAM GEDOEN WAS.</string>
|
||||
<string name="end_user_license_agreement_i_understand">EK VERSTAAN en STEM IN</string>
|
||||
<string name="save">Stoor</string>
|
||||
<string name="reloadprofile">Herlaai profiel</string>
|
||||
<string name="smscommunicator">SMS Communicator</string>
|
||||
<string name="smscommunicator_allowednumbers">Toegelate telefoon nommers</string>
|
||||
|
|
|
@ -879,5 +879,6 @@
|
|||
<string name="not_available_full">Недостъпно</string>
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="login">Вход</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Lliurar un bolus amb part de la insulina que falta utilitzant una jeringa/ploma o el menú d\'encebat.</string>
|
||||
<string name="wronginsulin_donothing">No fer res i permetre que AndroidAPS corregeixi els possibles valors alts de glucèmia que es produeixin.</string>
|
||||
<string name="iob_label">Insulina \"a bord\" (IOB)</string>
|
||||
<string name="iob_which">Marqueu totes les respostes correctes.</string>
|
||||
<string name="iob_value">El valor d\'IOB es veu afectat per les basals temporals lliurades.</string>
|
||||
<string name="iob_hightemp">Una basal temporal alta no serà lliurada si la glucèmia està per sota de l\'objectiu.</string>
|
||||
<string name="iob_posiob">Un valor d\'IOB positiu durant un període de temps important suggereix resistència a la insulina o àpats no anunciats.</string>
|
||||
|
|
|
@ -154,6 +154,7 @@
|
|||
<string name="end_user_license_agreement">Acord de llicència per a l\'usuari final</string>
|
||||
<string name="end_user_license_agreement_text">NO S\'HA D\'UTILITZAR PER A PRENDRE DECISIONS MÈDIQUES. EL PROGRAMA NO TÉ GARANTIA, EN LA MESURA QUE HO PERMET LA LLEI APLICABLE. EXCEPTE QUAN S\'INDIQUI EL CONTRARI PER ESCRIT, ELS PROPIETARIS DEL COPYRIGHT I/O ALTRES PARTS PROPORCIONEN EL PROGRAMA \"TAL QUAL\" SENSE CAP MENA DE GARANTIA, NI IMPLÍCITA NI EXPLÍCITA, INCLOENT, PERÒ SENSE ESTAR LIMITADES A, LES GARANTIES IMPLÍCITES DE COMERCIALITZACIÓ I ADEQUACIÓ A UN OBJECTIU PARTICULAR. US FEU RESPONSABLES TOTALMENT DELS RISCOS EN QUANT A LA QUALITAT I EL RENDIMENT DEL PROGRAMA. SI EL PROGRAMA FOS DEFECTUÓS, VOSALTRES ASSUMIU EL COST DE TOT SERVEI, REPARACIÓ O CORRECCIÓ.</string>
|
||||
<string name="end_user_license_agreement_i_understand">ENTENC I ACCEPTO</string>
|
||||
<string name="save">Desar</string>
|
||||
<string name="reloadprofile">Recarregar perfil</string>
|
||||
<string name="smscommunicator">Comunicador SMS</string>
|
||||
<string name="smscommunicator_allowednumbers">Nrs. de telèfon permesos</string>
|
||||
|
@ -314,5 +315,6 @@
|
|||
<!-- SMS Communicator & OTP Authenticator -->
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="login">Iniciar sessió</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -136,8 +136,20 @@
|
|||
<string name="wronginsulin_compare">Porovnat hodnoty v AndroidAPS s hodnotami v historii pumpy (pokud to pumpa podporuje).</string>
|
||||
<string name="wronginsulin_prime">Pošlete bolus na vypočtený „chybějící“ inzulín buď injekční stříkačkou nebo perem nebo pomocí plnění na pumpě.</string>
|
||||
<string name="wronginsulin_donothing">Neudělejte nic a dovolte AndroidAPS opravit jakoukoliv výslednou vysokou hladinu glukózy v krvi.</string>
|
||||
<string name="cob_label">Zbývající sacharidy (COB)</string>
|
||||
<string name="cob_question">Jak změna hodnoty citlivosti ovlivňuje výpočet COB?</string>
|
||||
<string name="cob_longer">Zvýšení hodnoty citlivosti prodlouží dobu absorpce sacharidů</string>
|
||||
<string name="cob_shorter">Zvýšení hodnoty citlivosti zkrátí dobu absorpce sacharidů</string>
|
||||
<string name="cob_no_effect">Zvýšení citlivosti neovlivní vypočtenou absorpci sacharidů</string>
|
||||
<string name="cob2_question">Jak změna inzulíno-sacharidového poměru ovlivňuje výpočet COB?</string>
|
||||
<string name="cob2_longer">Zvýšení hodnoty inzulíno-sacharidového poměru prodlouží dobu absorpce sacharidů</string>
|
||||
<string name="cob2_shorter">Zvýšení hodnoty inzulíno-sacharidového poměru zkrátí dobu absorpce sacharidů</string>
|
||||
<string name="cob2_no_effect">Zvýšení inzulíno-sacharidového poměru neovlivní vypočtenou absorpci sacharidů</string>
|
||||
<string name="cob3_question">Jak procentuální změna profilu ovlivňuje výpočet COB?</string>
|
||||
<string name="cob3_longer">Nastavením profilu na 150 % dojde k prodloužení doby absorpce sacharidů</string>
|
||||
<string name="cob3_shorter">Nastavením profilu na 150 % dojde ke zkrácení doby absorpce sacharidů</string>
|
||||
<string name="cob3_no_effect">Nastavení profilu na 150% neovlivní vypočtenou absorpci sacharidů</string>
|
||||
<string name="iob_label">Aktivní inzulín (IOB)</string>
|
||||
<string name="iob_which">Zatrhněte všechny správné odpovědi.</string>
|
||||
<string name="iob_value">Hodnota IOB je ovlivněna vydanými dočasnými bazály.</string>
|
||||
<string name="iob_hightemp">Vysoký dočasný bazál nebude spuštěn, pokud je Vaše glykémie nižší než cíl.</string>
|
||||
<string name="iob_negiob">Negativní IOB po značnou dobu bez cvičení naznačuje, že váš profil je příliš \"silný\" a ve vašem profilu je potřeba méně inzulínu.</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Bezpečnost zadání ošetřeni</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maximální povolený bolus [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maximální počet sacharidů [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Hodnota glykémie pro zastavení inzulínu</string>
|
||||
<string name="nav_preferences_plugin">Nastavení pluginu %1$s</string>
|
||||
<string name="nav_preferences">Nastavení</string>
|
||||
<string name="nav_refreshtreatments">Obnovit ošetření z NS</string>
|
||||
|
@ -432,8 +433,8 @@
|
|||
<string name="ns_localbroadcasts_title">Povolení odesílaní</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">Dynamická ISF</string>
|
||||
<string name="DynISFAdjust_title">Korekční faktor pro DynamicISF v %%</string>
|
||||
<string name="DynISFAdjust_summary">Korekční faktor pro DynamicISF. Pro agresivnější korekční dávky nastavte hodnoty větší než 100%%, a pro méně agresivní korekce menší než 100%%.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Korekční faktor pro DynamicISF v %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Korekční faktor pro DynamicISF. Pro agresivnější korekční dávky nastavte hodnoty vyšší než 100 %, pro méně agresivní korekce nižší než 100 %.</string>
|
||||
<string name="enableuam">Povolit UAM</string>
|
||||
<string name="enablesmb">Povolit SMB</string>
|
||||
<string name="enablesmb_summary">Použít super mikro bolusy místo dočasných bazálů pro zrychlení účinku</string>
|
||||
|
@ -592,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Tato hodnota je v kontextu OpenAPS nazývána Max IOB.\nOpenAPS nikdy nepřidá inzulín, pokud je současné IOB větší než tato hodnota</string>
|
||||
<string name="absorption_cutoff_title">Maximální doba absorpce sacharidů [h]</string>
|
||||
<string name="absorption_cutoff_summary">Doba, po které jsou všechny sacharidy považovány za strávené. Zbylé budou oříznuty.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Hodnota glykémie, při níž bude vydávání inzulinu zastaveno. Výchozí hodnota využívá standardní cílový model. Uživatel může nastavit hodnoty od 3,3 mmol/l do 5,5 mmol/l. Při hodnotách pod 3,6 mmol/l se použije výchozí model. </string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Zobrazovat kolonku poznámky v dialozích ošetření</string>
|
||||
<string name="next_button">Další</string>
|
||||
<string name="previous_button">Zpět</string>
|
||||
|
@ -643,7 +645,6 @@
|
|||
<string name="needsystemwindowpermission">Pro oznámení vyžaduje aplikace oprávnění systémového okna</string>
|
||||
<string name="needlocationpermission">Aplikace potřebuje oprávnění k přístupu k poloze kvůli skenování BT a WiFi identifikaci</string>
|
||||
<string name="needstoragepermission">Aby bylo možné nahrávat logy a exportovat nastavení, je nutné pro aplikaci povolit oprávnění přístupu k úložišti</string>
|
||||
<string name="needconnectpermission">Aplikace potřebuje oprávnění bluetooth</string>
|
||||
<string name="request">Požadavek</string>
|
||||
<string name="open_navigation">Otevřít menu</string>
|
||||
<string name="close_navigation">Zavřít menu</string>
|
||||
|
@ -1035,10 +1036,12 @@
|
|||
<string name="a11y_only_on_watch">pouze na hodinkách</string>
|
||||
<string name="a11y_only_on_phone">pouze na telefonu</string>
|
||||
<string name="a11y_drag_and_drop_handle">úchyt pro přetažení</string>
|
||||
<string name="search">Hledat</string>
|
||||
<!-- Aidex Cgms -->
|
||||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">Aidex</string>
|
||||
<string name="description_source_aidex">Přijímat hodnoty glykémie ze senzoru GlucoRx Aidex.</string>
|
||||
<string name="blocked_by_charging">Zablokováno možností nabíjení</string>
|
||||
<string name="blocked_by_connectivity">Zablokováno možností připojení</string>
|
||||
<string name="no_watch_connected">(Žádné hodinky nejsou připojeny)</string>
|
||||
</resources>
|
||||
|
|
|
@ -136,7 +136,6 @@
|
|||
<string name="wronginsulin_prime">Bolus en del af din beregnede \"glemte\" insulin med enten sprøjter / pen eller brug af en kanylefyldning.</string>
|
||||
<string name="wronginsulin_donothing">Gør ingenting og tillad AndroidAPS at rette op på højt blodsukker.</string>
|
||||
<string name="iob_label">Insulin om bord (IOB)</string>
|
||||
<string name="iob_which">Tjek alle de korrekte svar.</string>
|
||||
<string name="iob_value">IOB-værdi påvirkes af midlertidige basaler.</string>
|
||||
<string name="iob_hightemp">Høj midlertidlig basal vil ikke blive givet, når dit blodsukker er under målet.</string>
|
||||
<string name="iob_negiob">Negative IOB i en længere periode uden motion tyder på, at din profil er for stærk, og at der er behov for mindre insulin i dine indstillinger.</string>
|
||||
|
|
|
@ -432,8 +432,6 @@
|
|||
<string name="ns_localbroadcasts_title">Aktiver lokale udsendelser.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">Dynamisk ISF</string>
|
||||
<string name="DynISFAdjust_title">DynamicISF-justeringsfaktor %%</string>
|
||||
<string name="DynISFAdjust_summary">Justeringsfaktor for Dynamisk ISF. Indstil mere end 100%% for mere aggressive korrektionsdoser og mindre end 100%% for mindre aggressive korrektioner.</string>
|
||||
<string name="enableuam">Aktiver UAM</string>
|
||||
<string name="enablesmb">Aktiver SMB</string>
|
||||
<string name="enablesmb_summary">Brug Super Mikro Boluser i stedet for midlertidig basal for hurtigere handling</string>
|
||||
|
@ -638,7 +636,6 @@
|
|||
<string name="needsystemwindowpermission">Applikationen mangler system vindues tilladelse til notifikationer</string>
|
||||
<string name="needlocationpermission">Applikationen mangler lokations tilladelse til BT scanning og WIFI identifikation</string>
|
||||
<string name="needstoragepermission">Applikationen mangler lagerstyrings tilladelse for at gemme logfiler og exporteringsindstillinger</string>
|
||||
<string name="needconnectpermission">Applikationen kræver tilladelse til bluetooth</string>
|
||||
<string name="request">Anmod</string>
|
||||
<string name="open_navigation">Åbn navigation</string>
|
||||
<string name="close_navigation">Luk navigation</string>
|
||||
|
@ -956,7 +953,6 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Max-BS udenfor området!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Midlertidigt mål:\nMin: %1$s\nMax: %2$s\nVarighed: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Midlertigt mål:\nMål: %1$s\nVarighed: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Midlertigt mål:\Grund: %1$s\nMål: %2$s\nVarighed: %3$s</string>
|
||||
<string name="quick_wizard_message">Hurtigguide: %1$s\nInsulin: %2$.2fE\nKH: %3$dg</string>
|
||||
<string name="wizard_result">Guide:\nInsulin: %1$.2fE\nKH: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Vis post på enhed:</string>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Gib einen Teil-Bolus des \'nicht erhaltenen\' Insulins mit Spritze / Pen oder durch Befüllen der Kanüle.</string>
|
||||
<string name="wronginsulin_donothing">Unternimm nichts und lass AndroidAPS die entstehenden hohen Glukosewerte korrigieren.</string>
|
||||
<string name="iob_label">Aktives Insulin (IOB)</string>
|
||||
<string name="iob_which">Kreuze alle richtigen Antworten an.</string>
|
||||
<string name="iob_value">IOB wird von den abgegebenen temporären Basalraten beeinflusst.</string>
|
||||
<string name="iob_hightemp">Eine hohe temporäre Basalrate wird nicht abgegeben, wenn der BZ unterhalb des Zielwerts liegt.</string>
|
||||
<string name="iob_negiob">Ein negativer IOB über einen längeren Zeitraum bei fehlender Bewegung deutet darauf hin, dass Dein Profil zu stark ist und weniger Insulin in Deinen Einstellungen benötigt wird.</string>
|
||||
|
|
|
@ -159,6 +159,7 @@
|
|||
<string name="end_user_license_agreement">Endbenutzervereinbarung</string>
|
||||
<string name="end_user_license_agreement_text">DAS PROGRAMM DARF NICHT FÜR MEDIZINISCHE ENTSCHEIDUNGEN BENUTZT WERDEN. ES GIBT IN DIESEM PROJEKT KEINE GEWÄHRLEISTUNG ODER GARANTIERTE UNTERSTÜTZUNG IN IRGENDEINER ART. WENN DU DICH ENTSCHEIDEST, ES ZU NUTZEN, HÄNGT DIE QUALITÄT UND LEISTUNGSFÄHIGKEIT DIESES PROJEKTES VON DIR SELBST AB. ES WIRD \"WIE BESEHEN\" ZUR VERFÜGUNG GESTELLT. SOLLTE SICH DAS PROGRAMM ALS FEHLERHAFT ERWEISEN, ÜBERNIMMST DU ALLE NOTWENDIGEN KRANKHEITSKOSTEN, SERVICELEISTUNGEN, REPARATUREN ODER KORREKTUREN.</string>
|
||||
<string name="end_user_license_agreement_i_understand">Ich verstehe und stimme zu.</string>
|
||||
<string name="save">Speichern</string>
|
||||
<string name="reloadprofile">Profil neuladen</string>
|
||||
<string name="smscommunicator">SMS-Kommunikator</string>
|
||||
<string name="smscommunicator_allowednumbers">Erlaubte Telefonnummern</string>
|
||||
|
@ -632,7 +633,6 @@
|
|||
<string name="needsystemwindowpermission">Die App benötigt die Systemberechtigung für App-Benachrichtigungen</string>
|
||||
<string name="needlocationpermission">Die App benötigt die Berechtigung für den Standort, um Bluetooth und WLAN nutzen zu können</string>
|
||||
<string name="needstoragepermission">Die App benötigt Zugriffsrechte für den Speicher um Log-Dateien zu sichern und die Einstellungen zu exportieren.</string>
|
||||
<string name="needconnectpermission">App benötigt Bluetooth-Berechtigung</string>
|
||||
<string name="request">Anfordern</string>
|
||||
<string name="open_navigation">Menü öffnen</string>
|
||||
<string name="close_navigation">Menü schließen</string>
|
||||
|
@ -939,5 +939,7 @@ Unerwartetes Verhalten.</string>
|
|||
<string name="carbs_and_bolus">Kohlenhydrate & Bolus</string>
|
||||
<string name="confirm_remove_multiple_items">Sind Sie sicher, dass Sie diese(s) %1$d Element(e) löschen möchten?</string>
|
||||
<string name="count_selected">%1$d ausgewählt</string>
|
||||
<string name="sort_label">Sortieren</string>
|
||||
<string name="login">Login</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -136,8 +136,20 @@
|
|||
<string name="wronginsulin_compare">Comparar valores en AndroidAPS con el historial de la bomba (si la bomba lo soporta).</string>
|
||||
<string name="wronginsulin_prime">Bolo una proporción de la insulina calculada “perdida” por jeringa/pluma o usando menú de llenado.</string>
|
||||
<string name="wronginsulin_donothing">No haga nada y permite que AndroidAPS corrija cualquier nivel alto de glucosa en la sangre resultante.</string>
|
||||
<string name="cob_label">Carbohidratos activos (COB)</string>
|
||||
<string name="cob_question">¿Cómo afecta el cambio del valor ISF al cálculo de COB?</string>
|
||||
<string name="cob_longer">Incrementar el ISF hará que los carbohidratos se absorban más lentamente</string>
|
||||
<string name="cob_shorter">Incrementar el ISF hará que los carbohidratos se absorban más rápidamente</string>
|
||||
<string name="cob_no_effect">Incrementar el ISF no afectará la absorción calculada de carbohidratos</string>
|
||||
<string name="cob2_question">¿Cómo afecta cambiar los valores de IC a los cálculos de COB?</string>
|
||||
<string name="cob2_longer">Incrementar el IC hará que los carbohidratos se absorban más lentamente</string>
|
||||
<string name="cob2_shorter">Incrementar el IC hará que los carbohidratos se absorban más rápidamente</string>
|
||||
<string name="cob2_no_effect">Incrementar el IC no afectará la absorción calculada de carbohidratos</string>
|
||||
<string name="cob3_question">¿Cómo afecta el cambio de porcentaje del perfil al cálculo de los COB?</string>
|
||||
<string name="cob3_longer">Establecer el perfil a 150% hará que los carbohidratos se absorban más lentamente</string>
|
||||
<string name="cob3_shorter">Establecer el perfil a 150% hará que los carbohidratos se absorban más rápidamente</string>
|
||||
<string name="cob3_no_effect">Establecer el perfil a 150% no afectará la absorción calculada de carbohidratos</string>
|
||||
<string name="iob_label">Insulina a bordo (IOB)</string>
|
||||
<string name="iob_which">Marca todas las respuestas correctas.</string>
|
||||
<string name="iob_value">El valor del IOB se ve afectado por las bases temporales ejecutadas.</string>
|
||||
<string name="iob_hightemp">No se dará alta tasa basal temporal cuando su nivel de azúcar en sangre esté por debajo del objetivo.</string>
|
||||
<string name="iob_negiob">El IOB negativo durante un período sustancial en ausencia de ejercicio sugiere que tu perfil es demasiado fuerte y que se necesita menos insulina en tus ajustes.</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Seguridad de tratamientos</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Máximo bolo permitido [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Máximos carbohidratos permitidos [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Nivel de glucosa por debajo de valor LGS (Suspensión por glucosa baja)</string>
|
||||
<string name="nav_preferences_plugin">Preferencias de %1$s</string>
|
||||
<string name="nav_preferences">Preferencias</string>
|
||||
<string name="nav_refreshtreatments">Actualizar los tratamientos desde Nightscout</string>
|
||||
|
@ -432,8 +433,8 @@
|
|||
<string name="ns_localbroadcasts_title">Habilitar la emisión de mensajes localmente.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">ISF Dinámico</string>
|
||||
<string name="DynISFAdjust_title">Factor de ajuste de ISF Dinámico %</string>
|
||||
<string name="DynISFAdjust_summary">Porcentaje del factor de ajuste de ISF Dinámico\nValor predeterminado: 100\nEstablecer valores por encima del 100%% para que el algoritmo aplique correcciones más agresivas y valores por debajo del 100%% para correcciones menos agresivas.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Factor de ajuste de ISF Dinámico %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Porcentaje del factor de ajuste de ISF Dinámico\nValor predeterminado: 100\nEstablecer valores por encima del 100% para que el algoritmo aplique correcciones más agresivas y valores por debajo del 100% para correcciones menos agresivas.</string>
|
||||
<string name="enableuam">Activar UAM</string>
|
||||
<string name="enablesmb">Activar SMB</string>
|
||||
<string name="enablesmb_summary">Usar microbolos en lugar de basales temporales, para corregir más rápidamente</string>
|
||||
|
@ -592,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Este valor se denomina \"Max IOB\", en el contexto de OpenAPS\nOpenAPS no podrá superar esta cantidad de insulina activa (IOB)</string>
|
||||
<string name="absorption_cutoff_title">Tiempo máximo de absorción de la comida [h]</string>
|
||||
<string name="absorption_cutoff_summary">Tiempo en el que cualquier comida se considera absorbida. Los carbohidratos restantes serán cortados. </string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Valor de glucosa por debajo del cual se suspende la administración de insulina. El valor predeterminado utiliza el modelo de objetivo estándar. El usuario puede establecer un valor entre 60mg/dl (3. mmol/l) y 100mg/dl (5.5mmol/l). Valores por debajo de 65/3.6 usan el modelo predeterminado</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Mostrar el campo notas en diálogos de tratamientos</string>
|
||||
<string name="next_button">Siguiente</string>
|
||||
<string name="previous_button">Anterior</string>
|
||||
|
@ -643,7 +645,6 @@
|
|||
<string name="needsystemwindowpermission">La aplicación necesita permisos del sistema para poder mostrarse sobre otras aplicaciones, para las notificaciones</string>
|
||||
<string name="needlocationpermission">La aplicación necesita permiso de ubicación para poder buscar dispositivos Bluetooth y redes WiFi</string>
|
||||
<string name="needstoragepermission">La aplicación necesita permiso de almacenamiento para poder almacenar archivos de registro y valores de exportación</string>
|
||||
<string name="needconnectpermission">La aplicación necesita permiso de bluetooth</string>
|
||||
<string name="request">Solicitar</string>
|
||||
<string name="open_navigation">Abrir navegación</string>
|
||||
<string name="close_navigation">Cerrar navegación</string>
|
||||
|
@ -968,7 +969,7 @@
|
|||
<string name="wear_action_tempt_max_bg_error">¡Glucosa máxima fuera de rango!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Objetivo temporal:\nMin: %1$s\nMax: %2$s\nDuración: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Objetivo temporal:\nObjetivo: %1$s\nDuración: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">ObjetivoTemporal:\Razón: %1$s\nObjetivo: %2$s\nDuración: %3$s</string>
|
||||
<string name="wear_action_tempt_preset_message">ObjetivoTemporal:\nRazón: %1$s\nObjetivo: %2$s\nDuración: %3$s</string>
|
||||
<string name="quick_wizard_message">Asistente Rápido: %1$s\nInsulina: %2$.2fU\nCarbohidratos: %3$dg</string>
|
||||
<string name="wizard_result">Calc. Asistente:\nInsulina: %1$.2fU\nCarbohidratos: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Mostrar entrada en dispositivo:</string>
|
||||
|
@ -1035,10 +1036,12 @@
|
|||
<string name="a11y_only_on_watch">Sólo en reloj</string>
|
||||
<string name="a11y_only_on_phone">Sólo en teléfono</string>
|
||||
<string name="a11y_drag_and_drop_handle">Arrastrar y soltar </string>
|
||||
<string name="search">Buscar</string>
|
||||
<!-- Aidex Cgms -->
|
||||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">Aidex</string>
|
||||
<string name="description_source_aidex">Recibir los valores de glucosa de GlucoRx Aidex CGMS</string>
|
||||
<string name="blocked_by_charging">Bloqueado por opciones de carga</string>
|
||||
<string name="blocked_by_connectivity">Bloqueado por opciones de conectividad</string>
|
||||
<string name="no_watch_connected">(Ningún reloj conectado)</string>
|
||||
</resources>
|
||||
|
|
|
@ -136,8 +136,20 @@
|
|||
<string name="wronginsulin_compare">Comparer les valeurs dans l\'historique d\'AndroidAPS et de la pompe (si la pompe le permet).</string>
|
||||
<string name="wronginsulin_prime">Faites un bolus du montant de votre insuline calculée « manquante » soit par seringue / stylo ou en utilisant un amorçage.</string>
|
||||
<string name="wronginsulin_donothing">Ne faites rien et laissez AndroidAPS corriger tout taux élevé de glycémie qui en résulte.</string>
|
||||
<string name="cob_label">Glucides Actifs (GA)</string>
|
||||
<string name="cob_question">Comment le changement de la SI impacte le calcul des GA ?</string>
|
||||
<string name="cob_longer">Augmenter la SI rendra l\'absorption des glucides plus longue</string>
|
||||
<string name="cob_shorter">L\'augmentation de la SI réduira le temps d\'absorption des glucides</string>
|
||||
<string name="cob_no_effect">L\'augmentation de la SI n\'affectera pas les calculs de l\'absorption des glucides</string>
|
||||
<string name="cob2_question">Comment le changement de G/I impacte le calcul des GA ?</string>
|
||||
<string name="cob2_longer">L\'augmentation de G/I rendra l\'absorption des glucides plus longue</string>
|
||||
<string name="cob2_shorter">L\'augmentation de G/I réduira le temps d\'absorption des glucides</string>
|
||||
<string name="cob2_no_effect">L\'augmentation de G/I n\'impactera pas l\'absorption des glucides calculés</string>
|
||||
<string name="cob3_question">Comment le changement du pourcentage de profil impacte le calcul des GA ?</string>
|
||||
<string name="cob3_longer">Définir le profil à 150% rendra l\'absorption des glucides plus longue</string>
|
||||
<string name="cob3_shorter">Définir le profil à 150% réduira le temps d\'absorption des glucides</string>
|
||||
<string name="cob3_no_effect">Définir le profil à 150% n\'impactera pas le calcul de l\'absorption des glucides</string>
|
||||
<string name="iob_label">Insuline Active (IA)</string>
|
||||
<string name="iob_which">Sélectionnez toutes les bonnes réponses.</string>
|
||||
<string name="iob_value">La valeur de l\'IA est impactée par les débits de basal temporaires émis.</string>
|
||||
<string name="iob_hightemp">Une basale temp haute ne sera pas donnée quand votre glycémie est en dessous de la cible.</string>
|
||||
<string name="iob_negiob">Une IA négative pendant une période significative en l\'absence d\'exercice indique que votre profil est trop fort et qu\'il faut moins d\'insuline dans vos paramètres.</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Traitements de sécurité</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maximum Bolus autorisé [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maximum de Glucides autorisé [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Glycémie au-dessous de laquelle se déclenche l\'Arrêt Glycémie Basse</string>
|
||||
<string name="nav_preferences_plugin">Préférences de %1$s</string>
|
||||
<string name="nav_preferences">Préférences</string>
|
||||
<string name="nav_refreshtreatments">Actualiser les données depuis NS</string>
|
||||
|
@ -433,8 +434,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="ns_localbroadcasts_title">Activer les transmissions locales</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">SI dynamique</string>
|
||||
<string name="DynISFAdjust_title">Facteur d\'ajustement SI dynamique %%</string>
|
||||
<string name="DynISFAdjust_summary">Facteur d\'ajustement pour SI dynamique. Définissez plus de 100 %% pour des corrections plus agressives et moins de 100 %% pour des corrections moins agressives.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Facteur d\'ajustement Si dynamique %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Facteur d\'ajustement pour Si dynamique. Définissez plus de 100 % pour des corrections plus agressives et moins de 100 % pour des corrections moins agressives.</string>
|
||||
<string name="enableuam">Activer RNS</string>
|
||||
<string name="enablesmb">Activer SMB</string>
|
||||
<string name="enablesmb_summary">Utiliser les Super Micro Bolus au lieu des débits de base temporaires pour une action rapide</string>
|
||||
|
@ -593,6 +594,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="openapssmb_maxiob_summary">Cette valeur est appelée Max IA (Insuline Active) dans le contaxte OpenAPS\nOpenAPS n’ajoutera pas plus d’insuline si l\'IA (Insuline Active) actuelle est supérieure à cette valeur</string>
|
||||
<string name="absorption_cutoff_title">Durée maximale d’absorption pour un repas [h]</string>
|
||||
<string name="absorption_cutoff_summary">Durée où n’importe quel repas est considéré absorbé. Les glucides restants ne seront pas pris en compte.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Valeur glycémique au-dessous de laquelle l\'injection de l\'insuline est suspendu. La valeur par défaut utilise le modèle standard de la cible. L\'utilisateur peut choisir entre 60mg/dl (3.3mmol/l) et 100mg/dl (5.5mmol/l). Les valeurs au-dessous de 65/3.6 déclenchent l\'utilisation du modèle standard</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Affiche les notes dans les dialogues</string>
|
||||
<string name="next_button">Suivant</string>
|
||||
<string name="previous_button">Préc</string>
|
||||
|
@ -644,7 +646,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="needsystemwindowpermission">L\'application a besoin de l\'autorisation d\'accès à la fenêtre système pour les notifications</string>
|
||||
<string name="needlocationpermission">L\'application a besoin de l\'autorisation de localisation pour l\'analyse BT et l\'identification WiFi</string>
|
||||
<string name="needstoragepermission">L\'application a besoin d\'une autorisation de stockage pour pouvoir stocker les fichiers journaux et les paramètres d\'exportation</string>
|
||||
<string name="needconnectpermission">L\'application a besoin de l\'autorisation Bluetooth</string>
|
||||
<string name="request">Demande</string>
|
||||
<string name="open_navigation">Ouvrir navigation</string>
|
||||
<string name="close_navigation">Fermer navigation</string>
|
||||
|
@ -968,7 +969,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="wear_action_tempt_max_bg_error">Gly maxi hors limite!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Cible temporaire:\nMin: %1$s\nMax : %2$s\nDurée : %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Cible temporaire:\nCible: %1$s\nDurée: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Cible temporaire:\nRaison: %1$s\nCible : %2$s\nDurée : %3$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Cible temp:\nRaison: %1$s\nCible : %2$s\nDurée : %3$s</string>
|
||||
<string name="quick_wizard_message">Assistant: %1$s\nInsuline : %2$.2fU\nGlucides : %3$dg</string>
|
||||
<string name="wizard_result">Assistant Calc :\nInsuline : %1$.2fU\nGlucides : %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Afficher l\'entrée sur l\'appareil :</string>
|
||||
|
@ -1035,10 +1036,12 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="a11y_only_on_watch">seulement sur la montre</string>
|
||||
<string name="a11y_only_on_phone">uniquement sur le téléphone</string>
|
||||
<string name="a11y_drag_and_drop_handle">glissez déposez ici</string>
|
||||
<string name="search">Chercher</string>
|
||||
<!-- Aidex Cgms -->
|
||||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">Aidex</string>
|
||||
<string name="description_source_aidex">Recevoir les valeurs de glycémie du MGC GlucoRx Aidex.</string>
|
||||
<string name="blocked_by_charging">Bloqué par les options de recharge</string>
|
||||
<string name="blocked_by_connectivity">Bloqué par les options de connectivité</string>
|
||||
<string name="no_watch_connected">(Pas de montre connectée)</string>
|
||||
</resources>
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
<string name="nav_export">Socruithe Easpórtáil</string>
|
||||
<string name="nav_import">Socruithe Iompórtáil</string>
|
||||
<string name="check_preferences_import_btn">Iompórtáil</string>
|
||||
<string name="save">Sábháil</string>
|
||||
<string name="reloadprofile">Athlódáil próifíl</string>
|
||||
<string name="smscommunicator_loophasbeendisabled">Is lúb díchumasaithe</string>
|
||||
<string name="smscommunicator_loophasbeenenabled">Is lúb cumasaithe</string>
|
||||
|
|
|
@ -123,6 +123,7 @@
|
|||
<string name="sensitivity_cannula">La registrazione di un cambio cannula ripristinerà il rapporto Autosens al 100%.</string>
|
||||
<string name="sensitivity_time">Alcune opzioni del plugin hanno intervalli di tempo configurabili che possono essere impostati dall\'utente.</string>
|
||||
<string name="sensitivity_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html</string>
|
||||
<string name="sensitivity_hint2">https://androidaps.readthedocs.io/en/latest/Usage/Open-APS-features.html?highlight=Autosens#autosens</string>
|
||||
<string name="wrongcarbs_label">Errori inserimento CHO</string>
|
||||
<string name="wrongcarbs_whattodo">Cosa dovresti fare se hai fatto un inserimento non corretto di carboidrati?</string>
|
||||
<string name="wrongcarbs_treatmentstab">Eliminare nei Trattamenti l\'inserimento non corretto e immettere il nuovo valore CHO.</string>
|
||||
|
@ -135,8 +136,20 @@
|
|||
<string name="wronginsulin_compare">Compara i valori in AndroidAPS con lo storico micro (se supportato).</string>
|
||||
<string name="wronginsulin_prime">Erogare un bolo con parte della tua insulina calcolata \"mancante\" usando una siringa/penna o la funzione caricamento.</string>
|
||||
<string name="wronginsulin_donothing">Non fare nulla e permettere ad AndroidAPS di correggere eventuali glicemie alte.</string>
|
||||
<string name="cob_label">CHO attivi (COB)</string>
|
||||
<string name="cob_question">In che modo la modifica del valore ISF influisce sul calcolo dei COB?</string>
|
||||
<string name="cob_longer">L\'aumento di ISF richiederà un tempo maggiore per l\'assorbimento dei CHO</string>
|
||||
<string name="cob_shorter">L\'aumento di ISF richiederà un tempo minore per l\'assorbimento dei CHO</string>
|
||||
<string name="cob_no_effect">L\'aumento di ISF non influirà sull\'assorbimento calcolato dei CHO</string>
|
||||
<string name="cob2_question">In che modo la modifica del valore IC influisce sul calcolo dei COB?</string>
|
||||
<string name="cob2_longer">L\'aumento di IC richiederà un tempo maggiore per l\'assorbimento dei CHO</string>
|
||||
<string name="cob2_shorter">L\'aumento di IC richiederà un tempo minore per l\'assorbimento dei CHO</string>
|
||||
<string name="cob2_no_effect">L\'aumento di IC non influirà sull\'assorbimento calcolato dei CHO</string>
|
||||
<string name="cob3_question">In che modo la modifica della percentuale profilo influisce sul calcolo dei COB?</string>
|
||||
<string name="cob3_longer">Impostare il profilo al 150% richiederà un tempo maggiore per l\'assorbimento dei CHO</string>
|
||||
<string name="cob3_shorter">Impostare il profilo al 150% richiederà un tempo minore per l\'assorbimento dei CHO</string>
|
||||
<string name="cob3_no_effect">Impostare il profilo al 150% non influirà sull\'assorbimento calcolato dei CHO</string>
|
||||
<string name="iob_label">Insulina attiva (IOB)</string>
|
||||
<string name="iob_which">Seleziona tutte le risposte corrette.</string>
|
||||
<string name="iob_value">Il valore IOB è influenzato dalle basali temporanee emesse.</string>
|
||||
<string name="iob_hightemp">Non verrà emessa una basale temporanea alta quando la tua glicemia è al di sotto del target.</string>
|
||||
<string name="iob_negiob">IOB negativo per un periodo considerevole in assenza di esercizio fisico suggerisce che il tuo profilo è troppo incisivo e che è necessaria meno insulina nelle tue impostazioni.</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Sicurezza trattamenti</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Max bolo consentito [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Max CHO consentiti [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Glicemia sotto la quale si attiva la sospensione per glicemia bassa</string>
|
||||
<string name="nav_preferences_plugin">%1$s Preferenze</string>
|
||||
<string name="nav_preferences">Preferenze</string>
|
||||
<string name="nav_refreshtreatments">Aggiorna trattamenti da NS</string>
|
||||
|
@ -432,14 +433,15 @@
|
|||
<string name="ns_localbroadcasts_title">Abilita trasmissioni locali</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">ISF Dinamico</string>
|
||||
<string name="DynISFAdjust_title">%% fattore di regolazione ISF dinamico</string>
|
||||
<string name="DynISFAdjust_summary">Fattore di regolazione per ISF dinamico. Imposta più del 100%% per correzioni più aggressive, meno del 100%% per correzioni meno aggressive.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Fattore di regolazione per ISF Dinamico (%)</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Fattore di regolazione per ISF Dinamico. Imposta più del 100% per dosi di correzione più aggressive e meno del 100% per correzioni meno aggressive.</string>
|
||||
<string name="enableuam">Abilita UAM</string>
|
||||
<string name="enablesmb">Abilita SMB</string>
|
||||
<string name="enablesmb_summary">Usa super-micro-boli al posto della basale temporanea per un\'azione più veloce</string>
|
||||
<string name="enableuam_summary">Rilevamento dei pasti non annunciati</string>
|
||||
<string name="insulin_oref_peak">Tempo picco Curva IOB</string>
|
||||
<string name="insulin_peak_time">Tempo del picco [min]</string>
|
||||
<string name="insulin_peak">Picco</string>
|
||||
<string name="free_peak_oref">Free-Peak Oref</string>
|
||||
<string name="rapid_acting_oref">Rapid-Acting Oref</string>
|
||||
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
|
||||
|
@ -591,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Questo valore è chiamato Max IOB nel contesto OpenAPS\nOpenAPS non aggiungerà ulteriore insulina se IOB corrente è maggiore di questo valore</string>
|
||||
<string name="absorption_cutoff_title">Max tempo assorbimento pasto [h]</string>
|
||||
<string name="absorption_cutoff_summary">Tempo entro il quale ogni pasto si considera assorbito. Eventuali carboidrati rimanenti verranno tagliati fuori.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Glicemia sotto la quale l\'erogazione d\'insulina è sospesa. Il valore predefinito utilizza il modello target standard. L\'utente può impostare un valore compreso tra 60 mg/dl (3.3mmol/l) e 100mg/dl (5.5mmol/l). Con valori inferiori a 65/3.6 viene usato il modello predefinito</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Finestre tratt.nto: mostra campo note</string>
|
||||
<string name="next_button">Avanti</string>
|
||||
<string name="previous_button">Indietro</string>
|
||||
|
@ -603,7 +606,11 @@
|
|||
<string name="secondcarbsincrement">Secondo incremento di CHO</string>
|
||||
<string name="thirdcarbsincrement">Terzo incremento di CHO</string>
|
||||
<string name="cgm">CGM</string>
|
||||
<string name="ns_cellular">Usa connessione cellulare</string>
|
||||
<string name="ns_wifi">Usa connessione WiFi</string>
|
||||
<string name="ns_wifi_ssids">WiFi SSID</string>
|
||||
<string name="ns_charging">Durante la ricarica</string>
|
||||
<string name="ns_battery">Utilizzo batteria</string>
|
||||
<string name="connectionsettings_title">Impostazioni connessione</string>
|
||||
<string name="ns_wifi_allowedssids">SSID ammessi (separati da punto e virgola)</string>
|
||||
<string name="ns_allowroaming">Consenti connessione in roaming</string>
|
||||
|
@ -638,7 +645,6 @@
|
|||
<string name="needsystemwindowpermission">L\'applicazione richiede l\'autorizzazione \"finestra di sistema\" per le notifiche</string>
|
||||
<string name="needlocationpermission">L\'applicazione richiede l\'accesso alla posizione per la scansione bluetooth e l\'identificazione WiFi</string>
|
||||
<string name="needstoragepermission">L\'applicazione richiede l\'accesso alla memoria per memorizzare i file di log ed esportare le impostazioni</string>
|
||||
<string name="needconnectpermission">L\'applicazione richiede l\'autorizzazione bluetooth</string>
|
||||
<string name="request">Richiesta</string>
|
||||
<string name="open_navigation">Apri navigazione</string>
|
||||
<string name="close_navigation">Chiudi navigazione</string>
|
||||
|
@ -678,6 +684,8 @@
|
|||
<string name="error_adding_treatment_message">Un trattamento (insulina: %1$.2f, carboidrati: %2$d, a: %3$s) non può essere aggiunto ai trattamenti. Controlla e aggiungi il record necessario.</string>
|
||||
<string name="generated_ecarbs_note">eCarbs: %1$d g (%2$d h), ritardo: %3$d m</string>
|
||||
<string name="openaps_noasdata">Nessun dato autosens disponibile</string>
|
||||
<string name="log_files">File di log</string>
|
||||
<string name="miscellaneous">Miscellanea</string>
|
||||
<string name="nav_logsettings">Impostazioni Log</string>
|
||||
<string name="resettodefaults">Ripristina valori predefiniti</string>
|
||||
<string name="nsmalfunction">Malfunzionamento NSClient. Considera il riavvio di NS e NSClient.</string>
|
||||
|
@ -770,6 +778,11 @@
|
|||
<string name="invalidpct">Inserimento % non valido</string>
|
||||
<string name="average">Media</string>
|
||||
<string name="tir">TIR</string>
|
||||
<string name="day_tir">TIR giorno</string>
|
||||
<string name="night_tir">TIR notte</string>
|
||||
<string name="detailed_14_days">Dettaglio 14 giorni</string>
|
||||
<string name="std_deviation">SD: %1$s</string>
|
||||
<string name="hba1c">HbA1c: </string>
|
||||
<string name="activitymonitor">Monitor attività</string>
|
||||
<string name="doyouwantresetstats">Vuoi resettare le statistiche sull\'attività?</string>
|
||||
<string name="statistics">Statistiche</string>
|
||||
|
@ -956,7 +969,7 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Max-BG fuori range!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Temptarget:\nMin: %1$s\nMax: %2$s\nDurata: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Temptarget:\nTarget: %1$s\nDurata: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Temptarget:\Motivo: %1$s\nTarget: %2$s\nDurata: %3$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Temptarget:\nMotivo: %1$s\nTarget: %2$s\nDurata: %3$s</string>
|
||||
<string name="quick_wizard_message">QuickWizard: %1$s\nInsulina: %2$.2fU\nCHO: %3$dg</string>
|
||||
<string name="wizard_result">Calc. Wizard:\nInsulina: %1$.2fU\nCHO: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Mostra voce sul dispositivo:</string>
|
||||
|
@ -965,9 +978,11 @@
|
|||
<string name="wizard_no_active_profile">Nessun profilo attivo!</string>
|
||||
<string name="wizard_no_cob">Valore COB sconosciuto! Lettura BG mancante o recente riavvio dell\'app?</string>
|
||||
<string name="wizard_carbs_constraint">Violazione vincolo CHO!</string>
|
||||
<string name="wizard_explain_calc">Calc (IC: %1$.1f, ISF: %2$.1f)</string>
|
||||
<string name="wizard_explain_carbs">CHO: %1$.2fU</string>
|
||||
<string name="wizard_explain_cob">COB: %1$.0fg %2$.2fU</string>
|
||||
<string name="wizard_explain_bg">BG: %1$.2fU</string>
|
||||
<string name="wizard_explain_iob">IOB: %1$.2fU</string>
|
||||
<string name="wizard_explain_superbolus">Superbolo: %1$.2fU</string>
|
||||
<string name="wizard_explain_trend">Trend di 15\': %1$.2fU</string>
|
||||
<string name="wizard_explain_percent">Percentuale: %1$.2fU x %2$d%% ≈ %3$.2fU</string>
|
||||
|
@ -994,6 +1009,10 @@
|
|||
<string name="count_selected">%1$d selezionati</string>
|
||||
<string name="sort_label">Ordina</string>
|
||||
<string name="dialog_canceled">Finestra di dialogo cancellata</string>
|
||||
<string name="veryLow" comment="below 3.1">Molto basso</string>
|
||||
<string name="low" comment="3.1-3.9">Basso</string>
|
||||
<string name="high" comment="10.0-13.9">Alto</string>
|
||||
<string name="veryHigh" comment="above 13.9">Molto alto</string>
|
||||
<string name="below" comment="below "in range"">Sotto</string>
|
||||
<string name="in_range">In range</string>
|
||||
<string name="above" comment="above "in range"">Sopra</string>
|
||||
|
@ -1001,6 +1020,13 @@
|
|||
<string name="show_hide_records">Nascondi record di loop</string>
|
||||
<string name="widget_description">Widget di AndroidAPS</string>
|
||||
<string name="configure">Configura opacità</string>
|
||||
<string name="loop_status">Stato loop</string>
|
||||
<string name="graph_scale">Scala del grafico</string>
|
||||
<string name="profile1">Profilo 1</string>
|
||||
<string name="profile2">Profilo 2</string>
|
||||
<string name="login">Login</string>
|
||||
<string name="remove_all">Rimuovi tutto</string>
|
||||
<string name="reset_start">Avvio reset</string>
|
||||
<string name="a11y_otp_qr_code">Codice QR per configurare OTP</string>
|
||||
<string name="a11y_open_settings">apri impostazioni</string>
|
||||
<string name="a11y_set_carb_timer">imposta allarme timer CHO</string>
|
||||
|
@ -1010,8 +1036,12 @@
|
|||
<string name="a11y_only_on_watch">solo su smartwatch</string>
|
||||
<string name="a11y_only_on_phone">solo su telefono</string>
|
||||
<string name="a11y_drag_and_drop_handle">trascina e rilascia</string>
|
||||
<string name="search">Cerca</string>
|
||||
<!-- Aidex Cgms -->
|
||||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">GlucoRx Aidex</string>
|
||||
<string name="description_source_aidex">Ricevi valori glicemia da CGM GlucoRx Aidex.</string>
|
||||
<string name="blocked_by_charging">Bloccato dalle opzioni di ricarica</string>
|
||||
<string name="blocked_by_connectivity">Bloccato dalle opzioni di connettività</string>
|
||||
<string name="no_watch_connected">(Nessuno smartwatch connesso)</string>
|
||||
</resources>
|
||||
|
|
|
@ -123,6 +123,7 @@
|
|||
<string name="sensitivity_cannula">רישום החלפת צינורית יאפס את היחס של Autosens בחזרה ל-100%.</string>
|
||||
<string name="sensitivity_time">חלק מאפשרויות התוסף כוללות טווחי זמן הניתנים להגדרה ע\"י המשתמש.</string>
|
||||
<string name="sensitivity_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html</string>
|
||||
<string name="sensitivity_hint2">https://androidaps.readthedocs.io/en/latest/Usage/Open-APS-features.html?highlight=Autosens#autosens</string>
|
||||
<string name="wrongcarbs_label">שגיאות רישום פחמימות</string>
|
||||
<string name="wrongcarbs_whattodo">מה לעשות אם טעיתם ברישום הפחמימות?</string>
|
||||
<string name="wrongcarbs_treatmentstab">מחקו את הרשומה השגויה בטיפולים וציינו את ערך הפחמימות הנכון.</string>
|
||||
|
@ -135,8 +136,20 @@
|
|||
<string name="wronginsulin_compare">השוו את הרשומות שב-AndroidAPS עם היסטוריית המשאבה (אם המשאבה תומכת בכך).</string>
|
||||
<string name="wronginsulin_prime">מזריקים בולוס על חלק מהאינסולין המחושב \"שחסר\" עם מזרק\\עט או באמצעות תיחול (Prime).</string>
|
||||
<string name="wronginsulin_donothing">לא לעשות דבר ולאפשר ל-AndroidAPS לתקן כל רמת סוכר גבוהה.</string>
|
||||
<string name="cob_label">פחמ\' פעילות</string>
|
||||
<string name="cob_question">איך שינויים ביחס התיקון משפיעים על חישוב הפחמימות הפעילות?</string>
|
||||
<string name="cob_longer">הגדלת ערך יחס התיקון תגרום להארכת משך ספיגת הפחמימות</string>
|
||||
<string name="cob_shorter">הגדלת ערך יחס התיקון תגרום לקיצור משך ספיגת הפחמימות</string>
|
||||
<string name="cob_no_effect">הגדלת ערך יחס התיקון לא תשפיע על חישוב ספיגת הפחמימות</string>
|
||||
<string name="cob2_question">איך שינויים ביחס הפחמימות משפיעים על חישוב הפחמימות הפעילות?</string>
|
||||
<string name="cob2_longer">הגדלת ערך יחס הפחמימות תגרום להארכת משך ספיגת הפחמימות</string>
|
||||
<string name="cob2_shorter">הגדלת ערך יחס הפחמימות תגרום לקיצור משך ספיגת הפחמימות</string>
|
||||
<string name="cob2_no_effect">הגדלת ערך יחס הפחמימות לא תשפיע על חישוב ספיגת הפחמימות</string>
|
||||
<string name="cob3_question">איך שינויים באחוזי הפרופיל משפיעים על חישוב הפחמימות הפעילות?</string>
|
||||
<string name="cob3_longer">הגדרת 150% פרופיל תגרום להארכת משך ספיגת הפחמימות</string>
|
||||
<string name="cob3_shorter">הגדרת 150% פרופיל תגרום לקיצור משך ספיגת הפחמימות</string>
|
||||
<string name="cob3_no_effect">הגדרת 150% פרופיל לא תשפיע על חישוב משך ספיגת הפחמימות</string>
|
||||
<string name="iob_label">אינסולין פעיל בגוף (IOB)</string>
|
||||
<string name="iob_which">סמנו את כל התשובות הנכונות.</string>
|
||||
<string name="iob_value">ערך האינסולין הפעיל (IOB) מושפע ממינונים בזאליים זמניים שסופקו.</string>
|
||||
<string name="iob_hightemp">מינון בזאלי גבוה לא יינתן כאשר רמת הסוכר נמוכה מערך המטרה.</string>
|
||||
<string name="iob_negiob">אינסולין פעיל שלילי לאורך זמן בו לא נעשית פעילות מצביע על כך שהפרופיל חזק מדי, נדרש פחות אינסולין ויש להגדיר זאת בפרופיל.</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">בטיחות טיפולים</string>
|
||||
<string name="treatmentssafety_maxbolus_title">בולוס מקסימלי מותר [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">מקסימום פחמימות מותר [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">רמת הסוכר נמוכה מסף ההשהיה עקב סוכר נמוך</string>
|
||||
<string name="nav_preferences_plugin">העדפות %1$s</string>
|
||||
<string name="nav_preferences">העדפות</string>
|
||||
<string name="nav_refreshtreatments">רענן טיפול מ-Nightscout</string>
|
||||
|
@ -432,14 +433,15 @@
|
|||
<string name="ns_localbroadcasts_title">אפשר שידורים מקומיים.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">רגישות דינאמית</string>
|
||||
<string name="DynISFAdjust_title">כיוונון פקטור הרגישות הדינאמית %%</string>
|
||||
<string name="DynISFAdjust_summary">כיוונון פקטור הרגישות הדינאמית. קבעו יותר מ-100%% לקבלת תיקונים אגרסיביים יותר ופחות מ-100%% לקבלת תיקונים עדינים יותר.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">כיוונון פקטור הרגישות הדינאמית %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">כיוונון פקטור הרגישות הדינאמית. הגדירו יותר מ-100% לקבלת תיקונים אגרסיביים יותר ופחות מ-100% לקבלת תיקונים עדינים יותר.</string>
|
||||
<string name="enableuam">הפעלת UAM</string>
|
||||
<string name="enablesmb">אפשר SMB</string>
|
||||
<string name="enablesmb_summary">השתמש בסופר מיקרו בולוסים במקום בבזאלי זמני לפעילות מהירה יותר</string>
|
||||
<string name="enableuam_summary">זיהוי של ארוחות לא מוכרזות</string>
|
||||
<string name="insulin_oref_peak">שעת שיא של עקומת IOB</string>
|
||||
<string name="insulin_peak_time">זמן שיא [min]</string>
|
||||
<string name="insulin_peak">שיא</string>
|
||||
<string name="free_peak_oref">Oref שיא חופשי</string>
|
||||
<string name="rapid_acting_oref">Oref אינסולין מהיר</string>
|
||||
<string name="ultrarapid_oref">Oref אינסולין אולטרה מהיר</string>
|
||||
|
@ -591,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">ב-OpenAPS ערך זה נקרא מקסימום אינסולין פעיל (maxIOB). \nלא יוזרק עוד אינסולין אם כמות האינסולין הפעיל הנוכחי גדול מערך זה</string>
|
||||
<string name="absorption_cutoff_title">זמן ספיגה מקסימלי של הארוחה [h]</string>
|
||||
<string name="absorption_cutoff_summary">משך זמן בו כל ארוחה תחשב כנספגה. לא תהיה התחשבות בפחמימות שנותרו.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">ערך הסוכר שמתחתיו מושעה הזרקת אינסולין. ערך ברירת המחדל משתמש במודל מטרה סטנדרטי. המשתמש יכול להגדיר ערך בין 60 ל-100 מג\"\\ד\"ל. ערכים מתחת ל-65 מביאים לשימוש במודל ברירת המחדל</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">הצגת שדות הערות בתיבות דו-שיח של טיפול</string>
|
||||
<string name="next_button">הבא</string>
|
||||
<string name="previous_button">הקודם</string>
|
||||
|
@ -603,7 +606,11 @@
|
|||
<string name="secondcarbsincrement">תוספת פחמימות שניה</string>
|
||||
<string name="thirdcarbsincrement">תוספת פחמימות שלישית</string>
|
||||
<string name="cgm">סנסור</string>
|
||||
<string name="ns_cellular">השתמש באינטרנט סלולרי</string>
|
||||
<string name="ns_wifi">השתמש בחיבור WiFi</string>
|
||||
<string name="ns_wifi_ssids">WiFi SSID</string>
|
||||
<string name="ns_charging">בזמן טעינה</string>
|
||||
<string name="ns_battery">משתמש בסוללה</string>
|
||||
<string name="connectionsettings_title">הגדרות חיבור</string>
|
||||
<string name="ns_wifi_allowedssids">SSID מורשים (מופרדים בנקודה-פסיק)</string>
|
||||
<string name="ns_allowroaming">אפשר חיבור בנדידה</string>
|
||||
|
@ -638,7 +645,6 @@
|
|||
<string name="needsystemwindowpermission">האפליקציה צריכה הרשאת מערכת של חלונות לצורך התראות</string>
|
||||
<string name="needlocationpermission">דרושה הרשאת מיקום עבור סריקת בלוטות\' וזיהוי WiFi</string>
|
||||
<string name="needstoragepermission">דרושה הרשאת אחסון כדי שתוכלו לאחסן קובצי יומן והגדרות יצוא.</string>
|
||||
<string name="needconnectpermission">האפליקציה צריכה הרשאה לבלוטות\'</string>
|
||||
<string name="request">בקשה</string>
|
||||
<string name="open_navigation">פתח ניווט</string>
|
||||
<string name="close_navigation">סגור ניווט</string>
|
||||
|
@ -770,6 +776,11 @@
|
|||
<string name="invalidpct">רשומת אחוזים לא חוקית</string>
|
||||
<string name="average">ממוצע</string>
|
||||
<string name="tir">זמן בטווח</string>
|
||||
<string name="day_tir">זמן בטווח ביום</string>
|
||||
<string name="night_tir">זמן בטווח בלילה</string>
|
||||
<string name="detailed_14_days">פירוט 14 יום</string>
|
||||
<string name="std_deviation">סטיית תקן: %1$s</string>
|
||||
<string name="hba1c">HbA1c: </string>
|
||||
<string name="activitymonitor">מוניטור פעילות</string>
|
||||
<string name="doyouwantresetstats">האם ברצונכם לאפס את הסטטיסטיקות הפעילות?</string>
|
||||
<string name="statistics">סטטיסטיקה</string>
|
||||
|
@ -880,6 +891,8 @@
|
|||
<string name="ns_receive_profile_switch_summary">קבלת החלפות פרופיל שהוגדרו בנייטסקאוט או ב-NSClient</string>
|
||||
<string name="ns_receive_offline_event">אחזר אירועים לא מקוונים</string>
|
||||
<string name="ns_receive_offline_event_summary">קבל אירועים לא מקוונים שנרשמו דרך נייטסקאוט או NSClient</string>
|
||||
<string name="ns_receive_tbr_eb">קבל מינון בזאלי זמני ובולוס מושהה</string>
|
||||
<string name="ns_receive_tbr_eb_summary">קבל מינוני בזאלי זמני ובולוסים מושהים שהופעלו ממכשיר עוקב</string>
|
||||
<string name="ns_receive_insulin">קבלת אינסולין</string>
|
||||
<string name="ns_receive_insulin_summary">קבלת אינסולין שהוזן באמצעות נייטסקאוט או NSClient (הוא לא מוזרק, רק מחושב רק כאינסולין פעיל)</string>
|
||||
<string name="ns_receive_carbs">קבלת פחמימות</string>
|
||||
|
@ -946,12 +959,34 @@
|
|||
<string name="light_theme">ערכת נושא בהירה</string>
|
||||
<string name="follow_system_theme">השתמש בערכת הנושא של המכשיר</string>
|
||||
<!-- WEAR OS-->
|
||||
<string name="wear_action_tempt_cancel_message">מבטל ערך מטרה זמני נוכחי</string>
|
||||
<string name="wear_action_tempt_unit_error">יחידות המידה שונות בין הטלפון והשעון!</string>
|
||||
<string name="wear_action_tempt_min_bg_error">ערך הסוכר המינימלי מחוץ לטווח!</string>
|
||||
<string name="wear_action_tempt_max_bg_error">ערך הסוכר המקסימלי מחוץ לטווח!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">ע\' מטרה זמני:\nמינ\': %1$s\nמקס\': %2$s\nמשך: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">ע\' מטרה זמני:\nמטרה: %1$s\n משך: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">ע\' מטרה זמני:\nסיבה: %1$s\nמטרה: %2$s\nמשך: %3$s</string>
|
||||
<string name="quick_wizard_message">אשף מהיר: %1$s\n אינס\': %2$.2f יח\'\nפחמ\': %3$d גר\'</string>
|
||||
<string name="wizard_result">מחשבון: %1$s\n אינס\': %2$.2f יח\'\nפחמ\': %3$d גר\'</string>
|
||||
<string name="overview_editquickwizard_show_on_device">הצג רשומה על המכשיר:</string>
|
||||
<string name="quick_wizard_not_available">האשף המהיר שנבחר אינו זמין, נא לרענן את האריח</string>
|
||||
<string name="wizard_no_actual_bg">אין נתוני סוכר לביסוס חישוב!</string>
|
||||
<string name="wizard_no_active_profile">לא הופעל פרופיל!</string>
|
||||
<string name="wizard_no_cob">הפחמימות הפעילות לא ידועות! חסרות קריאות סוכר או שאותחל היישום לאחרונה?</string>
|
||||
<string name="wizard_carbs_constraint">הפרת מגבלות פחמימה!</string>
|
||||
<string name="wizard_explain_calc">מחשבון (IC: %1$.1f, ISF: %2$.1f)</string>
|
||||
<string name="wizard_explain_carbs">פחמ\': %1$.2f יח\'</string>
|
||||
<string name="wizard_explain_cob">פחמ\': %1$.0f גר\' %2$.2f יח\'</string>
|
||||
<string name="wizard_explain_bg">סוכר: %1$.2f יח\'</string>
|
||||
<string name="wizard_explain_iob">אינ\' פעיל: %1$.2f יח\'</string>
|
||||
<string name="wizard_explain_superbolus">סופר בולוס: %1$.2f יח\'</string>
|
||||
<string name="wizard_explain_trend">מגמת 15 דק\': %1$.2f יח\'</string>
|
||||
<string name="wizard_explain_percent">אחוזים: %1$.2f יח\' x %2$d%% ≈ %3$.2f יח\'</string>
|
||||
<string name="wizard_constraint_bolus_size">הופעלה מגבלת אינסולין!\nלא ניתן להזריק %1$.2f יח\'</string>
|
||||
<string name="wizard_explain_tt">ע\' מטרה זמני: %1$s</string>
|
||||
<string name="wizard_explain_tt_to">%1$s ל-%2$s</string>
|
||||
<string name="wizard_pump_not_available">המשאבה אינה זמינה!</string>
|
||||
<string name="wear_unknown_action_string">פקודה לא ידועה:</string>
|
||||
<string name="overview_editquickwizard_percentage">אחוזים</string>
|
||||
<string name="app_default">ברירת המחדל של היישום</string>
|
||||
<string name="show_invalidated_records">הצג רשומות מבוטלות\\מחוקות</string>
|
||||
|
@ -970,6 +1005,10 @@
|
|||
<string name="count_selected">%1$d נבחרו</string>
|
||||
<string name="sort_label">מיין</string>
|
||||
<string name="dialog_canceled">דו-שיח בוטל</string>
|
||||
<string name="veryLow" comment="below 3.1">נמוך מאוד</string>
|
||||
<string name="low" comment="3.1-3.9">נמוך</string>
|
||||
<string name="high" comment="10.0-13.9">גבוה</string>
|
||||
<string name="veryHigh" comment="above 13.9">גבוה מאוד</string>
|
||||
<string name="below" comment="below "in range"">מתחת</string>
|
||||
<string name="in_range">בטווח</string>
|
||||
<string name="above" comment="above "in range"">מעל</string>
|
||||
|
@ -977,14 +1016,28 @@
|
|||
<string name="show_hide_records">החבא רשומות לולאה</string>
|
||||
<string name="widget_description">ווידג\'ט AndroidAPS</string>
|
||||
<string name="configure">הגדרת אטימות</string>
|
||||
<string name="loop_status">סטטוס הלולאה</string>
|
||||
<string name="graph_scale">קנה מידה של הגרף</string>
|
||||
<string name="profile1">פרופיל 1</string>
|
||||
<string name="profile2">פרופיל 2</string>
|
||||
<string name="login">התחברות</string>
|
||||
<string name="remove_all">הסר הכל</string>
|
||||
<string name="reset_start">אתחל התחלה</string>
|
||||
<string name="a11y_otp_qr_code">ברקוד QR ליצירת סיסמה חד פעמית</string>
|
||||
<string name="a11y_open_settings">פתח הגדרות</string>
|
||||
<string name="a11y_set_carb_timer">הגדרת אזעקה טיימר פחמימות</string>
|
||||
<string name="device_all">הכול</string>
|
||||
<string name="device_phone">טלפון</string>
|
||||
<string name="device_watch">שעון</string>
|
||||
<string name="a11y_only_on_watch">על השעון בלבד</string>
|
||||
<string name="a11y_only_on_phone">על הטלפון בלבד</string>
|
||||
<string name="a11y_drag_and_drop_handle">ידית גרירה</string>
|
||||
<string name="search">חיפוש</string>
|
||||
<!-- Aidex Cgms -->
|
||||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">Aidex</string>
|
||||
<string name="description_source_aidex">קבלת נתוני סוכר מחיישני GlucoRx Aidex.</string>
|
||||
<string name="blocked_by_charging">חסום ע\"י הגדרות טעינה</string>
|
||||
<string name="blocked_by_connectivity">חסום ע\"י הגדרות חיבור</string>
|
||||
<string name="no_watch_connected">(השעון לא מחובר)</string>
|
||||
</resources>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">\"주입되지 않은\" 인슐린양을 계산하여 시린지/펜 또는 prime 기능을 사용하여 인슐린을 주입합니다.</string>
|
||||
<string name="wronginsulin_donothing">특별한 조치를 취하지 않고, AndroidAPS가 결과적으로 높은 혈당 정도를 조정할 수 있도록 합니다.</string>
|
||||
<string name="iob_label">활성 인슐린 (IOB)</string>
|
||||
<string name="iob_which">올바른 답변을 모두 체크하세요.</string>
|
||||
<string name="iob_value">IOB 값은 실행된 임시 basal의 영향을 받습니다.</string>
|
||||
<string name="iob_hightemp">혈당이 목표보다 낮을 경우 높은 임시 basal은 실행되지 않습니다.</string>
|
||||
<string name="iob_negiob">운동 없이도 음수의 IOB (마이너스 IOB) 구간이 많을 경우, 프로파일이 너무 강한 것이며 인슐린 양을 적게 설정해야 합니다.</string>
|
||||
|
|
|
@ -155,6 +155,7 @@
|
|||
<string name="end_user_license_agreement">최종 사용자 라이선스 동의서</string>
|
||||
<string name="end_user_license_agreement_text">이 프로그램을 의학적 결정을 내리는 데 사용해서는 안되며, 여기에 대한 어떠한 보증도 없습니다. 이 프로그램의 품질과 성능에 관한 모든 위험은 사용자에게 있습니다.\nMUST NOT BE USED TO MAKE MEDICAL DECISIONS. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</string>
|
||||
<string name="end_user_license_agreement_i_understand">모두 이해하였고 동의합니다.</string>
|
||||
<string name="save">저장</string>
|
||||
<string name="reloadprofile">프로파일 새로고침</string>
|
||||
<string name="smscommunicator">SMS 통신기</string>
|
||||
<string name="smscommunicator_allowednumbers">허가된 전화번호</string>
|
||||
|
@ -849,5 +850,6 @@
|
|||
<string name="calculation_in_progress">계산 진행 중</string>
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="login">로그인</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Susileisti trūkstamą insulino kiekį švirkštu ar naudojantis infuzinės sistemos užpildymo funkcija.</string>
|
||||
<string name="wronginsulin_donothing">Nieko nedaryti ir leisti AndroidAPS koreguoti padidėjusį gliukozės kiekį kraujyje.</string>
|
||||
<string name="iob_label">Aktyvus insulinas organizme (AIO)</string>
|
||||
<string name="iob_which">Pasirinkite visus teisingus atsakymus.</string>
|
||||
<string name="iob_value">AIO reikšmei įtakos turi nustatyta laikina valandinė bazė.</string>
|
||||
<string name="iob_hightemp">Padidinta laikina bazė nebus nustatyta, jei kraujo glikemija yra žemiau nustatyto tikslo.</string>
|
||||
<string name="iob_negiob">Jei ilgą laiką stebima neigiama AIO reikšmė ir nėra fizinio aktyvumo, tai rodo, kad jūsų nustatymai yra per „agresyvūs“ ir kad jums reikia mažiau insulino nei nustatyta.</string>
|
||||
|
|
|
@ -159,6 +159,7 @@
|
|||
<string name="end_user_license_agreement">Licencinė sutartis su vartotoju</string>
|
||||
<string name="end_user_license_agreement_text">PROGRAMA NEGALI BŪTI NAUDOJAMA GYDYMO SPRENDIMAMS PRIIMTI. PAGAL GALIOJANČIUS ĮSTATYMUS PROGRAMA NESUTEIKIA JOKIŲ GARANTIJŲ VARTOTOJUI. JEI RAŠTU NENURODYTA KITAIP, PROGRAMOS AUTORINIŲ TEISIŲ TURĖTOJAS IR/AR KITOS ŠALYS PATEIKIA PROGRAMĄ \"KAIP YRA\" BE JOKIŲ GARANTIJŲ, TIEK AKIVAIZDŽIŲ, TIEK NUMANOMŲ, ĮSKAITANT, BET NEAPSIRIBOJANT GALIMYBĘ NAUDOTI PROGRAMĄ KOMERCINIAMS AR KITOKIEMS DALINIAMS TIKSLAMS. RIZIKĄ, KYLANČIĄ NAUDOJANT PROGRAMĄ PRISIIMA PATS VARTOTOJAS. JEI PROGRAMA VEIKIA NETINKAMAI, IŠLAIDOS, SUSIJUSIOS SU PROGRAMOS SERVISU, TAISYMU AR KOREGAVIMU, TENKA VARTOTOJUI.</string>
|
||||
<string name="end_user_license_agreement_i_understand">SUPRATAU IR SUTINKU</string>
|
||||
<string name="save">Išsaugoti</string>
|
||||
<string name="reloadprofile">Atnaujinti profilį</string>
|
||||
<string name="smscommunicator">SMS komunikatorius</string>
|
||||
<string name="smscommunicator_allowednumbers">Leidžiami telefono numeriai</string>
|
||||
|
@ -630,7 +631,6 @@
|
|||
<string name="needsystemwindowpermission">Norint gauti pranešimus, programai reikalingas sisteminio lango leidimas</string>
|
||||
<string name="needlocationpermission">Programai reikia vietos nustatymo leidimo, kad būtų galima naudoti Bluetooth ir WiFi</string>
|
||||
<string name="needstoragepermission">Aplikacijai reikia leidimo prieigai prie saugyklos, kad galėtų išsaugoti žurnalo įrašus ir eksportavimo nustatymus</string>
|
||||
<string name="needconnectpermission">Programai reikalinga Bluetooth prieigos teisė</string>
|
||||
<string name="request">Užklausa</string>
|
||||
<string name="open_navigation">Atidaryti meniu</string>
|
||||
<string name="close_navigation">Uždaryti meniu</string>
|
||||
|
@ -893,5 +893,7 @@
|
|||
<string name="not_available_full">Negalimas</string>
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="sort_label">Rūšiuoti</string>
|
||||
<string name="login">Prisijungti</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -123,6 +123,7 @@
|
|||
<string name="sensitivity_cannula">Het vastleggen van een canulewissel zet de Autosens-ratio terug naar 100%.</string>
|
||||
<string name="sensitivity_time">Sommige van de plugins hebben configureerbare tijdbereiken die kunnen worden ingesteld door de gebruiker.</string>
|
||||
<string name="sensitivity_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Configuration/Sensitivity-detection-and-COB.html</string>
|
||||
<string name="sensitivity_hint2">https://androidaps.readthedocs.io/nl/latest/Usage/Open-APS-features.html?highlight=Autosens#autosens</string>
|
||||
<string name="wrongcarbs_label">Koolhydraatinvoerfouten</string>
|
||||
<string name="wrongcarbs_whattodo">Wat moet u doen als u een onjuiste hoeveelheid koolhydraten hebt ingevoerd?</string>
|
||||
<string name="wrongcarbs_treatmentstab">Verwijder het onjuiste record in Behandelingen en voer de juiste koolhydraten opnieuw in.</string>
|
||||
|
@ -136,7 +137,6 @@
|
|||
<string name="wronginsulin_prime">Bolus een deel van je berekende \'gemiste\' insuline door een injectiespuit/pen of door de uitvulfunctie te gebruiken.</string>
|
||||
<string name="wronginsulin_donothing">Doe niets en laat AndroidAPS de resulterende hoge bloedglucosespiegel corrigeren.</string>
|
||||
<string name="iob_label">Insuline aan boord (IOB)</string>
|
||||
<string name="iob_which">Selecteer alle juiste antwoorden.</string>
|
||||
<string name="iob_value">De IOB-waarde wordt beïnvloed door eerdere tijdelijke basaalstanden.</string>
|
||||
<string name="iob_hightemp">Een hoge tijdelijke basaal zal niet worden ingesteld wanneer je bloedsuiker onder het streefdoel ligt.</string>
|
||||
<string name="iob_negiob">Negatieve IOB voor een aanzienlijke periode vrij van inspanning, suggereert dat je profiel te hoog is ingesteld, dus dat er minder insuline nodig is.</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Behandelingen veiligheid</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Max toegestane bolus [E]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Max toegestane koolhydraten [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">BG niveau waarbij lage glucose onderbreking wordt geactiveerd</string>
|
||||
<string name="nav_preferences_plugin">%1$s Instellingen</string>
|
||||
<string name="nav_preferences">Instellingen</string>
|
||||
<string name="nav_refreshtreatments">Haal behandelingen op van NS</string>
|
||||
|
@ -432,8 +433,8 @@
|
|||
<string name="ns_localbroadcasts_title">Activeer locaal delen.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">Dynamische ISF</string>
|
||||
<string name="DynISFAdjust_title">Dynamische ISF aanpassingsfactor %%</string>
|
||||
<string name="DynISFAdjust_summary">Aanpassingsfactor voor Dynamische ISF. Stel meer dan 100%% in voor een agressievere correctie dosis en minder dan 100%% voor minder agressieve correcties.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Dynamische Isf aanpassingsfactor %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Aanpassingsfactor voor DynamicISF. Stel meer dan 100% in voor een agressievere correctie en minder dan 100% voor minder agressieve correctie.</string>
|
||||
<string name="enableuam">Activeer UAM</string>
|
||||
<string name="enablesmb">Activeer SMB</string>
|
||||
<string name="enablesmb_summary">SMB in plaats van tijdelijke basalen voor snellere reactie</string>
|
||||
|
@ -592,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Deze waarde heet MAX IOB in OpenAPS context\nOpenAPS zal geen extra insuline toedienen als de actuele IOB onderstaande waarde overschreden heeft</string>
|
||||
<string name="absorption_cutoff_title">Maximum maaltijd absorptie tijd [uur]</string>
|
||||
<string name="absorption_cutoff_summary">Tijdspanne waarbinnen elke maaltijd volledig is opgenomen. Resterende KH worden niet mee gerekend.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">BG waarde waarbij insuline afgifte wordt onderbroken. De standaard waarde gebruikt het standaard doelmodel. Gebruiker kan waarde instellen tussen 60 mg/dl (3.3 mmol/l) en 100mg/dl(5.6mmol/l). Waarden lager dan 65/3.6 resulteren in gebruik van het standaard model</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Toon notities veld in behandeling dialoogvensters</string>
|
||||
<string name="next_button">Volgende</string>
|
||||
<string name="previous_button">Vorige</string>
|
||||
|
@ -604,7 +606,11 @@
|
|||
<string name="secondcarbsincrement">Tweede koolhydraten increment</string>
|
||||
<string name="thirdcarbsincrement">Derde koolhydraten increment</string>
|
||||
<string name="cgm">CGM</string>
|
||||
<string name="ns_cellular">Mobiele verbinding gebruiken</string>
|
||||
<string name="ns_wifi">Gebruik WiFi verbinding</string>
|
||||
<string name="ns_wifi_ssids">WiFi SSID</string>
|
||||
<string name="ns_charging">Tijdens opladen</string>
|
||||
<string name="ns_battery">Op batterij</string>
|
||||
<string name="connectionsettings_title">Verbindings instellingen</string>
|
||||
<string name="ns_wifi_allowedssids">Toegelaten SSIDs (gescheiden door puntkomma)</string>
|
||||
<string name="ns_allowroaming">Sta verbinding tijdens roaming toe</string>
|
||||
|
@ -639,7 +645,6 @@
|
|||
<string name="needsystemwindowpermission">Toepassing vereist systeemvenstermachtiging voor meldingen</string>
|
||||
<string name="needlocationpermission">App heeft locatie toestemming nodig voor Bluetooth scan en WiFi identificatie</string>
|
||||
<string name="needstoragepermission">Applicatie heeft toestemming nodig om log bestanden op te slaan en instellingen te exporteren</string>
|
||||
<string name="needconnectpermission">Applicatie heeft Bluetooth toestemming nodig</string>
|
||||
<string name="request">Verzoek</string>
|
||||
<string name="open_navigation">Open navigatie</string>
|
||||
<string name="close_navigation">Sluit navigatie</string>
|
||||
|
@ -679,6 +684,8 @@
|
|||
<string name="error_adding_treatment_message">Een Behandeling (insuline: %1$.2f, koolhydraten: %2$d, in: %3$s) niet konden worden toegevoegd aan Behandelingen. Gelieve te controleren en handmatig een record toe te voegen indien nodig.</string>
|
||||
<string name="generated_ecarbs_note">eCarbs: %1$d g (%2$d h), vertraging: %3$d m</string>
|
||||
<string name="openaps_noasdata">Geen autosens-gegevens beschikbaar</string>
|
||||
<string name="log_files">Logbestanden</string>
|
||||
<string name="miscellaneous">Overige</string>
|
||||
<string name="nav_logsettings">Log instellingen</string>
|
||||
<string name="resettodefaults">Terug naar standaardinstellingen</string>
|
||||
<string name="nsmalfunction">NSClient werkt niet goed. Overweg een herstart van NS en NSClient.</string>
|
||||
|
@ -771,6 +778,11 @@
|
|||
<string name="invalidpct">Ongeldig % invoer</string>
|
||||
<string name="average">Gemiddelde</string>
|
||||
<string name="tir">TIR</string>
|
||||
<string name="day_tir">TIR overdag</string>
|
||||
<string name="night_tir">TIR s\'nachts</string>
|
||||
<string name="detailed_14_days">14 dagen details</string>
|
||||
<string name="std_deviation">SD: %1$s</string>
|
||||
<string name="hba1c">HbA1c: </string>
|
||||
<string name="activitymonitor">Activiteitsmonitor</string>
|
||||
<string name="doyouwantresetstats">Wil je de activiteitenstatistieken resetten?</string>
|
||||
<string name="statistics">Statistieken</string>
|
||||
|
@ -957,7 +969,7 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Max BG buiten bereik!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Tijdelijk streefdoel:\nMin: %1$s\nMax: %2$s\nDuur: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Tijdelijk streefdoel:\nDoel: %1$s\nDuur: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Tijdelijk streefdoel:\Reden: %1$s\nDoel: %2$s\nDuur: %3$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Tijdelijk streefdoel:\nReden: %1$s\nDoel: %2$s\nDuur: %3$s</string>
|
||||
<string name="quick_wizard_message">QuickWizard: %1$s\nInsuline: %2$.2fE\nKoolhy.: %3$dg</string>
|
||||
<string name="wizard_result">Reken. Wizard:\nInsuline: %1$.2fE\nKoolhy.: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Toon invoer op apparaat:</string>
|
||||
|
@ -997,6 +1009,10 @@
|
|||
<string name="count_selected">%1$d geselecteerd</string>
|
||||
<string name="sort_label">Sorteren</string>
|
||||
<string name="dialog_canceled">Dialoog geannuleerd</string>
|
||||
<string name="veryLow" comment="below 3.1">Zeer laag</string>
|
||||
<string name="low" comment="3.1-3.9">Laag</string>
|
||||
<string name="high" comment="10.0-13.9">Hoog</string>
|
||||
<string name="veryHigh" comment="above 13.9">Zeer hoog</string>
|
||||
<string name="below" comment="below "in range"">Onder</string>
|
||||
<string name="in_range">Binnen bereik</string>
|
||||
<string name="above" comment="above "in range"">Boven</string>
|
||||
|
@ -1004,6 +1020,7 @@
|
|||
<string name="show_hide_records">Verberg loop records</string>
|
||||
<string name="widget_description">AndroidAPS widget</string>
|
||||
<string name="configure">Configureer transparantie</string>
|
||||
<string name="loop_status">Loop status</string>
|
||||
<string name="graph_scale">Grafiek schaal</string>
|
||||
<string name="profile1">Profiel 1</string>
|
||||
<string name="profile2">Profiel 2</string>
|
||||
|
@ -1023,4 +1040,6 @@
|
|||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">Aidex</string>
|
||||
<string name="description_source_aidex">Ontvang BG waarden van GlucoRx Aidex CGMS.</string>
|
||||
<string name="blocked_by_charging">Geblokkeerd door oplaad instellingen</string>
|
||||
<string name="blocked_by_connectivity">Geblokkeerd door verbindings instellingen</string>
|
||||
</resources>
|
||||
|
|
|
@ -136,8 +136,20 @@
|
|||
<string name="wronginsulin_compare">Sammenlign verdiene i AndroidAPS og pumpehistorikken (hvis pumpen støtter dette).</string>
|
||||
<string name="wronginsulin_prime">Gi en bolus med en del av det insulinet du mangler enten med penn eller ved å bruke prime funksjonen.</string>
|
||||
<string name="wronginsulin_donothing">Ikke gjør noe og la AndroidAPS korrigere eventuelle høye blodsukkerverdier.</string>
|
||||
<string name="cob_label">Karbohydrater ombord (COB)</string>
|
||||
<string name="cob_question">Hvordan vil endring av ISF-verdi påvirke COB-beregning?</string>
|
||||
<string name="cob_longer">Økning av ISF gjør at karbohydrater absorberes over lengre tid</string>
|
||||
<string name="cob_shorter">Økning av ISF gjør at karbohydrater absorberes over kortere tid</string>
|
||||
<string name="cob_no_effect">Økning av ISF påvirker ikke beregningen av absorbering av karbohydrater</string>
|
||||
<string name="cob2_question">Hvordan vil endring av IC-verdi påvirke COB-beregning?</string>
|
||||
<string name="cob2_longer">Økning av IC gjør at karbohydrater absorberes over lengre tid</string>
|
||||
<string name="cob2_shorter">Økning av IC gjør at karbohydrater absorberes over kortere tid</string>
|
||||
<string name="cob2_no_effect">Økning av IC påvirker ikke beregningen av absorbering av karbohydrater</string>
|
||||
<string name="cob3_question">Hvordan vil endring av profil-prosent påvirke COB-beregning?</string>
|
||||
<string name="cob3_longer">Ved å sette profilen til 150% vil karbohydrater absorberes over lengre tid</string>
|
||||
<string name="cob3_shorter">Ved å sette profilen til 150% vil karbohydrater absorberes over kortere tid</string>
|
||||
<string name="cob3_no_effect">Ved å sette profilen til 150% påvirkes ikke beregningen av absorbering av karbohydrater</string>
|
||||
<string name="iob_label">Aktivt insulin (IOB)</string>
|
||||
<string name="iob_which">Marker alle riktige svar.</string>
|
||||
<string name="iob_value">IOB verdi påvirkes av midlertidige temp basaler.</string>
|
||||
<string name="iob_hightemp">Høy temp basal vil ikke bli gitt når ditt blodsukker er under målverdi.</string>
|
||||
<string name="iob_negiob">Negativ IOB i en lengre periode selv om du ikke trener tyder på at profilen din gir for mye insulin og kanskje bør reduseres i innstillingene.</string>
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
<string name="treatmentssafety_title">Sikkerhet ved behandlinger</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maks tillat bolus [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maks tillat karbo [g]</string>
|
||||
<string name="nav_preferences_plugin">%1$s innstillinger</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Insulintilførsel stoppes når BS er under denne terskelverdien</string>
|
||||
<string name="nav_preferences_plugin">%1$s Innstillinger</string>
|
||||
<string name="nav_preferences">Innstillinger</string>
|
||||
<string name="nav_refreshtreatments">Oppdater behandlinger fra NS</string>
|
||||
<string name="nav_resetdb">Nullstill databasene</string>
|
||||
|
@ -14,12 +15,12 @@
|
|||
<string name="nav_exit">Avslutt</string>
|
||||
<string name="alert_dialog_permission_battery_optimization_failed">Det ser ikke ut som mobilen støtter registrering av apper som unntas fra batterioptimalisering - du kan oppleve ytelsesproblemer.</string>
|
||||
<string name="description_actions">Knapper for rask tilgang til ofte brukte funksjoner</string>
|
||||
<string name="description_config_builder">Brukt for innstilling av aktive plugin</string>
|
||||
<string name="description_config_builder">Brukes for innstilling av aktive plugins</string>
|
||||
<string name="description_objectives">Opplæringsprogram</string>
|
||||
<string name="description_food">Viser forhåndsinnstillinger for mat som er definert i Nightscout</string>
|
||||
<string name="description_insulin_rapid">Innstillinger for Humalog og NovoRapid / NovoLog insulin</string>
|
||||
<string name="description_food">Viser forhåndsinnstillinger for mat fra Nightscout</string>
|
||||
<string name="description_insulin_rapid">Innstillinger for Humalog og NovoRapid / NovoLog</string>
|
||||
<string name="description_insulin_ultra_rapid">Innstillinger for Fiasp</string>
|
||||
<string name="description_insulin_lyumjev">Insulin innstillinger for Lyumjev</string>
|
||||
<string name="description_insulin_lyumjev">Innstillinger for Lyumjev</string>
|
||||
<string name="description_insulin_free_peak">Lar deg stille inn tidspunktet for toppen av insulinvirkningen. Bør bare benyttes av erfarne brukere</string>
|
||||
<string name="description_loop">Aktiver eller deaktiver hendelsen som trigger loop.</string>
|
||||
<string name="description_ns_client">Synkroniserer dine data med Nightscout</string>
|
||||
|
@ -31,17 +32,17 @@
|
|||
<string name="description_profile_local">Definer en profil som er tilgjengelig offline.</string>
|
||||
<string name="description_pump_virtual">Integrasjon mot pumper som ikke støttes av AndroidAPS (åpen loop)</string>
|
||||
<string name="description_sensitivity_aaps">Sensitiviteten beregnes på samme måte som i Oref0, men du kan angi hvor mye av historikken som skal tas med i beregningen. Minimum opptak av karbohydrater beregnes ut fra maks karbohydratopptak angitt i dine innstillinger.</string>
|
||||
<string name="description_sensitivity_oref1">Sensitivitet beregnes fra 8t og 24t historiske dat (velger alltid det resultatet som gir høyest insulinsensitivitet. Karbohydrater som ikke er absorbert blir avsluttet etter tiden som er angitt i innstillinger. Plugin beregner også UAM.</string>
|
||||
<string name="description_sensitivity_oref1">Sensitivitet beregnes fra 8t og 24t historiske data (velger alltid det resultatet som gir høyest insulinsensitivitet). Karbohydrater (som ikke er absorbert) blir avsluttet etter tiden som er angitt i innstillinger. Plugin beregner også UAM.</string>
|
||||
<string name="description_sensitivity_weighted_average">Sensitivitet beregnes som en vektet gjennomsnittsverdi av avvikene. Ferske avvik har høyere vekting. Minimum opptak av karbohydrater beregnes ut fra maks opptakstid for karbohydrater angitt i dine innstillinger. Denne algoritmen er den raskeste for å justere endringer i sensitivitet.</string>
|
||||
<string name="description_source_eversense">Motta BS verdier fra den modifiserte Eversense appen.</string>
|
||||
<string name="description_source_glimp">Motta BS verdier fra Glimp.</string>
|
||||
<string name="description_source_mm640g">Motta BS verdier fra 600SeriesAndroidUploader.</string>
|
||||
<string name="description_source_ns_client">Last ned BS verdier fra Nightscout</string>
|
||||
<string name="description_source_xdrip">Motta BS verdier fra xDrip+.</string>
|
||||
<string name="description_source_eversense">Motta BS-verdier fra den modifiserte Eversense-appen.</string>
|
||||
<string name="description_source_glimp">Motta BS-verdier fra Glimp.</string>
|
||||
<string name="description_source_mm640g">Motta BS-verdier fra 600SeriesAndroidUploader.</string>
|
||||
<string name="description_source_ns_client">Last ned BS-verdier fra Nightscout</string>
|
||||
<string name="description_source_xdrip">Motta BS-verdier fra xDrip+.</string>
|
||||
<string name="description_treatments">Lagre data om alle behandlinger som er utført</string>
|
||||
<string name="description_wear">Monitorer og kontroller AndroidAPS med din WearOS klokke.</string>
|
||||
<string name="description_wear">Overvåke og styre AndroidAPS med din WearOS-klokke.</string>
|
||||
<string name="description_xdrip_status_line">Vis informasjon om loop på din xDrip+ urskive.</string>
|
||||
<string name="description_sms_communicator">Fjernstyr AndroidAPS med SMS kommandoer.</string>
|
||||
<string name="description_sms_communicator">Fjernstyre AndroidAPS med SMS-kommandoer.</string>
|
||||
<string name="treatments_insulin_label_string">Insulin:</string>
|
||||
<string name="treatments_carbs_label_string">Karbo:</string>
|
||||
<string name="treatments_iob_label_string">IOB:</string>
|
||||
|
@ -69,7 +70,7 @@
|
|||
<string name="openapsma_mealdata_label">Måltidsdata</string>
|
||||
<string name="result">Resultat</string>
|
||||
<string name="result_insulin_carbs">Resultat: %1$s %2$s</string>
|
||||
<string name="openapsma_noglucosedata">Ingen BS data tilgjengelig</string>
|
||||
<string name="openapsma_noglucosedata">Ingen BS-data tilgjengelig</string>
|
||||
<string name="openapsma_request_label">Forespørsel</string>
|
||||
<string name="delta">Delta</string>
|
||||
<string name="sms_delta">Delta:</string>
|
||||
|
@ -82,7 +83,7 @@
|
|||
<string name="configbuilder_profile">Profil</string>
|
||||
<string name="configbuilder_profile_description">Hvilken profil bør AndroidAPS bruke?</string>
|
||||
<string name="configbuilder_aps">APS</string>
|
||||
<string name="configbuilder_aps_description">Hvilken APS algoritme skal brukes for administrasjon av behandlinger?</string>
|
||||
<string name="configbuilder_aps_description">Hvilken algoritme skal APS benytte for behandlinger?</string>
|
||||
<string name="configbuilder_general">Generelt</string>
|
||||
<string name="configbuilder_general_description">Det er noen generelle plugins som kan være nyttige.</string>
|
||||
<string name="configbuilder_constraints_description">Hvilke begrensninger brukes?</string>
|
||||
|
@ -91,12 +92,12 @@
|
|||
<string name="configbuilder_loop_description">Bruk dette for å aktivere AndroidAPS loop integrasjon.</string>
|
||||
<string name="loop_aps_label">APS</string>
|
||||
<string name="loop_constraintsprocessed_label">Etter behandling av begrensninger</string>
|
||||
<string name="loop_tbrsetbypump_label">Temp Basal satt av pumpen</string>
|
||||
<string name="loop_tbrsetbypump_label">Temp basal satt av pumpen</string>
|
||||
<string name="noapsselected">INGEN APS ER VALGT ELLER HAR LEVERT RESULTAT</string>
|
||||
<string name="safety">Sikkerhet</string>
|
||||
<string name="openapsma_disabled">Plugin er deaktivert</string>
|
||||
<string name="constraints_violation">Brudd på begrensninger</string>
|
||||
<string name="treatmentdeliveryerror">Er registrert en feil med bolus leveransen. Sjekk manuelt om den er levert og hvor mye!</string>
|
||||
<string name="treatmentdeliveryerror">Det er registrert en feil med bolus-leveransen. Sjekk manuelt om den er levert og hvor mye</string>
|
||||
<string name="setbasalquestion">Aksepter ny temp basal:</string>
|
||||
<string name="overview_treatment_label">Behandling</string>
|
||||
<string name="overview_calculator_label">Kalkulator</string>
|
||||
|
@ -104,24 +105,24 @@
|
|||
<string name="sms_bolus">Bolus:</string>
|
||||
<string name="sms_basal">Basal:</string>
|
||||
<string name="changeyourinput">Endre dine inndata!</string>
|
||||
<string name="configbuilder_bgsource">BS kilde</string>
|
||||
<string name="configbuilder_bgsource">BS-kilde</string>
|
||||
<string name="configbuilder_bgsource_description">Hvor skal AndroidAPS hente sine data fra?</string>
|
||||
<string name="xdrip">xDrip+</string>
|
||||
<string name="apsmode_title">APS modus</string>
|
||||
<string name="closedloop">Lukket loop</string>
|
||||
<string name="openloop">Åpen loop</string>
|
||||
<string name="lowglucosesuspend">Stopp hvis lavt BS</string>
|
||||
<string name="closedloop">Lukket Loop</string>
|
||||
<string name="openloop">Åpen Loop</string>
|
||||
<string name="lowglucosesuspend">Stopp ved lavt BS</string>
|
||||
<string name="disabledloop">Loop er deaktivert</string>
|
||||
<string name="openloop_newsuggestion">Ny anbefaling tilgjengelig</string>
|
||||
<string name="carbssuggestion">Karbo forslag</string>
|
||||
<string name="unsupportednsversion">Versjonen av Nightscout støttes ikke</string>
|
||||
<string name="treatments_wizard_basaliob_label">Basal IOB</string>
|
||||
<string name="bolusconstraintapplied">Bolus begrensning utført</string>
|
||||
<string name="carbsconstraintapplied">Karbohydrat begrensning utført</string>
|
||||
<string name="bolusconstraintapplied">Bolus-begrensning utført</string>
|
||||
<string name="carbsconstraintapplied">Karbohydrat-begrensning utført</string>
|
||||
<string name="careportal_newnstreatment_other">Annet</string>
|
||||
<string name="careportal_newnstreatment_meter">Meter</string>
|
||||
<string name="careportal_newnstreatment_sensor">Sensor</string>
|
||||
<string name="carb_time_label">Karbo tid</string>
|
||||
<string name="carb_time_label">Karbo-tid</string>
|
||||
<string name="careportal_newnstreatment_duration_label">Varighet</string>
|
||||
<string name="profile_label">Profil</string>
|
||||
<string name="careportal_newnstreatment_glucosetype">Glukosetype</string>
|
||||
|
@ -129,7 +130,7 @@
|
|||
<string name="overview_extendedbolus_button">Forlenget bolus</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Nightscout versjon:</string>
|
||||
<string name="missing_carbs">Mangler %1$d g</string>
|
||||
<string name="exported">Innstillinger lagret</string>
|
||||
<string name="exported">Innstillinger er eksportert</string>
|
||||
<string name="ue_exported">Brukeroppføringer er eksportert</string>
|
||||
<string name="export_to">Eksporter innstillinger til</string>
|
||||
<string name="import_from">Importer innstillinger fra</string>
|
||||
|
@ -162,27 +163,27 @@
|
|||
<string name="end_user_license_agreement_i_understand">JEG FORSTÅR OG GODTAR</string>
|
||||
<string name="save">Lagre</string>
|
||||
<string name="reloadprofile">Les inn profil på nytt</string>
|
||||
<string name="smscommunicator">SMS tjeneste</string>
|
||||
<string name="smscommunicator">SMS-tjeneste</string>
|
||||
<string name="smscommunicator_allowednumbers">Godkjente mobilnumre</string>
|
||||
<string name="smscommunicator_allowednumbers_summary">+XXXXXXXXXX;+YYYYYYYYYY</string>
|
||||
<string name="smscommunicator_bolusreplywithcode">For å levere bolus på %1$.2fE, svar med kode %2$s</string>
|
||||
<string name="smscommunicator_mealbolusreplywithcode">For å levere måltidsbolus på %1$.2fE, svar med kode %2$s</string>
|
||||
<string name="smscommunicator_temptargetwithcode">For å sette Temp Target på %1$s, svar med kode %2$s</string>
|
||||
<string name="smscommunicator_temptargetcancel">For å avbryte Temp Target, svar med kode %1$s</string>
|
||||
<string name="smscommunicator_stopsmswithcode">For å deaktivere fjernstyring via SMS meldinger, svar med kode %1$s.\n\nHusk at du vil kunne reaktivere den igjen kun fra AAPS master telefon.</string>
|
||||
<string name="smscommunicator_stoppedsms">Fjernstyring via SMS meldinger er stanset. For å reaktivere, bruk AAPS på master telefonen.</string>
|
||||
<string name="smscommunicator_stopsmswithcode">For å deaktivere fjernstyring via SMS-meldinger, svar med kode %1$s.\n\nHusk at du vil kunne reaktivere den igjen kun fra AAPS hovedtelefon.</string>
|
||||
<string name="smscommunicator_stoppedsms">Fjernstyring via SMS-meldinger er stanset. For å reaktivere, bruk AAPS på hovedtelefonen.</string>
|
||||
<string name="smscommunicator_calibrationreplywithcode">For å sende kalibrering %1$.2f, svar med kode %2$s</string>
|
||||
<string name="smscommunicator_bolusfailed">Bolus mislyktes</string>
|
||||
<string name="smscommunicator_remotebolusmindistance_summary">Minimum antall minutter som må forløpe mellom en fjernstyrt bolus og den neste</string>
|
||||
<string name="smscommunicator_remotebolusmindistance">Minimum antall minutter mellom en fjernstyrt bolus og neste</string>
|
||||
<string name="smscommunicator_remotebolusmindistance_caveat">For din egen sikkerhet, for å endre denne innstillingen må du legge til minst 2 telefonnumre.</string>
|
||||
<string name="smscommunicator_remotebolusmindistance_caveat">For din egen sikkerhet, må du legge til minst 2 telefonnumre for å endre denne innstillingen.</string>
|
||||
<string name="bolusrequested">Skal levere %1$.2f E</string>
|
||||
<string name="smscommunicator_bolusdelivered">Bolus %1$.2f E levert vellykket</string>
|
||||
<string name="smscommunicator_mealbolusdelivered">Måltidsbolus %1$.2f E levert vellykket</string>
|
||||
<string name="smscommunicator_mealbolusdelivered_tt">Temp target på %1$s er satt for %2$d minutter</string>
|
||||
<string name="smscommunicator_tt_set">Temp target på %1$s for %2$d minutter ble vellykket definert</string>
|
||||
<string name="smscommunicator_tt_canceled">Temp Target ble vellykket avbrutt</string>
|
||||
<string name="smscommunicator_remotecommandsallowed">Tillat fjernstyring via SMS meldinger</string>
|
||||
<string name="smscommunicator_bolusdelivered">Bolus på %1$.2f E er levert</string>
|
||||
<string name="smscommunicator_mealbolusdelivered">Måltidsbolus på %1$.2f E er levert</string>
|
||||
<string name="smscommunicator_mealbolusdelivered_tt">Temp target på %1$s er satt i %2$d minutter</string>
|
||||
<string name="smscommunicator_tt_set">Temp target på %1$s i %2$d minutter ble lagret</string>
|
||||
<string name="smscommunicator_tt_canceled">Temp Target ble fjernet</string>
|
||||
<string name="smscommunicator_remotecommandsallowed">Tillat fjernstyring via SMS-meldinger</string>
|
||||
<string name="smscommunicator_loophasbeendisabled">Loop har blitt deaktivert</string>
|
||||
<string name="smscommunicator_loophasbeenenabled">Loop har blitt aktivert</string>
|
||||
<string name="smscommunicator_loopisenabled">Loop er aktivert</string>
|
||||
|
@ -226,9 +227,9 @@
|
|||
<string name="mealbolus">Måltid</string>
|
||||
<string name="correctionbous">Korreksjon</string>
|
||||
<string name="actions">Handlinger</string>
|
||||
<string name="ns_upload_only">(FARLIG Å DEAKTIVERE) Kun NS opplast</string>
|
||||
<string name="ns_upload_only">(FARLIG Å DEAKTIVERE) Kun NS opplasting</string>
|
||||
<string name="ns_upload_only_summary">Kun NS opplasting (deaktivert sync). Ikke effektiv på SGV med mindre en lokal kilde som xDrip+ er valgt. Ikke effektiv på Profiler mens NS-Profiler brukes.\n!!! ADVARSEL !!! Deaktivering av dette alternativet kan føre til funksjonsfeil og overdosering av insulin hvis noen av dine komponenter (AAPS, NS, xDrip+) er feil konfigurert. Observer at data som vises i AAPS samsvarer med pumpestatus!</string>
|
||||
<string name="pumpNotInitialized">Pumpen ikke initialisert!</string>
|
||||
<string name="pumpNotInitialized">Pumpen er ikke startet!</string>
|
||||
<string name="primefill">Prime/fylling</string>
|
||||
<string name="fillwarning">Kontroller at mengden samsvarer med spesifikasjonen for slangesettet ditt!</string>
|
||||
<string name="fillbolus_title">Standardverdier for påfyll/prime</string>
|
||||
|
@ -256,11 +257,11 @@
|
|||
<string name="localprofile">Profil</string>
|
||||
<string name="openapsama">OpenAPS AMA</string>
|
||||
<string name="array_of_elements">Liste med %1$d elementer.\nFaktisk verdi:</string>
|
||||
<string name="openapsma_autosensdata_label">Autosens data</string>
|
||||
<string name="openapsma_autosensdata_label">Autosens-data</string>
|
||||
<string name="openapsma_scriptdebugdata_label">Script feilsøking</string>
|
||||
<string name="openapsama_useautosens">Bruk Autosens funksjon</string>
|
||||
<string name="refresheventsfromnightscout">Gjenoppfrisk fra NS</string>
|
||||
<string name="deletefuturetreatments">Slett behandlinger i fremtiden</string>
|
||||
<string name="deletefuturetreatments">Slett fremtidige behandlinger</string>
|
||||
<string name="actions_shortname">ACT</string>
|
||||
<string name="configbuilder_shortname">KONF</string>
|
||||
<string name="loop_shortname">LOOP</string>
|
||||
|
@ -281,12 +282,12 @@
|
|||
<string name="openapsama_current_basal_safety_multiplier_summary">Standardverdi: 4 Dette er en viktig OpenAPS sikkerhetsbegrensning. Dette begrenser dine temp basal til max 4 ganger din nåværende basal dose, uansett hva som er maks basal i pumpen. Dette er for å unngå at man setter farlige høye maks basal doser uten at man har forstått algoritmene. Når du taket i denne begrensningen bør du i stedet fokusere på å endre andre innstillinger.</string>
|
||||
<string name="openapsama_autosens_max_summary">Standardverdi: 1.2\nDetta er en multiplikatorbegrensning for autosens (og snart autotune) som begrenser at autosens ikke kan øke med mer enn 20%%, som dermed begrenser hvor mye autosens kan justere opp dine basaler, hvor mye ISK kan reduseres og hvor lavt BS målverdi kan settes.</string>
|
||||
<string name="openapsama_autosens_min_summary">Standardverdi: 0.7\nDette er en multiplikatorbegrensning for autosens sikkerhet. Den begrenser autosens til å redusere basalverdier, og øke isulinssensitivitet (ISF) og BS mål med ikke mer enn enn 30%.</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Autosens justerer også BS målverdier</string>
|
||||
<string name="openapsama_autosens_adjusttargets_summary">Standard verdi: sann\nGir autosens tillatelse til å justere BS mål, i tillegg til ISF og basaler.</string>
|
||||
<string name="openapsama_bolussnooze_dia_divisor_summary">Standard verdi: 2\nBolus snooze er aktivt etter at du har gitt en måltidsbolus slik at loop ikke skal forsøke å sette lav-temp når du nettopp har spist. I dette eksempelet brukesg standardverdi på 2, så med en 3 timers DIA vil bolus snooze begrensning gradvis forsvinne etter 1.5 timer (3DIA / 2). Bolus snooze brukes ikke hvis SMB er aktivert.</string>
|
||||
<string name="openapsama_min_5m_carbimpact_summary">Standardverdi er: 3.0 (AMA) eller 8.0 (SMB). Dette er grunninnstillingen for KH opptak per 5 minutt. Den påvirker hvor raskt COB skal reduseres, og benyttes i beregning av fremtidig BS kurve når BS enten synker eller øker mer enn forventet. Standardverdi er 3mg/dl/5 min.</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Autosens justerer også BS-målverdier</string>
|
||||
<string name="openapsama_autosens_adjusttargets_summary">Standard verdi: sann\nGir autosens tillatelse til å justere BS-mål, i tillegg til ISF og basaler.</string>
|
||||
<string name="openapsama_bolussnooze_dia_divisor_summary">Standard verdi: 2\nBolus-snooze er aktivt etter at du har gitt en måltidsbolus slik at loop ikke skal forsøke å sette lav-temp når du nettopp har spist. I dette eksempelet brukes standardverdi på 2, så med en 3 timers DIA vil bolus-snoozebegrensning gradvis forsvinne etter 1.5 timer (3DIA / 2). Bolus-snooze brukes ikke hvis SMB er aktivert.</string>
|
||||
<string name="openapsama_min_5m_carbimpact_summary">Standardverdi er: 3.0 (AMA) eller 8.0 (SMB). Dette er grunninnstillingen for KH-opptak per 5 minutt. Den påvirker hvor raskt COB skal reduseres, og benyttes i beregning av fremtidig BS-kurve når BS enten synker eller øker mer enn forventet. Standardverdi er 3mg/dl/5 min.</string>
|
||||
<string name="openapsama_link_to_preferncejson_doc_txt">Advarsel!\nNormalt vil du ikke trenge å endre verdiene under. Vennligst TRYKK HER og LES teksten for å være sikker på at du FORSTÅR konsekvensene før du gjør endringer.</string>
|
||||
<string name="smscommunicator_invalidphonennumber">Ugyldig SMS mobilnummer</string>
|
||||
<string name="smscommunicator_invalidphonennumber">Ugyldig mobilnummer for SMS</string>
|
||||
<string name="overview_calibration">Kalibrering</string>
|
||||
<string name="xdripnotinstalled">xDrip+ ikke installert</string>
|
||||
<string name="calibrationsent">Kalibrering er sendt til xDrip+</string>
|
||||
|
@ -294,7 +295,7 @@
|
|||
<string name="smscommunicator_calibrationfailed">xDrip+ tar ikke imot kalibreringer</string>
|
||||
<string name="pumpsuspended">Pumpen er pauset</string>
|
||||
<string name="executing">Utfører</string>
|
||||
<string name="virtualpump_settings">Virtuelle pumpe innstillinger</string>
|
||||
<string name="virtualpump_settings">Innstillinger for virtuell pumpe</string>
|
||||
<string name="virtualpump_uploadstatus_title">Last opp status til Nightscout</string>
|
||||
<string name="nsclientinternal">NSClient</string>
|
||||
<string name="nsclientinternal_shortname">NSCI</string>
|
||||
|
@ -304,20 +305,20 @@
|
|||
<string name="nsclientinternal_title">NSClient</string>
|
||||
<string name="nsclientinternal_url_title">Nightscout URL</string>
|
||||
<string name="nsclientinternal_url_dialogmessage">Oppgi din Nightscout URL</string>
|
||||
<string name="nsclientinternal_secret_title">Nightscout API secret</string>
|
||||
<string name="nsclientinternal_secret_dialogtitle">Nightscout API secret</string>
|
||||
<string name="nsclientinternal_secret_dialogmessage">Oppgi NS API secret (min 12 tegn)</string>
|
||||
<string name="nsclientinternal_secret_title">Nightscout API-nøkkel</string>
|
||||
<string name="nsclientinternal_secret_dialogtitle">Nightscout API-nøkkel</string>
|
||||
<string name="nsclientinternal_secret_dialogmessage">Oppgi NS API-nøkkel (min 12 tegn)</string>
|
||||
<string name="deliver_now">Lever nå</string>
|
||||
<string name="clear_queue">Tøm kø</string>
|
||||
<string name="show_queue">Vis kø</string>
|
||||
<string name="queue">Kø:</string>
|
||||
<string name="status">Status:</string>
|
||||
<string name="clearlog">Tøm logg</string>
|
||||
<string name="nowritepermission">NSCLIENT har ingen skriverettighet. Feil API secret?</string>
|
||||
<string name="nowritepermission">NSCLIENT har ingen skriverettighet. Feil API-nøkkel?</string>
|
||||
<string name="wear_settings">Klokkeinnstillinger</string>
|
||||
<string name="wear_detailedIOB_title">Vis detaljert IOB</string>
|
||||
<string name="wear_detailedIOB_summary">Vis IOB med bolus och basal IOB på klokke</string>
|
||||
<string name="nosuccess">mislykket - sjekk telefonen</string>
|
||||
<string name="wear_detailedIOB_summary">Splitt IOB til bolus- og basal-IOB på klokken</string>
|
||||
<string name="nosuccess">feilet - sjekk telefonen</string>
|
||||
<string name="notavailable">n/a</string>
|
||||
<string name="patientage">Pasienttype</string>
|
||||
<string name="child">Barn</string>
|
||||
|
@ -325,8 +326,8 @@
|
|||
<string name="adult">Voksen</string>
|
||||
<string name="resistantadult">Insulinresistent voksen</string>
|
||||
<string name="pregnant">Graviditet</string>
|
||||
<string name="patientage_summary">Velg pasientens type for oppsett av sikkerhetsgrenser</string>
|
||||
<string name="patient_name">Pasientens navn</string>
|
||||
<string name="patientage_summary">Velg pasienttype for oppsett av sikkerhetsgrenser</string>
|
||||
<string name="patient_name">Pasientnavn</string>
|
||||
<string name="patient_name_summary">Angi pasientnavn eller kallenavn for å kunne skille mellom flere oppsett</string>
|
||||
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Bruker</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
|
@ -337,7 +338,7 @@
|
|||
<string name="suspendloopfor2h">Pause loop i 2t</string>
|
||||
<string name="suspendloopfor3h">Pause loop i 3t</string>
|
||||
<string name="suspendloopfor10h">Pause loop i 10t</string>
|
||||
<string name="disconnectpump">Frakoble pumpe</string>
|
||||
<string name="disconnectpump">Koble fra pumpen</string>
|
||||
<string name="disconnectpumpfor15m">Koble fra pumpen i 15 min</string>
|
||||
<string name="disconnectpumpfor30m">Koble fra pumpen i 30 min</string>
|
||||
<string name="disconnectpumpfor1h">Koble fra pumpen i 1t</string>
|
||||
|
@ -350,36 +351,36 @@
|
|||
<string name="duration3h">3 timer</string>
|
||||
<string name="duration10h">10 timer</string>
|
||||
<string name="resume">Gjenoppta</string>
|
||||
<string name="reconnect">Tilkoble pumpen</string>
|
||||
<string name="reconnect">Koble til pumpen</string>
|
||||
<string name="smscommunicator_wrongduration">Feil varighet</string>
|
||||
<string name="smscommunicator_loopsuspended">Loop er pauset</string>
|
||||
<string name="smscommunicator_loopresumed">Loop gjenopptatt</string>
|
||||
<string name="bg_trend_label">15 min trend</string>
|
||||
<string name="treatments_wizard_cob_label">COB</string>
|
||||
<string name="superbolus">Superbolus</string>
|
||||
<string name="ns_logappstartedevent">Logg app start til NS</string>
|
||||
<string name="restartingapp">Avslutter appen for at innstillinger skal tas i bruk.</string>
|
||||
<string name="ns_logappstartedevent">Logg app-start til NS</string>
|
||||
<string name="restartingapp">Avslutter appen for å aktivere innstillinger.</string>
|
||||
<string name="configbuilder_insulin_description">Hvilken type insulin bruker du?</string>
|
||||
<string name="fastactinginsulincomment">Novorapid, Novolog, Humalog</string>
|
||||
<string name="ultrafastactinginsulincomment">Fiasp</string>
|
||||
<string name="insulin_shortname">INS</string>
|
||||
<string name="enablesuperbolus">Aktiver superbolus i veiviser</string>
|
||||
<string name="enablesuperbolus_summary">Aktiver superbolus funksjonen i wizard. Ikke aktiver denne før du vet hvordan den fungerer. DEN KAN LEDE TIL EN OVERDOSERING AV INSULIN HVIS DEN BRUKES BLINDT!</string>
|
||||
<string name="show_statuslights">Vis statusindikatorer på hjem skjermen</string>
|
||||
<string name="statuslights_cage_warning">OBS: alder slangesett [h]</string>
|
||||
<string name="statuslights_cage_critical">Advarsel: alder slangesett [h]</string>
|
||||
<string name="statuslights_iage_warning">OBS: alder insulin [h]</string>
|
||||
<string name="statuslights_iage_critical">Advarsel: alder insulin [h]</string>
|
||||
<string name="statuslights_sage_warning">OBS: alder CGM [h]</string>
|
||||
<string name="statuslights_sage_critical">Advarsel: alder CGM [h]</string>
|
||||
<string name="statuslights_sbat_warning">Nivå for når batterivarsel skal gis [%]</string>
|
||||
<string name="statuslights_sbat_critical">Nivå for når kritisk batteriadvarsel skal gis [%]</string>
|
||||
<string name="statuslights_bage_warning">Nivå for når batterivarsel for pumpe skal gis [h]</string>
|
||||
<string name="statuslights_bage_critical">Nivå for når kritisk batteriadvarsel for pumpe skal gis [h]</string>
|
||||
<string name="statuslights_res_warning">OBS: nivå insulinreservoar [U]</string>
|
||||
<string name="statuslights_res_critical">Advarsel: nivå insulinreservoar [U]</string>
|
||||
<string name="statuslights_bat_warning">Nivå for når batterivarsel for pumpe skal gis [%]</string>
|
||||
<string name="statuslights_bat_critical">Nivå for når kritisk batteriadvarsel for pumpe skal gis [%]</string>
|
||||
<string name="enablesuperbolus_summary">Aktiver superbolus-funksjonen i veiviseren. Ikke aktiver denne før du vet hvordan den fungerer. DEN KAN LEDE TIL EN OVERDOSERING AV INSULIN HVIS DEN BRUKES BLINDT!</string>
|
||||
<string name="show_statuslights">Vis statusindikatorer på hjem-skjermen</string>
|
||||
<string name="statuslights_cage_warning">Terskel for advarsel, alder på slangesett [h]</string>
|
||||
<string name="statuslights_cage_critical">Terskel for kritisk alder på slangesett [h]</string>
|
||||
<string name="statuslights_iage_warning">Terskel for advarsel, alder på insulin [h]</string>
|
||||
<string name="statuslights_iage_critical">Terskel for kritisk alder på insulin [h]</string>
|
||||
<string name="statuslights_sage_warning">Terskel for advarsel, alder på CGM [h]</string>
|
||||
<string name="statuslights_sage_critical">Terskel for kritisk alder på CGM [h]</string>
|
||||
<string name="statuslights_sbat_warning">Terskel for advarsel, batterinivå for sensor [%]</string>
|
||||
<string name="statuslights_sbat_critical">Terskel for kritisk batterinivå for sensor [%]</string>
|
||||
<string name="statuslights_bage_warning">Terskel for advarsel, batterialder for pumpe [h]</string>
|
||||
<string name="statuslights_bage_critical">Terskel for kritisk batterialder for pumpe [h]</string>
|
||||
<string name="statuslights_res_warning">Terskel for advarsel, insulinreservoar [U]</string>
|
||||
<string name="statuslights_res_critical">Terskel for kritisk insulinreservoar [U]</string>
|
||||
<string name="statuslights_bat_warning">Terskel for advarsel, batterinivå for pumpe [%]</string>
|
||||
<string name="statuslights_bat_critical">Terskel for kritisk batterinivå for pumpe [%]</string>
|
||||
<string name="prediction_shortname">PROGN</string>
|
||||
<string name="basal_shortname">BAS</string>
|
||||
<string name="deviation_shortname">DEV</string>
|
||||
|
@ -388,8 +389,8 @@
|
|||
<string name="abs_insulin_shortname">ABS</string>
|
||||
<string name="devslope_shortname">DEVSLOPE</string>
|
||||
<string name="nav_about">Om</string>
|
||||
<string name="smscommunicator_missingsmspermission">Mangler SMS tillatelse</string>
|
||||
<string name="smscommunicator_missingphonestatepermission">Mangler app tillatelse til telefon</string>
|
||||
<string name="smscommunicator_missingsmspermission">Mangler SMS-tillatelse</string>
|
||||
<string name="smscommunicator_missingphonestatepermission">Appen mangler tilgang til telefonstatus</string>
|
||||
<string name="xdripstatus_settings">xDrip+ Status (klokke)</string>
|
||||
<string name="xdripstatus">xDrip+ Statuslinje (klokke)</string>
|
||||
<string name="xdripstatus_shortname">xds</string>
|
||||
|
@ -403,10 +404,10 @@
|
|||
<string name="careportal_age_label">alder:</string>
|
||||
<string name="careportal_level_label">nivå:</string>
|
||||
<string name="ns_alarmoptions">Alarmvalg</string>
|
||||
<string name="ns_alarms">Opprett varsler fra NS alarmer</string>
|
||||
<string name="ns_announcements">Opprett varsler fra NS meldinger</string>
|
||||
<string name="nsalarm_staledatavalue_label">Ingen data advarsel [min]</string>
|
||||
<string name="nsalarm_urgent_staledatavalue_label">Kritisk mangel på data advarsel [min]</string>
|
||||
<string name="ns_alarms">Opprett varsler fra NS-alarmer</string>
|
||||
<string name="ns_announcements">Opprett varsler fra NS-meldinger</string>
|
||||
<string name="nsalarm_staledatavalue_label">Advarsel ved manglende data [min]</string>
|
||||
<string name="nsalarm_urgent_staledatavalue_label">Advarsel ved kritisk mangel på data [min]</string>
|
||||
<string name="openapsama_autosens_period">Intervall for autosens [h]</string>
|
||||
<string name="openapsama_autosens_period_summary">Antall timer med historiske data for beregning av sensitivitet (absorpsjonstid for KH er ekskludert)</string>
|
||||
<string name="openaps">OpenAPS</string>
|
||||
|
@ -416,29 +417,29 @@
|
|||
<string name="sensitivity_shortname">SENS</string>
|
||||
<string name="sensitivityoref1">Sensitivitet Oref1</string>
|
||||
<string name="sensitivityaaps">Sensitivitet AAPS</string>
|
||||
<string name="absorptionsettings_title">Absorpsjon innstillinger</string>
|
||||
<string name="absorptionsettings_title">Absorpsjonsinnstillinger</string>
|
||||
<string name="absorption_maxtime_title">Maks absorpsjonstid for måltid [h]</string>
|
||||
<string name="absorption_maxtime_summary">Tid i timer hvor det forventes at alle karbohydrater fra måltid vil være absorbert</string>
|
||||
<string name="openaps_short">OAPS</string>
|
||||
<string name="uploader_short">UPLD</string>
|
||||
<string name="basal_short">BAS</string>
|
||||
<string name="keep_screen_on_title">Hold skjermen påslått</string>
|
||||
<string name="keep_screen_on_summary">Forhindre Android å slå av skjermen. Mobil vil bruke mye batteri hvis den ikke plugges til strømledning.</string>
|
||||
<string name="sensitivity_warning">Hvis du slår på Autosense funksjonen må du huske å angi alle spiste karbohydrater. Ellers vil KH avvik gi feil i sensitivitetsberegningen !!</string>
|
||||
<string name="keep_screen_on_summary">Forhindre Android fra å slå av skjermen. Mobilen vil bruke mye batteri hvis den ikke plugges til strømledning.</string>
|
||||
<string name="sensitivity_warning">Hvis du slår på Autosense-funksjonen må du huske å angi alle spiste karbohydrater. Ellers vil KH-avvik gi feil i sensitivitetsberegningen !!</string>
|
||||
<string name="sensitivityweightedaverage">Sensitivitet vektet middelverdi</string>
|
||||
<string name="notloadedplugins">Ikke alle profiler ble lastet!</string>
|
||||
<string name="valuesnotstored">Verdier ikke lagret!</string>
|
||||
<string name="ns_localbroadcasts">Aktiver kringkasting til andre apper (som xDrip+). Ikke aktiver dette hvis du har mer enn en AAPS eller NSClient installert!</string>
|
||||
<string name="ns_localbroadcasts_title">Aktiver lokale sendinger.</string>
|
||||
<string name="ns_localbroadcasts">Aktiver kringkasting til andre apper (som xDrip+). Ikke aktiver dette hvis du har mer enn én AAPS eller NSClient installert!</string>
|
||||
<string name="ns_localbroadcasts_title">Aktiver deling av data mellom apper på telefonen.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">Dynamisk ISF</string>
|
||||
<string name="DynISFAdjust_title">DynamiskISF justeringsfaktor %%</string>
|
||||
<string name="DynISFAdjust_summary">Justeringsfaktor for dynamisk ISF. Verdier over 100%% vil gi mer aggressive korreksjonsdoser, mens verdier under 100%% vil gi mildere korreksjonsdoser.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">DynamiskISF justeringsfaktor %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Justeringsfaktor for dynamisk ISF. Verdier over 100% vil gi mer aggressive korreksjonsdoser, mens verdier under 100% vil gi mildere korreksjonsdoser.</string>
|
||||
<string name="enableuam">Aktiver UAM</string>
|
||||
<string name="enablesmb">Aktiver SMB</string>
|
||||
<string name="enablesmb_summary">Bruk Super Mikro Solen i stedet for temp basal for raskere resultat</string>
|
||||
<string name="enableuam_summary">Oppdaget uannonsert måltid (UAM)</string>
|
||||
<string name="insulin_oref_peak">IOB kurvens topp tid</string>
|
||||
<string name="enablesmb_summary">Bruk Super Mikro Bolus i stedet for temp basal for raskere resultat</string>
|
||||
<string name="enableuam_summary">Oppdag uannonsert måltid (UAM)</string>
|
||||
<string name="insulin_oref_peak">IOB-kurvens topptid</string>
|
||||
<string name="insulin_peak_time">Topptid [min]</string>
|
||||
<string name="insulin_peak">Topp</string>
|
||||
<string name="free_peak_oref">Free-Peak Oref</string>
|
||||
|
@ -451,10 +452,10 @@
|
|||
<string name="careportal_newnstreatment_percentage_label">Prosent</string>
|
||||
<string name="careportal_newnstreatment_timeshift_label">Tidsforskyving</string>
|
||||
<string name="default_temptargets">Standard temp mål</string>
|
||||
<string name="eatingsoon_duration">spise snart varighet</string>
|
||||
<string name="eatingsoon_target">spise snart målverdi</string>
|
||||
<string name="activity_duration">aktivitet varighet</string>
|
||||
<string name="activity_target">aktivitet målverdi</string>
|
||||
<string name="eatingsoon_duration">spise snart-varighet</string>
|
||||
<string name="eatingsoon_target">spise snart-målverdi</string>
|
||||
<string name="activity_duration">varighet for aktivitet</string>
|
||||
<string name="activity_target">målverdi ved aktivitet</string>
|
||||
<string name="hypo_duration">hypo varighet</string>
|
||||
<string name="hypo_target">hypo målverdi</string>
|
||||
<string name="reuse_profile_pct_hours">Gjenbruk %1$d%% %2$dt</string>
|
||||
|
@ -468,41 +469,41 @@
|
|||
<string name="shortprotein">Pr</string>
|
||||
<string name="shortfat">Fett</string>
|
||||
<string name="executingrightnow">Kommandoen utføres akkurat nå</string>
|
||||
<string name="missed_bg_readings">Mangler BS målinger</string>
|
||||
<string name="missed_bg_readings">Mangler BS-målinger</string>
|
||||
<string name="raise_notifications_as_android_notifications">Bruk systemvarslinger for alarmer og varslinger</string>
|
||||
<string name="gradually_increase_notification_volume">Øk volumet gradvis for alarmer og varsler</string>
|
||||
<string name="localalertsettings_title">Lokale varsler</string>
|
||||
<string name="enable_missed_bg_readings_alert">Varsel hvis ingen BS data mottas</string>
|
||||
<string name="enable_missed_bg_readings_alert">Varsel hvis ingen BS-data mottas</string>
|
||||
<string name="enable_pump_unreachable_alert">Varsel hvis pumpen er utilgjengelig</string>
|
||||
<string name="pump_unreachable_threshold">Pumpen er ikke tilgjengelig etter [min]</string>
|
||||
<string name="enable_carbs_req_alert">Varsel hvis karbohydrater må tilføres</string>
|
||||
<string name="urgent_alarm">Kritisk alarm</string>
|
||||
<string name="info">INFO</string>
|
||||
<string name="eversense">Eversense App (patched)</string>
|
||||
<string name="dexcomg5_nsupload_title">Last opp BS data til NS</string>
|
||||
<string name="bgsource_upload">BS opplast innstillinger</string>
|
||||
<string name="dexcomg5_nsupload_title">Last opp BS-data til NS</string>
|
||||
<string name="bgsource_upload">Innstillinger for opplasting av BS</string>
|
||||
<string name="wear_detailed_delta_title">Vis detaljer om delta</string>
|
||||
<string name="wear_detailed_delta_summary">Vis delta med én ekstra desimal</string>
|
||||
<string name="smbinterval_summary">Minste antall minutter mellom hver SMB</string>
|
||||
<string name="smbmaxminutes_summary">Maks antall minutter med basal som kan bli SMB</string>
|
||||
<string name="uamsmbmaxminutes">UAM SMB maks minutter</string>
|
||||
<string name="uamsmbmaxminutes_summary">Maks antall minutter basal som kan bli SMB ved UAM</string>
|
||||
<string name="carbsReqThreshold">Minimumsgrense for KH forslag</string>
|
||||
<string name="carbsReqThreshold">Minimumsgrense for KH-forslag</string>
|
||||
<string name="carbsReqThreshold_summary">Minimum mengde karbohydrater i gram for å vise advarsel. Behov under denne grenseverdien vil ikke vises som et varsel.</string>
|
||||
<string name="dexcomg5_xdripupload_title">Send BS data til xDrip+</string>
|
||||
<string name="dexcomg5_xdripupload_summary">I xDrip+ velg 640G/Eversens som datakilde</string>
|
||||
<string name="dexcomg5_xdripupload_title">Send BS-data til xDrip+</string>
|
||||
<string name="dexcomg5_xdripupload_summary">I xDrip+, velg 640G/Eversens som datakilde</string>
|
||||
<string name="nsclientbg">NSClient BS</string>
|
||||
<string name="nsclientbgshort">NS BS</string>
|
||||
<string name="overview_editquickwizard_usebg">BS beregning</string>
|
||||
<string name="overview_editquickwizard_usebolusiob">Bolus IOB beregning</string>
|
||||
<string name="overview_editquickwizard_usebasaliob">Basal IOB beregning</string>
|
||||
<string name="overview_editquickwizard_usebg">BS-beregning</string>
|
||||
<string name="overview_editquickwizard_usebolusiob">Bolus IOB-beregning</string>
|
||||
<string name="overview_editquickwizard_usebasaliob">Basal IOB-beregning</string>
|
||||
<string name="overview_editquickwizard_usetrend">Trendberegning</string>
|
||||
<string name="overview_editquickwizard_usesuperbolus">Superbolus beregning</string>
|
||||
<string name="overview_editquickwizard_usesuperbolus">Superbolus-beregning</string>
|
||||
<string name="positiveonly">Bare positive</string>
|
||||
<string name="negativeonly">Bare negative</string>
|
||||
<string name="overview_editquickwizard_usecob">COB beregning</string>
|
||||
<string name="overview_editquickwizard_usetemptarget">Temp target beregning</string>
|
||||
<string name="overview_editquickwizard_usepercentage">Prosent beregning</string>
|
||||
<string name="overview_editquickwizard_usecob">COB-beregning</string>
|
||||
<string name="overview_editquickwizard_usetemptarget">Beregning av temp target</string>
|
||||
<string name="overview_editquickwizard_usepercentage">Prosentvis beregning</string>
|
||||
<string name="loopenabled">Loop er aktivert</string>
|
||||
<string name="apsselected">APS valgt</string>
|
||||
<string name="nsclienthaswritepermission">NSClient har skriverettigheter</string>
|
||||
|
@ -510,7 +511,7 @@
|
|||
<string name="maxiobset">Maks IOB er angitt riktig</string>
|
||||
<string name="hasbgdata">BS tilgjengelig fra valgt kilde</string>
|
||||
<string name="extendedbolusdeliveryerror">Forlenget bolus feilet</string>
|
||||
<string name="enablesmbalways">Aktiverer alltid SMB</string>
|
||||
<string name="enablesmbalways">Aktiver alltid SMB</string>
|
||||
<string name="enablesmbalways_summary">Aktiver alltid SMB uavhengig av boluser. Bare mulig med en bra filtrert BS kilde som f.eks. Dexcom G5/G6</string>
|
||||
<string name="enablesmbaftercarbs">Aktiver SMB etter karbohydrater</string>
|
||||
<string name="enablesmbaftercarbs_summary">Aktiver SMB i 6t etter karbohydratinntak, selv med 0 IOB. Bare mulig med en bra filtrert BS kilde som f. eks. Dexcom G5/G6</string>
|
||||
|
@ -523,7 +524,7 @@
|
|||
<string name="overview_insulin_label">Insulin</string>
|
||||
<string name="overview_buttons_selection">Knapper</string>
|
||||
<string name="show_calibration_button_summary">Sender en kalibrering til xDrip+ eller åpne kalibreringsdialogen i BYODA</string>
|
||||
<string name="show_cgm_button_summary">Åpner xDrip+ eller BYODA, tilbake knappen får deg tilbake til AAPS</string>
|
||||
<string name="show_cgm_button_summary">Åpner xDrip+ eller BYODA, tilbake-knappen får deg tilbake til AAPS</string>
|
||||
<string name="carb_increment_button_message">Antall karbohydrater som skal legges til når knappen trykkes</string>
|
||||
<string name="insulin_increment_button_message">Mengde insulin som skal legges til når knappen trykkes inn</string>
|
||||
<string name="error_starting_cgm">Kunne ikke starte CGM-programmet. Kontroller at det er installert.</string>
|
||||
|
@ -592,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Denne verdien kalles Maks IOB av OpenAPS\nOpenAPS vil ikke gi mere insulin hvis mengden insulin ombord (IOB) overstiger denne verdien</string>
|
||||
<string name="absorption_cutoff_title">Maks absorpsjonstid for måltid [h]</string>
|
||||
<string name="absorption_cutoff_summary">Etter denne tiden forventes det at måltidet er absorbert. Eventuelle gjenværende karbo vil tas ut av beregninger.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">BS er under terskelverdi slik at all insulintilførsel stoppes. Mulighet for bruker å definere verdier mellom 3.3mmol/l (60mg/dl) og 5.5mmol/l (100mg/dl). Verdier under 3.6/65 bruker standard målverdier</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Vis merknadsfelt i dialogvindu for Behandlinger</string>
|
||||
<string name="next_button">Neste</string>
|
||||
<string name="previous_button">Forrige</string>
|
||||
|
@ -643,7 +645,6 @@
|
|||
<string name="needsystemwindowpermission">App trenger tillatelse til å bruke Varslinger for å vise meldinger</string>
|
||||
<string name="needlocationpermission">App trenger tilgang til Posisjon for å søke etter Bluetooth og Wifi enheter</string>
|
||||
<string name="needstoragepermission">App trenger tilgang til Lagring for lagre logg filer og eksportere innstillinger</string>
|
||||
<string name="needconnectpermission">Appen trenger bluetooth tillatelse</string>
|
||||
<string name="request">Forespørsel</string>
|
||||
<string name="open_navigation">Åpne meny</string>
|
||||
<string name="close_navigation">Lukk meny</string>
|
||||
|
@ -968,7 +969,7 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Maks-BS utenfor område!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Temp target:\nMin: %1$s\nMaks: %2$s\nVarighet: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">TempTarget:\nMål: %1$s\nVarighet: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">TempTarget:\nMin: %1$s\nMål: %2$s\nVarighet: %3$s</string>
|
||||
<string name="wear_action_tempt_preset_message">TempTarget:\nÅrsak: %1$s\nMål: %2$s\nVarighet: %3$s</string>
|
||||
<string name="quick_wizard_message">QuickWizard: %1$s\ninsulin: %2$.2fE\nKarbo: %3$dg</string>
|
||||
<string name="wizard_result">Kalk. Wizard:\nInsulin: %1$.2fE\nKarbo: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Vis oppføring på enhet:</string>
|
||||
|
@ -1035,10 +1036,12 @@
|
|||
<string name="a11y_only_on_watch">kun på klokke</string>
|
||||
<string name="a11y_only_on_phone">kun på telefon</string>
|
||||
<string name="a11y_drag_and_drop_handle">dra og slipp håndtering</string>
|
||||
<string name="search">Søk</string>
|
||||
<!-- Aidex Cgms -->
|
||||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">Aidex</string>
|
||||
<string name="description_source_aidex">Motta BS verdier fra GlucoRx Aidex CGM.</string>
|
||||
<string name="blocked_by_charging">Blokkert på grunn av ladealternativer</string>
|
||||
<string name="blocked_by_connectivity">Blokkert på grunn av tilkoblingsalternativer</string>
|
||||
<string name="no_watch_connected">(Ingen klokke tilkoblet)</string>
|
||||
</resources>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Podaj obliczoną dawkę „pominiętej” insuliny za pomocą strzykawki / wstrzykiwacza lub za pomocą pompy funkcji wypełnienia.</string>
|
||||
<string name="wronginsulin_donothing">Nie rób nic i pozwól AndroidAPS na skorygowanie każdego uzyskanego wysokiego stężenia glukozy we krwi.</string>
|
||||
<string name="iob_label">Aktywna insulina (IOB)</string>
|
||||
<string name="iob_which">Sprawdź/Zaznacz wszystkie prawidłowe odpowiedzi.</string>
|
||||
<string name="iob_value">Na wartość IOB mają wpływ wykonane tymczasowe dawki bazowe.</string>
|
||||
<string name="iob_hightemp">Wysoka tymczasowa dawka bazowa nie zostanie podana, gdy twóje poziom cukru we krwi jest poniżej poziomu docelowego.</string>
|
||||
<string name="iob_negiob">Negatywne IOB utrzymujące się przez znaczny okres czasu bez wysiłku fizycznego sugeruje, że Twój profil jest zbyt silny i mniej insuliny jest wymagane w Twoich ustawieniach.</string>
|
||||
|
|
|
@ -159,6 +159,7 @@
|
|||
<string name="end_user_license_agreement">Umowa licencyjna użytkownika końcowego</string>
|
||||
<string name="end_user_license_agreement_text">NIE MOŻE BY WYKORZYSTYWANY DO PODEJMOWANIA DECYZJI MEDYCZNYCH. NIE MA ŻADNEJ GWARANCJI NA PROGRAM, W ZAKRESIE DOZWOLONYM PRZEZ OBOWIĄZUJĄCE PRAWO. Z WYJĄTKIEM PRZYPADKÓW, GDY W INNY SPOSÓB PISMO OŚWIADCZENIA PRAW AUTORSKICH I / LUB INNYCH STRON, PRZEDSTAWIAĆ PROGRAM \"W STANIE TAKIM, W JAKIM SIĘ ZNAJDUJE\" BEZ JAKIEJKOLWIEK GWARANCJI, WYRAŹNEJ LUB DOMNIEMANEJ, W TYM MIĘDZY INNYMI DOMNIEMANYCH GWARANCJI PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO OKREŚLONEGO CELU. CAŁKOWITE RYZYKO ZWIĄZANE Z JAKOŚCIĄ I WYNIKIEM PROGRAMU JEST PO PAŃSTWA STRONIE. W PRZYPADKU USZKODZENIA PROGRAMU UŻYTKOWNIK PONOSI KOSZT CAŁEGO NIEZBĘDNEGO SERWISU, NAPRAWY LUB POPRAWEK. W PRZYPADKU NIEPOROZUMIEŃ ZASTOSOWANIE PRAWNE MA UMOWA W ANGIELSKIEJ WERSJI JĘZYKOWEJ!!!</string>
|
||||
<string name="end_user_license_agreement_i_understand">ROZUMIEM I WYRAŻAM ZGODĘ</string>
|
||||
<string name="save">ZACHOWAJ</string>
|
||||
<string name="reloadprofile">Załaduj profil ponownie</string>
|
||||
<string name="smscommunicator">Komunikator SMS</string>
|
||||
<string name="smscommunicator_allowednumbers">Dozwolone numery telefonów</string>
|
||||
|
@ -243,6 +244,7 @@
|
|||
<string name="wear">Oprogramowanie Wear (Smartwatch)</string>
|
||||
<string name="resend_all_data">Prześlij ponownie wszystkie dane</string>
|
||||
<string name="open_settings_on_wear">Otwórz ustawienia dla Wear</string>
|
||||
<string name="basal_rate">Dawka bazowa</string>
|
||||
<string name="basalvaluebelowminimum">Wartość bazy poniżej minimum. Nie ustawiono profilu!</string>
|
||||
<string name="sms_actualbg">BG:</string>
|
||||
<string name="sms_lastbg">Ostatnia BG:</string>
|
||||
|
@ -630,7 +632,6 @@
|
|||
<string name="needsystemwindowpermission">Aplikacja wymaga uprawnienia systemowego okna dla powiadomień</string>
|
||||
<string name="needlocationpermission">Aplikacja wymaga dostępu do lokalizacji dla zarządzania bluetoothem i identyfikacją Wi-Fi</string>
|
||||
<string name="needstoragepermission">Aplikacja wymaga zgody na zapis do pamięci, aby móc przechować pliki logów i eksportować ustawienia</string>
|
||||
<string name="needconnectpermission">Aplikacja wymaga uprawnienia Bluetooth</string>
|
||||
<string name="request">Żądanie</string>
|
||||
<string name="open_navigation">Otwórz menu</string>
|
||||
<string name="close_navigation">Zamknij menu</string>
|
||||
|
@ -666,6 +667,7 @@
|
|||
<string name="error_adding_treatment_message">Leczenie (insulina: %1$.2f, węglowodany: %2$d, czas:%3$s) nie mogą być dodane. Sprawdź i dodaj ręcznie rekord w razie potrzeby.</string>
|
||||
<string name="generated_ecarbs_note">eWęgle: %1$d g (%2$d h), Opóźnienie: %3$d m</string>
|
||||
<string name="openaps_noasdata">Brak dostępnych danych autosens</string>
|
||||
<string name="log_files">Log files</string>
|
||||
<string name="nav_logsettings">Ustawienia logów</string>
|
||||
<string name="resettodefaults">Przywróć ustawienia domyślne</string>
|
||||
<string name="nsmalfunction">Usterka NSClient. Spróbuj zrestartować NS i NSClient.</string>
|
||||
|
@ -747,6 +749,8 @@
|
|||
<string name="profilenamecontainsdot">Nazwa profilu zawiera kropki.\nTo nie jest obsługiwane przez NS.\nProfil nie zostanie przesyłany do NS.</string>
|
||||
<string name="low_mark_comment">Dolna wartość zakresu docelowego (tylko do wyświetlania)</string>
|
||||
<string name="high_mark_comment">Górna wartość zakresu docelowego (tylko do wyświetlania)</string>
|
||||
<string name="age">Czas</string>
|
||||
<string name="weight_label">Waga</string>
|
||||
<string name="id">ID:</string>
|
||||
<string name="submit">Wyślij</string>
|
||||
<string name="mostcommonprofile">Najczęściej używany profil:</string>
|
||||
|
@ -796,6 +800,7 @@
|
|||
<string name="smscommunicator_otp_install_info">Na każdym telefonie śledzącym zainstalować aplikację uwierzytelniania obsługującą tokeny TOTP RFC 6238 Popularne darmowe aplikacje:\n • Authy\n • Google Authenticator\n • LastPass Authenticator\n • FreeOTP Authenticator</string>
|
||||
<string name="smscommunicator_otp_reset_warning">Resetowanie uwierzytelniania powoduje, że wszystkie już ustawione uwierzytelnienia stają się niepoprawne (przestają działać). Trzeba będzie je jeszcze raz skonfigurować!</string>
|
||||
<string name="overview_show_predictions">Prognozy poziomu</string>
|
||||
<string name="overview_show_treatments">Zabiegi</string>
|
||||
<string name="overview_show_deviationslope">Krzywa odchylenie</string>
|
||||
<string name="authorizationfailed">Autoryzacja nie powiodła się</string>
|
||||
<string name="overview_show_absinsulin">Cała insulina</string>
|
||||
|
@ -893,5 +898,11 @@
|
|||
<string name="not_available_full">Niedostępne</string>
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="remove_selected_items">Usuń wybrane pozycje</string>
|
||||
<string name="confirm_remove_multiple_items">Czy na pewno chcesz usunąć %1$d pozycji</string>
|
||||
<string name="no_records_available">Brak wpisów</string>
|
||||
<string name="count_selected">Wybrany %1$d</string>
|
||||
<string name="sort_label">Sortuj</string>
|
||||
<string name="login">Zaloguj się</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -136,7 +136,6 @@
|
|||
<string name="wronginsulin_prime">Dê uma porção do bolus calculado não administrado por meio de seringa/caneta ou usando o menu ações -> purgar/preencher.</string>
|
||||
<string name="wronginsulin_donothing">Não faça nada e permita que o AndroidAPS corrija qualquer nível de glicose elevado resultante.</string>
|
||||
<string name="iob_label">Insulina ativa (IA)</string>
|
||||
<string name="iob_which">Marque todas as respostas corretas.</string>
|
||||
<string name="iob_value">O valor de IA é afetado por basais temporárias efetuadas.</string>
|
||||
<string name="iob_hightemp">Um basal alto temporário não será efetuado quando sua glicose estiver abaixo do alvo.</string>
|
||||
<string name="iob_negiob">Insulina Ativa (IA) negativa por um período substancial na ausência de exercícios, sugere que seu perfil é muito agressivo e menos insulina deve ser considerada nas suas configurações.</string>
|
||||
|
|
|
@ -413,8 +413,6 @@
|
|||
<string name="ns_localbroadcasts_title">Ativar partilha local.</string>
|
||||
<string name="openapssmb">SMB OpenAPS</string>
|
||||
<string name="openaps_smb_dynamic_isf">FSI Dinâmico</string>
|
||||
<string name="DynISFAdjust_title">Fator de Ajuste FSI dinâmico %%</string>
|
||||
<string name="DynISFAdjust_summary">Fator de ajuste para FSI dinâmico. Defina mais de 100%% para doses de correção mais agressivas e menos de 100%% para correções menos agressivas.</string>
|
||||
<string name="enableuam">Ativar UAM</string>
|
||||
<string name="enablesmb">Ativar SMB</string>
|
||||
<string name="enablesmb_summary">Use Super Micro Boluses em vez de basal temp para uma ação mais rápida</string>
|
||||
|
@ -865,7 +863,6 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Glicemia maxima fora da meta!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Alvo temporário:\nMin: %1$s\nMax: %2$s\nDuração: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Alvo temporário:\nTarget: %1$s\nDuration: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Alvo temporário:\Reason: %1$s\nTarget: %2$s\nDuration: %3$s</string>
|
||||
<string name="quick_wizard_message">Assistente rápido: %1$s\nInsulin: %2$.2fU\nCarbs: %3$dg</string>
|
||||
<string name="wizard_result">Calculadora:\nInsulin: %1$.2fU\nCarbs: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Mostrar entrada no dispositivo:</string>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Bólus uma proporção de insulina calculada \'não administrada\' ou com seringa/caneta ou purgando.</string>
|
||||
<string name="wronginsulin_donothing">Faça nada e permita que o AndroidAPS corrija qualquer nível de glicose elevado que daí resulte.</string>
|
||||
<string name="iob_label">Insulina ativa (IA )</string>
|
||||
<string name="iob_which">Marque todas as respostas corretas.</string>
|
||||
<string name="iob_value">O valor do IA é afectado por basais temporárias emitidas.</string>
|
||||
<string name="iob_hightemp">Basal temporária alta não será dada quando a sua glicose estiver abaixo do alvo.</string>
|
||||
<string name="iob_negiob">IA negativa por um período substancial na ausência de exercício, sugere que o seu perfil é muito alto e é necessária menos insulina nas suas configurações.</string>
|
||||
|
|
|
@ -159,6 +159,7 @@
|
|||
<string name="end_user_license_agreement">Condições de Utilização</string>
|
||||
<string name="end_user_license_agreement_text">NÃO DEVE SER USADO PARA FAZER DECISÕES MÉDICAS. NÃO HÁ NENHUMA GARANTIA PARA O PROGRAMA, NA EXTENSÃO PERMITIDA PELA LEGISLAÇÃO APLICÁVEL. EXCEPTO QUANDO DE OUTRA FORMA, POR ESCRITO, OS TITULARES DOS DIREITOS DE AUTOR E / OU OUTRAS PARTES FORNECEM O PROGRAMA “TAL COMO ESTÁ”, SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO, ÀS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. TODO O RISCO QUANTO À QUALIDADE E DESEMPENHO DO PROGRAMA É CONSIGO. CASO O PROGRAMA SEJA DEFEITUOSO, ASSUME O CUSTO DE TODOS OS SERVIÇOS, REPAROS OU CORREÇÕES NECESSÁRIOS.</string>
|
||||
<string name="end_user_license_agreement_i_understand">EU ENTENDO E CONCORDO</string>
|
||||
<string name="save">Guardar</string>
|
||||
<string name="reloadprofile">Recarregar perfil</string>
|
||||
<string name="smscommunicator">Comunicador SMS</string>
|
||||
<string name="smscommunicator_allowednumbers">Número de telefones permitidos</string>
|
||||
|
@ -630,7 +631,6 @@
|
|||
<string name="needsystemwindowpermission">Aplicação precisa de permissão de janela do sistema para notificações</string>
|
||||
<string name="needlocationpermission">Aplicação necessita de permissão de localização para pesquisa Bluetooth e identificação Wi-Fi</string>
|
||||
<string name="needstoragepermission">A aplicação precisa da permissão de armazenamento para poder armazenar ficheiros de registo e exportar definições</string>
|
||||
<string name="needconnectpermission">Aplicação precisa de permissão Bluetooth</string>
|
||||
<string name="request">Pedido</string>
|
||||
<string name="open_navigation">Abrir a navegação</string>
|
||||
<string name="close_navigation">Fechar a navegação</string>
|
||||
|
@ -894,5 +894,6 @@
|
|||
<string name="not_available_full">Indisponível</string>
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="login">Login</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -134,7 +134,6 @@
|
|||
<string name="wronginsulin_prime">Bolusati o cantitate parțiala de insulina din insulina calculata ca fiind lipsa utilizând seringa/penul sau amorsarea.</string>
|
||||
<string name="wronginsulin_donothing">Nu faceți nimic și permiteți AndroidAPS să corecteze valorile mari ale glicemiei.</string>
|
||||
<string name="iob_label">Insulină activă (IOB)</string>
|
||||
<string name="iob_which">Bifați toate răspunsurile corecte.</string>
|
||||
<string name="iob_value">Valoarea IOB este afectată de bazalele temporare emise.</string>
|
||||
<string name="iob_hightemp">Rata bazala ridicata temporara nu va fi livrata atunci când glicemia este sub nivelul țintă.</string>
|
||||
<string name="iob_negiob">Un IOB negativ pentru o perioadă substanțială în absența exercițiilor fizice sugerează că profilul tău este prea puternic și este nevoie de mai puţină insulină în setările inițiale.</string>
|
||||
|
|
|
@ -159,6 +159,7 @@
|
|||
<string name="end_user_license_agreement">Licență utilizator final</string>
|
||||
<string name="end_user_license_agreement_text">NU FOLOSIȚI PENTRU LUAREA DE DECIZII MEDICALE. NU EXISTĂ RĂSPUNDERE LEGALĂ SAU GARANȚIE PENTRU ACEST PROGRAM, ÎN LIMITA APLICABILĂ A LEGII. CU EXCEPTIA CAZURILOR SPECIAL MENȚIONATE, AUTORUL ȘI/SAU ALTE PERSOANE IMPLICATE PUN LA DISPOZIȚIE ACEST PROGRAM FĂRĂ NICIO GARANȚIE, IMPLICITĂ SAU EXPLICITĂ, INCLUZÂND, DAR FĂRĂ A SE LIMITA LA, GARANȚIILE LEGATE DE VĂNZAREA SAU POTRIVIREA PENTRU UN ANUME SCOP. ÎNTREGUL RISC LEGAT DE CALITATEA ȘI PERFORMANȚA ACESTUI PROGRAM CAD ÎN RESPONSABILITATEA DUMNEAVOASTRĂ. DACĂ PROGRAMUL SE DOVEDEȘTE A FI DEFECT, DUMNEAVOASTRĂ VĂ ASUMAȚI ÎNTREAGA RĂSPUNDERE, PRECUM ȘI TOATE COSTURILE LEGATE DE SERVICE, REPARAȚII SAU CORECȚII.</string>
|
||||
<string name="end_user_license_agreement_i_understand">ÎNȚELEG ȘI SUNT DE ACORD</string>
|
||||
<string name="save">Salvează</string>
|
||||
<string name="reloadprofile">Reîncarcă profilul</string>
|
||||
<string name="smscommunicator">Comunicator SMS</string>
|
||||
<string name="smscommunicator_allowednumbers">Numere de telefon permise</string>
|
||||
|
@ -630,7 +631,6 @@
|
|||
<string name="needsystemwindowpermission">Aplicația are nevoie de permisiune la fereastra sistemului pentru a afișa notificări</string>
|
||||
<string name="needlocationpermission">Aplicația are nevoie sa acceseze locația pentru scanare Bluetooth și identificare WiFi</string>
|
||||
<string name="needstoragepermission">Aplicația are nevoie de permisiunea de a accesa unitatea de stocare pentru a scrie fișierele registru și pentru a exporta setările</string>
|
||||
<string name="needconnectpermission">Aplicația are nevoie de permisiune Bluetooth</string>
|
||||
<string name="request">Cerință</string>
|
||||
<string name="open_navigation">Afișare navigație</string>
|
||||
<string name="close_navigation">Închidere navigație</string>
|
||||
|
@ -894,5 +894,8 @@
|
|||
<string name="not_available_full">Nu este disponibil</string>
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="confirm_remove_multiple_items">Sigur vrei să elimini %1$d element(e)</string>
|
||||
<string name="sort_label">Sortează</string>
|
||||
<string name="login">Autentificare</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -136,8 +136,20 @@
|
|||
<string name="wronginsulin_compare">Сравните значения в истории AndroidAPS и помпы (если помпа это поддерживает).</string>
|
||||
<string name="wronginsulin_prime">Рассчитать и ввести «пропущенный» вами инсулин шприцем/ручкой или через кнопку заполнения канюли.</string>
|
||||
<string name="wronginsulin_donothing">Ничего не делать и позволить AndroidAPS исправить возможный высокий уровень ГК.</string>
|
||||
<string name="cob_label">Активные углеводы COB - углеводы в процессе компенсации</string>
|
||||
<string name="cob_question">Как изменение значения ISF влияет на расчет COB?</string>
|
||||
<string name="cob_longer">Увеличение фактора чувствительности ISF потребует больше времени на усвоение углеводов</string>
|
||||
<string name="cob_shorter">Увеличение фактора чувствительности ISF потребует меньше времени на усвоение углеводов</string>
|
||||
<string name="cob_no_effect">Увеличение фактора чувствительности ISF не повлияет на расчетное время усвоения углеводов</string>
|
||||
<string name="cob2_question">Как изменение значения IC влияет на расчет COB?</string>
|
||||
<string name="cob2_longer">Увеличение IC увеличит время усвоения углеводов</string>
|
||||
<string name="cob2_shorter">Увеличение IC уменьшит время усвоения углеводов</string>
|
||||
<string name="cob2_no_effect">Увеличение IC не повлияет на расчетное время усвоения углеводов</string>
|
||||
<string name="cob3_question">Как изменение процента профиля влияет на расчет активных углеводов COB?</string>
|
||||
<string name="cob3_longer">Установка профиля на 150% потребует больше времени на усвоение углеводов</string>
|
||||
<string name="cob3_shorter">Установка профиля на 150% потребует меньше времени на усвоение углеводов</string>
|
||||
<string name="cob3_no_effect">Установка профиля на 150% не повлияет на расчетное время усвоения углеводов</string>
|
||||
<string name="iob_label">Активный инсулин (IOB)</string>
|
||||
<string name="iob_which">Отметьте все правильные ответы.</string>
|
||||
<string name="iob_value">На величину IOB влияют устанавливаемые ВБС.</string>
|
||||
<string name="iob_hightemp">Высокая ВБС не будет применяться, если уровень сахара в крови ниже целевого.</string>
|
||||
<string name="iob_negiob">Отрицательный IOB в течение длительного периода при отсутствии физнагрузки указывает на то, что ваш профиль завышен и требуется снизить кол-во инсулина в настройках.</string>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<string name="objectivenotstarted">Цель %1$d не начата</string>
|
||||
<string name="objectivenotfinished">Цель %1$d не завершена</string>
|
||||
<string name="objectives_0_objective">Настройка визуализации и мониторинга, анализ базала и коэффициентов</string>
|
||||
<string name="objectives_0_gate">Убедитесь, что BG доступен в Nightscut, и данные инсулина помпы загружаются</string>
|
||||
<string name="objectives_0_gate">Убедитесь, что значения ГК и данные по инсулину помпы передаются в Nightscout</string>
|
||||
<string name="objectives_openloop_objective">Старт незамкнутого цикла</string>
|
||||
<string name="objectives_openloop_gate">Начинайте работу в режиме незамкнутого цикла и ручной подстройки величины временного базала. Установите и применяйте временные цели и временные цели по умолчанию (напр. углеводы при нагрузке или купировании гипо)</string>
|
||||
<string name="objectives_maxbasal_objective">Глубже понимаем незакольцованную систему Open Loop, включая ее рекомендации по временным базалам</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Безопасность терапии</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Макс разрешенный болюс [U] ед.</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Макс разрешенные углеводы (г)</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Уровень ГК, ниже которого происходит остановка подачи инсулина</string>
|
||||
<string name="nav_preferences_plugin">Настройки %1$s</string>
|
||||
<string name="nav_preferences">Настройки</string>
|
||||
<string name="nav_refreshtreatments">Синхронизировать назначения с NS</string>
|
||||
|
@ -432,8 +433,8 @@
|
|||
<string name="ns_localbroadcasts_title">Активировать локальную передачу</string>
|
||||
<string name="openapssmb">Супер микро болюс OpenAPS</string>
|
||||
<string name="openaps_smb_dynamic_isf">Динамический ISF</string>
|
||||
<string name="DynISFAdjust_title">Коэффициент регулировки динамического диапазона чувствительности ISF %%</string>
|
||||
<string name="DynISFAdjust_summary">Коэффициент корректировки динамического диапазона чувствительности ISF. Установите более 100%% для более агрессивных доз коррекции и менее 100%% для менее агрессивной коррекции.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Коэффициент регулировки динамического диапазона чувствительности ISF %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Коэффициент корректировки динамического диапазона чувствительности ISF. Установите более 100% для агрессивных доз коррекции и менее 100% для менее агрессивной коррекции.</string>
|
||||
<string name="enableuam">Включить непредвиденный прием пищи UAM</string>
|
||||
<string name="enablesmb">Включить супер микро болюс SMB</string>
|
||||
<string name="enablesmb_summary">Для ускорения действия используйте супер микро болюсы SMB вместо временного базала</string>
|
||||
|
@ -592,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Эта величина называется Max IOB в OpenAPS context\nOpenAPS не будет добавлять инсулин если текущий активный инсулин ее превысит</string>
|
||||
<string name="absorption_cutoff_title">Максимальное время усваимости пищи [h]</string>
|
||||
<string name="absorption_cutoff_summary">Время, за которое любая еда считается усвоившейся. Оставшиеся углеводы не будут учтены.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Значение уровня ГК, на котором происходит приостановка подачи инсулина. Значения по умолчанию являются стандартными для целевого диапазона. Пользователь может установить значения между 60 мг/дл (3.3 ммоль/л) и 100 мг/дл (5.5 ммоль/л) Параметры, заданные ниже 65/3.6 приводят к использованию значений по умолчанию</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Показать поле примечаний в диалогах назначений</string>
|
||||
<string name="next_button">Далее</string>
|
||||
<string name="previous_button">Назад</string>
|
||||
|
@ -643,7 +645,6 @@
|
|||
<string name="needsystemwindowpermission">Приложению требуется разрешение системного окна для уведомлений</string>
|
||||
<string name="needlocationpermission">Приложению требуется разрешение на доступ к местоположению для сканирования BT и идентификации WiFi</string>
|
||||
<string name="needstoragepermission">Приложение требует разрешения на доступ к записи в память, чтобы хранить файлы журналов и настройки экспорта</string>
|
||||
<string name="needconnectpermission">Приложению требуется разрешение Bluetooth</string>
|
||||
<string name="request">Запрос</string>
|
||||
<string name="open_navigation">Показать панель навигации</string>
|
||||
<string name="close_navigation">Cкрыть панель навигации</string>
|
||||
|
@ -967,7 +968,7 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Макс ГК вне диапазона!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">ВремЦель:\nМин: %1$s\nМакс.: %2$s\nДлительность: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">ВремЦель:\nЦель: %1$s\nДлительность: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">ВремЦель:\Причина: %1$s\nЦель.: %2$s\nДлительность: %3$s</string>
|
||||
<string name="wear_action_tempt_preset_message">ВремЦель:\nПричина: %1$s\nЦель.: %2$s\nДлительность: %3$s</string>
|
||||
<string name="quick_wizard_message">Мастер: %1$s\nИнсулин: %2$.2fЕд\nУгл: %3$dg</string>
|
||||
<string name="wizard_result">Мастер:\nИнсулин: %1$.2fЕд\nУгл: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Показать запись на устройстве:</string>
|
||||
|
@ -1034,10 +1035,12 @@
|
|||
<string name="a11y_only_on_watch">только на часах</string>
|
||||
<string name="a11y_only_on_phone">только на телефоне</string>
|
||||
<string name="a11y_drag_and_drop_handle">якорь перетягивания</string>
|
||||
<string name="search">Поиск</string>
|
||||
<!-- Aidex Cgms -->
|
||||
<string name="aidex">Aidex GlucoRx</string>
|
||||
<string name="aidex_short">Aidex </string>
|
||||
<string name="description_source_aidex">Получить значения ГК от GlucoRx Aidex</string>
|
||||
<string name="blocked_by_charging">Заблокировано опциями зарядки</string>
|
||||
<string name="blocked_by_connectivity">Заблокировано настройками подключения</string>
|
||||
<string name="no_watch_connected">(Часы не подключены)</string>
|
||||
</resources>
|
||||
|
|
|
@ -136,8 +136,20 @@
|
|||
<string name="wronginsulin_compare">Porovnaj hodnoty v AndroidAPS z históriou v tvojej pumpe (ak pumpa má túto funkciu).</string>
|
||||
<string name="wronginsulin_prime">Pošlite bolus na vypočítaný „chýbajúci“ inzulín buď injekčnou striekačkou, alebo perom, alebo pomocou plnenia na pumpe.</string>
|
||||
<string name="wronginsulin_donothing">Nerobte nič a dovoľte AndroidAPS upraviť akúkoľvek výslednú vysokú hladinu glukózy v krvi.</string>
|
||||
<string name="cob_label">Aktívne sacharidy (COB)</string>
|
||||
<string name="cob_question">Ako ovplyvňuje zmena hodnoty citlivosti výpočet COB?</string>
|
||||
<string name="cob_longer">Zvýšenie hodnoty citlivosti predĺži dobu absorbcie sacharidov</string>
|
||||
<string name="cob_shorter">Zvýšenie hodnoty citlivosti skráti dobu absorbcie sacharidov</string>
|
||||
<string name="cob_no_effect">Zvýšenie citlivosti neovplyvní vypočítanú absorbciu sacharidov</string>
|
||||
<string name="cob2_question">Ako ovplyvňuje zmena inzulíno-sacharidového pomeru výpočet COB?</string>
|
||||
<string name="cob2_longer">Zvýšenie hodnoty inzulíno-sacharidového pomeru predĺži dobu absorbcie sacharidov</string>
|
||||
<string name="cob2_shorter">Zvýšenie hodnoty inzulíno-sacharidového pomeru skráti dobu absorbcie sacharidov</string>
|
||||
<string name="cob2_no_effect">Zvýšenie inzulíno-sacharidového pomeru neovplyvní vypočítanú absorbciu sacharidov</string>
|
||||
<string name="cob3_question">Ako ovplyvňuje percentuálna zmena profilu výpočet COB?</string>
|
||||
<string name="cob3_longer">Nastavením profilu na 150 % dôjde k predĺženiu doby absorbcie sacharidov</string>
|
||||
<string name="cob3_shorter">Nastavením profilu na 150 % dôjde ku skráteniu doby absorbcie sacharidov</string>
|
||||
<string name="cob3_no_effect">Nastavenie profilu na 150% neovplyvní vypočítanú absorbciu sacharidov</string>
|
||||
<string name="iob_label">Aktívny inzulín (IOB)</string>
|
||||
<string name="iob_which">Zaškrtnite všetky správne odpovede.</string>
|
||||
<string name="iob_value">Hodnota IOB je ovplyvnená vydanými dočasnými bazálmi.</string>
|
||||
<string name="iob_hightemp">Vysoký dočasný bazál nebude spustený, pokiaľ je Vaša glykémia nižšia, ako cieľ.</string>
|
||||
<string name="iob_negiob">Negatívne IOB po značnú dobu bez cvičenia naznačuje, že váš profil je príliš \"silný\" a vo vašom profile je potrebného menej inzulínu.</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Bezpečnosť zadania ošetrenia</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maximálny povolený bolus [JI]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maximálne povolené množstvo sacharidov [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Hodnota glykémie, pri ktorej sa aktivuje LGS</string>
|
||||
<string name="nav_preferences_plugin">Nastavenie pluginu %1$s</string>
|
||||
<string name="nav_preferences">Nastavenia</string>
|
||||
<string name="nav_refreshtreatments">Obnoviť ošetrenia z NS</string>
|
||||
|
@ -432,8 +433,8 @@
|
|||
<string name="ns_localbroadcasts_title">Povoliť lokálne vysielanie.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">Dynamická ISF</string>
|
||||
<string name="DynISFAdjust_title">Korekčný faktor pre Dynamickú ISF v %%</string>
|
||||
<string name="DynISFAdjust_summary">Korekčný faktor pre dynamickú ISF. Pre agresivnejšie korekčné dávky nastavte hodnoty väčšie ako 100%% a pre menej agresivne korekcie menšie než 100%%.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Korekčný faktor pre Dynamickú ISF v %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Korekčný faktor pre dynamickú ISF. Pre agresivnejšie korekčné dávky nastavte hodnoty väčšie ako 100%, pre menej agresívne korekcie, menšie než 100%.</string>
|
||||
<string name="enableuam">Povoliť UAM</string>
|
||||
<string name="enablesmb">Povoliť SMB</string>
|
||||
<string name="enablesmb_summary">Použiť Super Mikro Bolusy namiesto dočasných bazálov, pre zrýchleniu účinku</string>
|
||||
|
@ -592,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Táto hodnota je v kontexte OpenAPS nazývaná Max IOB.\nOpenAPS nikdy nepridá inzulín, pokiaľ je súčasné IOB väčšie, ako táto hodnota</string>
|
||||
<string name="absorption_cutoff_title">Maximálna doba vstrebávania sacharidov [h]</string>
|
||||
<string name="absorption_cutoff_summary">Doba, po ktorej sú všetky sacharidy považované za vstrebané. Zvyšné budú orezané.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Hodnota glykémie, pri ktorej bude podávanie inzulínu zastavené. Východzia hodnota využíva štandardný cieľový model. Užívateľ môže nastaviť hodnoty od 3,3 mmol/l do 5,5 mmol/l. Pri hodnotách pod 3,6 mmol/l se použije východzí model.</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Zobrazovať kolónku poznámky v dialógoch ošetrení</string>
|
||||
<string name="next_button">Ďalšia</string>
|
||||
<string name="previous_button">Späť</string>
|
||||
|
@ -643,7 +645,6 @@
|
|||
<string name="needsystemwindowpermission">Aplikácia vyžaduje pre oznámenia systémové oprávnenie</string>
|
||||
<string name="needlocationpermission">Aplikácia vyžaduje oprávnenie polohy, pre vyhľadávanie BT a identifikáciu WiFi</string>
|
||||
<string name="needstoragepermission">Aby bolo možné nahrávať logy a exportovať nastavenia, je nutné pre aplikáciu povoliť oprávnenie prístupu k úložisku</string>
|
||||
<string name="needconnectpermission">Aplikácia vyžaduje povolenie bluetooth</string>
|
||||
<string name="request">Požiadavka</string>
|
||||
<string name="open_navigation">Otvoriť Menu</string>
|
||||
<string name="close_navigation">Zavrieť Menu</string>
|
||||
|
@ -1035,10 +1036,12 @@
|
|||
<string name="a11y_only_on_watch">iba na hodinkách</string>
|
||||
<string name="a11y_only_on_phone">iba na telefóne</string>
|
||||
<string name="a11y_drag_and_drop_handle">úchop potiahni a pusť</string>
|
||||
<string name="search">Hľadať</string>
|
||||
<!-- Aidex Cgms -->
|
||||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">Aidex</string>
|
||||
<string name="description_source_aidex">Prijímať hodnoty glykémie zo senzora GlucoRx Aidex.</string>
|
||||
<string name="blocked_by_charging">Zablokované možnosti nabíjania</string>
|
||||
<string name="blocked_by_connectivity">Zablokované možnosti pripojenia</string>
|
||||
<string name="no_watch_connected">(Žiadne hodinky nie sú pripojené)</string>
|
||||
</resources>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue