Update VodafoneDE.js

v2.4.0:
          - added Support for flat tariff like "GigaMobil M mit unbegrenzten GB", "GigaMobil XL mit unbegrenzten GB" or other flat tariffs
This commit is contained in:
Chaos53925 2023-09-19 14:01:45 +02:00 committed by GitHub
parent 8f52a70ce6
commit 172ec57727
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3,9 +3,11 @@
// icon-color: red; icon-glyph: broadcast-tower; // icon-color: red; icon-glyph: broadcast-tower;
/************** /**************
Version 2.3.0 Version 2.4.0
Changelog: Changelog:
v2.4.0:
- added Support for flat tariff like "GigaMobil M mit unbegrenzten GB", "GigaMobil XL mit unbegrenzten GB" or other flat tariffs
v2.3.0: v2.3.0:
- Support for lockscreen widgets added - Support for lockscreen widgets added
v2.2.2: v2.2.2:
@ -252,7 +254,7 @@ async function setupAssistant () {
let res, data let res, data
try { try {
res = await req.loadJSON() res = await req.loadJSON()
if(!res['serviceUsageVBO'] || !res['serviceUsageVBO']['usageAccounts'] || !res['serviceUsageVBO']['usageAccounts'][0] || !res['serviceUsageVBO']['usageAccounts'][0]['usageGroup']) { if (!res['serviceUsageVBO'] || !res['serviceUsageVBO']['usageAccounts'] || !res['serviceUsageVBO']['usageAccounts'][0] || !res['serviceUsageVBO']['usageAccounts'][0]['usageGroup']) {
throw new Error('invalid response: ' + JSON.stringify(res)) throw new Error('invalid response: ' + JSON.stringify(res))
} }
data = res['serviceUsageVBO']['usageAccounts'][0]['usageGroup'] data = res['serviceUsageVBO']['usageAccounts'][0]['usageGroup']
@ -374,7 +376,7 @@ function creatProgress(total, havegone) {
return context.getImage() return context.getImage()
} }
function getDiagram(percentage) { function getDiagram(percentage, isFlat, widgetType) {
function drawArc(ctr, rad, w, deg) { function drawArc(ctr, rad, w, deg) {
bgx = ctr.x - rad bgx = ctr.x - rad
bgy = ctr.y - rad bgy = ctr.y - rad
@ -426,9 +428,22 @@ function getDiagram(percentage) {
) )
canvas.setTextAlignedCenter() canvas.setTextAlignedCenter()
canvas.setTextColor(textColor) canvas.setTextColor(textColor)
canvas.setFont(Font.boldSystemFont(canvTextSize)) canvas.setFont(Font.boldSystemFont(108))
canvas.drawTextInRect(`${percentage}%`, canvTextRect) if (isFlat === true) {
if (widgetType === "small" || "medium" || "large" || "extraLarge") {
const infinitySize = canvSize / 2;
canvas.setFont(Font.boldSystemFont(infinitySize));
const textRect = new Rect(0, infinitySize / 3, canvSize, canvSize);
canvas.drawTextInRect(``, textRect);
} else {
const infinitySize = canvSize / 2;
canvas.setFont(Font.boldSystemFont(infinitySize));
const textRect = new Rect(0, infinitySize / 1, canvSize, canvSize);
canvas.drawTextInRect(``, textRect);
}
} else {
canvas.drawTextInRect(`${percentage}%`, canvTextRect);
}
return canvas.getImage() return canvas.getImage()
} }
@ -449,11 +464,21 @@ function getTimeRemaining(endtime) {
} }
function getTotalValues(v) { function getTotalValues(v) {
let totalValues;
if (v.unitOfMeasure !== 'MB') { if (v.unitOfMeasure !== 'MB') {
totalValues = `${(showRemainingContingent ? v.remaining : v.used)} ${descriptionMapping[v.unitOfMeasure] !== undefined ? descriptionMapping[v.unitOfMeasure] : v.unitOfMeasure} von ${v.total} ${descriptionMapping[v.unitOfMeasure] !== undefined ? descriptionMapping[v.unitOfMeasure] : v.unitOfMeasure}` totalValues = `${(showRemainingContingent ? v.remaining : v.used)} ${descriptionMapping[v.unitOfMeasure] !== undefined ? descriptionMapping[v.unitOfMeasure] : v.unitOfMeasure} von ${v.total} ${descriptionMapping[v.unitOfMeasure] !== undefined ? descriptionMapping[v.unitOfMeasure] : v.unitOfMeasure}`
} else if (parseInt(v.total) < 1000) { } else if (parseInt(v.total) < 1000) {
totalValues = `${(showRemainingContingent ? v.remaining : v.used)} MB von ${v.total} MB` totalValues = `${(showRemainingContingent ? v.remaining : v.used)} MB von ${v.total} MB`
} else if (parseInt(v.total) >= 100000000) {
if (showRemainingContingent === true) {
totalValues = `Flat`
} else {
if (v.used <= 1024) {
totalValues = `${v.used} MB verbraucht.`
} else {
let usedGB = (v.used / 1024).toFixed(2)
totalValues = `${usedGB} GB verbraucht.`
}
}
} else { } else {
let GB = ((showRemainingContingent ? v.remaining : v.used) / 1024).toFixed(2) let GB = ((showRemainingContingent ? v.remaining : v.used) / 1024).toFixed(2)
let totalGB = (v.total / 1024).toFixed(2) let totalGB = (v.total / 1024).toFixed(2)
@ -536,7 +561,7 @@ async function getUsage(user, pass, number) {
} }
try { try {
let res = await req.loadJSON() let res = await req.loadJSON()
if(!res['serviceUsageVBO'] || !res['serviceUsageVBO']['usageAccounts'] || !res['serviceUsageVBO']['usageAccounts'][0]) { if (!res['serviceUsageVBO'] || !res['serviceUsageVBO']['usageAccounts'] || !res['serviceUsageVBO']['usageAccounts'][0]) {
if (debug) { if (debug) {
console.log(JSON.stringify(res, null, 2)) console.log(JSON.stringify(res, null, 2))
} }
@ -673,8 +698,9 @@ if (data !== undefined) {
stack.layoutHorizontally() stack.layoutHorizontally()
let v = data.usage[0] let v = data.usage[0]
if (config.widgetFamily !== "accessoryInline") { if (config.widgetFamily !== "accessoryInline") {
const percentage = (100 / v.total * (showRemainingContingent ? v.remaining : v.used)).toFixed(0); const percentage = v.total >= 100000000 ? '∞' : (100 / v.total * (showRemainingContingent ? v.remaining : v.used)).toFixed(0);
stack.addImage(getDiagram(percentage)); const isFlat = v.total >= 100000000
stack.addImage(getDiagram(percentage, isFlat, config.widgetFamily));
} }
if (config.widgetFamily === "accessoryRectangular") { if (config.widgetFamily === "accessoryRectangular") {
stack.addSpacer(5) stack.addSpacer(5)
@ -733,11 +759,12 @@ stack.addImage(getDiagram(percentage));
column.layoutVertically() column.layoutVertically()
column.centerAlignContent() column.centerAlignContent()
const percentage = (100 / v.total * (showRemainingContingent ? v.remaining : v.used)).toFixed(0); const percentage = v.total > 100000000 ? 100 : (100 / v.total * (showRemainingContingent ? v.remaining : v.used)).toFixed(0);
const isFlat = v.total >= 100000000
const imageStack = column.addStack() const imageStack = column.addStack()
imageStack.layoutHorizontally() imageStack.layoutHorizontally()
imageStack.addSpacer() imageStack.addSpacer()
imageStack.addImage(getDiagram(percentage)); imageStack.addImage(getDiagram(percentage, isFlat, config.widgetFamily));
imageStack.addSpacer() imageStack.addSpacer()
column.addSpacer(2) column.addSpacer(2)