Skip to content

Instantly share code, notes, and snippets.

@LupusArgentum
Forked from Sillium/telekom.js
Last active November 7, 2020 15:04
Show Gist options
  • Save LupusArgentum/27a12aeb2db42cf1a3658f6b10ad9079 to your computer and use it in GitHub Desktop.
Save LupusArgentum/27a12aeb2db42cf1a3658f6b10ad9079 to your computer and use it in GitHub Desktop.
iOS-Widget für Datenverbrauch im Telekom-Netz (Forked from Sillium/telekom.js)
Copy link

ghost commented Oct 31, 2020

die Farben hätte ich eher an den prozentualen verbrauch angepasst. Also wie viele Tage hat der Monat noch ->9 Tage
Er hatte 31 Tage macht also pro tag ca 3,2%.
Ich bin jetzt bei Tag 22 also darf ich im grünen Bereich maximal 70,96% verbraucht haben.
In dem Fall <=70,96-3,2/2 =96,36% -> GRÜN
<=70,96-3,2/2 =72,56% -> Gelb
">"72,56% -> ROT

Ich habe einen ganz ähnlichen Wunsch, und das mal für mich angepasst.
Orange wird es wenn nicht mehr viel Luft ist zum "erlaubten Verbrauch".
Der erlaubte Verbrauch wären zur Monatsmitte z.B. 50%.
Rot wird es, wenn man bereits ein gutes Stück mehr verbraucht hat als erlaubt.
Zusätzlich gibt es noch feste Grenzen. Rot wird’s immer ab 90%. Und grün bleibt es immer bis zu einem kleinen Schwellwert.

// change color of the remaining volume according to usage
const line2 = list.addText(100 - data.usedPercentage + "%")
line2.font = Font.boldSystemFont(36)
// rough calculate remainig percentage of this month 
// adjust colors according to what's needed within rest of the month
let availableMonthPercentage = (data.remainingSeconds / (31*86400)) * 100
let bufferPercentage = 5
line2.textColor = Color.green()
if (data.usedPercentage >= ((100 - availableMonthPercentage) - bufferPercentage) && data.usedPercentage >= bufferPercentage) {
  line2.textColor = Color.orange()
} else if (data.usedPercentage >= ((100 - availableMonthPercentage) + bufferPercentage) || data.usedPercentage >= 90) {
  line2.textColor = Color.red()
}

-> Diese Änderung habe ich im "Original-Script" gesehen. Kann ich dieses auch bei dir ändern? Also einfach o.g. Passage gegen die entsprechende Stelle bei dir tauschen?

Danke im Voraus!

@LupusArgentum
Copy link
Author

LupusArgentum commented Oct 31, 2020

const line2 = list.addText(100 - data.usedPercentage + "%")
line2.font = Font.boldSystemFont(36)
// rough calculate remainig percentage of this month 
// adjust colors according to what's needed within rest of the month
let availableMonthPercentage = (data.remainingSeconds / (31*86400)) * 100
let bufferPercentage = 5
line2.textColor = Color.green()
if (data.usedPercentage >= ((100 - availableMonthPercentage) - bufferPercentage) && data.usedPercentage >= bufferPercentage) {
  line2.textColor = Color.orange()
} else if (data.usedPercentage >= ((100 - availableMonthPercentage) + bufferPercentage) || data.usedPercentage >= 90) {
  line2.textColor = Color.red()
}

-> Diese Änderung habe ich im "Original-Script" gesehen. Kann ich dieses auch bei dir ändern? Also einfach o.g. Passage gegen die entsprechende Stelle bei dir tauschen?

Danke im Voraus!

Das sollte sich problemlos in mein Skript einfügen lassen. Einfach die Zeilen die zu line2 gehören durch den neuen Code ersetzen.

Copy link

ghost commented Oct 31, 2020

const line2 = list.addText(100 - data.usedPercentage + "%")
line2.font = Font.boldSystemFont(36)
// rough calculate remainig percentage of this month 
// adjust colors according to what's needed within rest of the month
let availableMonthPercentage = (data.remainingSeconds / (31*86400)) * 100
let bufferPercentage = 5
line2.textColor = Color.green()
if (data.usedPercentage >= ((100 - availableMonthPercentage) - bufferPercentage) && data.usedPercentage >= bufferPercentage) {
  line2.textColor = Color.orange()
} else if (data.usedPercentage >= ((100 - availableMonthPercentage) + bufferPercentage) || data.usedPercentage >= 90) {
  line2.textColor = Color.red()
}

-> Diese Änderung habe ich im "Original-Script" gesehen. Kann ich dieses auch bei dir ändern? Also einfach o.g. Passage gegen die entsprechende Stelle bei dir tauschen?
Danke im Voraus!

Das sollte sich problemlos in mein Skript einfügen lassen. Einfach die Zeilen die zu line2 gehören durch den neuen Code ersetzen.

Ja, ok - bestens! Werde morgen mal ein bisschen mit Mobile Daten surfen und dann schauen ob es rot eingeteigte wird, da ich dann ja quasi über dem prozentualen Tagesbedarf liegen werde.
Melde mich dann mal … ;)

@JoeGit42
Copy link

JoeGit42 commented Oct 31, 2020

const line2 = list.addText(100 - data.usedPercentage + "%")
line2.font = Font.boldSystemFont(36)
// rough calculate remainig percentage of this month
// adjust colors according to what's needed within rest of the month
let availableMonthPercentage = (data.remainingSeconds / (31*86400)) * 100
let bufferPercentage = 5
line2.textColor = Color.green()
if (data.usedPercentage >= ((100 - availableMonthPercentage) - bufferPercentage) && data.usedPercentage >= bufferPercentage) {
line2.textColor = Color.orange()
} else if (data.usedPercentage >= ((100 - availableMonthPercentage) + bufferPercentage) || data.usedPercentage >= 90) {
line2.textColor = Color.red()
}

Aus dem else if muss ein if gemacht werden, dann klappt es besser.
So sieht es inzwischen bei mir aus:
IMG_0486
IMG_0489

Ich habe noch weitere Änderungen vorgenommen:

  • Anzeige des verbleibenden statt des verbrauchten Volumens (im Text und in der Prozentangabe)
  • Anzeige der Restlaufzeit in Tagen (falls noch Tage vorhanden sind) und Stunden. Ggf. als "< 1 Stunde", wenn nur noch Minuten übrig sind.
  • Anzeige der Uhrzeit der letzten erfolgreichen Aktualisierung. Ggf. mit Datum, wenn das nicht am selben Tag war.

@JoeGit42
Copy link

Zeile34: if (!data || !data.usedPercentage)
Hier sollte nicht usedPercentage genutzt werden. Zu Beginn des Abrechnungszeitraums ist das verbrauchte Volumen = 0.
Befindet man sich dann im WLAN, schlägt die Überprüfung zu. Ich habe hier auf initialVolume gewechselt.

Copy link

ghost commented Nov 1, 2020

const line2 = list.addText(100 - data.usedPercentage + "%")
line2.font = Font.boldSystemFont(36)
// rough calculate remainig percentage of this month
// adjust colors according to what's needed within rest of the month
let availableMonthPercentage = (data.remainingSeconds / (31*86400)) * 100
let bufferPercentage = 5
line2.textColor = Color.green()
if (data.usedPercentage >= ((100 - availableMonthPercentage) - bufferPercentage) && data.usedPercentage >= bufferPercentage) {
line2.textColor = Color.orange()
} else if (data.usedPercentage >= ((100 - availableMonthPercentage) + bufferPercentage) || data.usedPercentage >= 90) {
line2.textColor = Color.red()
}

Aus dem else if muss ein if gemacht werden, dann klappt es besser.
So sieht es inzwischen bei mir aus:
IMG_0486
IMG_0489

Ich habe noch weitere Änderungen vorgenommen:

  • Anzeige des verbleibenden statt des verbrauchten Volumens (im Text und in der Prozentangabe)
  • Anzeige der Restlaufzeit in Tagen (falls noch Tage vorhanden sind) und Stunden. Ggf. als "< 1 Stunde", wenn nur noch Minuten übrig sind.
  • Anzeige der Uhrzeit der letzten erfolgreichen Aktualisierung. Ggf. mit Datum, wenn das nicht am selben Tag war.

Kannst du die geänderten Passagen hier einstellen, damit ich die Restlaufzeit in Tagen sowie die Uhrzeit der letzten ERFOLGREICHEN Aktualisierung ebenfalls einstellen kann? Aber Anzeige des verbrauchten Datenvolumens möchte ich gerne beibehalten.
Und ist der Änderung von JoeGIT42 hilfreich? Muss ich dann zusätzlich das "else if" gegen "if" eintauschen?

Vielen Dank im Voraus! :)

@LupusArgentum
Copy link
Author

Ich habe noch weitere Änderungen vorgenommen:

  • Anzeige des verbleibenden statt des verbrauchten Volumens (im Text und in der Prozentangabe)
  • Anzeige der Restlaufzeit in Tagen (falls noch Tage vorhanden sind) und Stunden. Ggf. als "< 1 Stunde", wenn nur noch Minuten übrig sind.
  • Anzeige der Uhrzeit der letzten erfolgreichen Aktualisierung. Ggf. mit Datum, wenn das nicht am selben Tag war.

Kannst du die geänderten Passagen hier einstellen, damit ich die Restlaufzeit in Tagen sowie die Uhrzeit der letzten ERFOLGREICHEN Aktualisierung ebenfalls einstellen kann? Aber Anzeige des verbrauchten Datenvolumens möchte ich gerne beibehalten.
Und ist der Änderung von JoeGIT42 hilfreich? Muss ich dann zusätzlich das "else if" gegen "if" eintauschen?

Vielen Dank im Voraus! :)

Wenn du mir den Code gibst, schaue ich mal, was davon ich hier einstellen möchte.

@LupusArgentum
Copy link
Author

Zeile34: if (!data || !data.usedPercentage)
Hier sollte nicht usedPercentage genutzt werden. Zu Beginn des Abrechnungszeitraums ist das verbrauchte Volumen = 0.
Befindet man sich dann im WLAN, schlägt die Überprüfung zu. Ich habe hier auf initialVolume gewechselt.

Die Zeile ist noch aus dem Original-Skript, darüber hatte ich mir bislang keine Gedanken gemacht. Sollte
if (!data)
nicht eigentlich ausreichen?

@JoeGit42
Copy link

JoeGit42 commented Nov 1, 2020

Zeile34: if (!data || !data.usedPercentage)
Hier sollte nicht usedPercentage genutzt werden. Zu Beginn des Abrechnungszeitraums ist das verbrauchte Volumen = 0.
Befindet man sich dann im WLAN, schlägt die Überprüfung zu. Ich habe hier auf initialVolume gewechselt.

Die Zeile ist noch aus dem Original-Skript, darüber hatte ich mir bislang keine Gedanken gemacht. Sollte
if (!data)
nicht eigentlich ausreichen?

Würde ich auch sagen, allerdings weiss ich nicht, was die Zeile darüber zurückgibt, wenn aus der iCloud keine Daten gelesen werden können. Ich würde false oder null erwarten. Aber wenn es das nicht, macht die zusätzliche Abfrage eines Wertes Sinn.

@JoeGit42
Copy link

JoeGit42 commented Nov 1, 2020

Wenn du mir den Code gibst, schaue ich mal, was davon ich hier einstellen möchte.

Den mache ich nachher nochmal etwas schöner.
Als Issue kann ich das hier nicht eintragen, oder? Dann wäre der potentielle merge leichter.

@LupusArgentum
Copy link
Author

Wenn du mir den Code gibst, schaue ich mal, was davon ich hier einstellen möchte.

Den mache ich nachher nochmal etwas schöner.
Als Issue kann ich das hier nicht eintragen, oder? Dann wäre der potentielle merge leichter.

Ich habe das ganze hier mal als Repo erstellt, da kannst du deinen Issue ggf. eintragen.
Ich habe mich eben selbst daran gewagt deine Änderungen zu programmieren und merke, dass das ganze komplizierter ist als gedacht, daher freue ich mich auf deinen Input :)

@LupusArgentum
Copy link
Author

LupusArgentum commented Nov 1, 2020

Anzeige der Uhrzeit der letzten erfolgreichen (letzter Abruf von datapass.de, nicht mehr letzter Widget-Refresh) Aktualisierung. Ggf. mit Datum, wenn das nicht am selben Tag war.

Das ist mit dem aktuellen Update umgesetzt.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment