Update plasma

This commit is contained in:
BuyMyMojo 2025-04-22 01:30:36 +10:00
parent cf88cf4a7b
commit d83c5a0a54
Signed by untrusted user who does not match committer: aria
GPG key ID: 19AB7AA462B8AB3B
160 changed files with 7837 additions and 0 deletions

View file

@ -0,0 +1,419 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
import org.kde.plasma.plasmoid
import "../js/traductor.js" as Traduc
import "../js/GetInfoApi.js" as GetInfoApi
import "../js/geoCoordinates.js" as GeoCoordinates
import "../js/GetCity.js" as GetCity
import "../js/GetModelWeather.js" as GetModelWeather
Item {
signal dataChanged // Definir el signal aquí
signal simpleDataReady // Definir el signal aquí
function obtener(texto, indice) {
var palabras = texto.split(/\s+/); // Divide el texto en palabras utilizando el espacio como separador
return palabras[indice - 1]; // El índice - 1 porque los índices comienzan desde 0 en JavaScript
}
function fahrenheit(temp) {
if (temperatureUnit == 0) {
return temp;
} else {
return Math.round((temp * 9 / 5) + 32);
}
}
property bool isUpdate: false
property string lastUpdate: "0"
property int hoursC: 0
property string newValuesWeather: "0"
property string newValuesForeWeather: "0"
property bool active: true// Plasmoid.configuration.weatheCardActive
property bool isInExecution: false
property string useCoordinatesIp: Plasmoid.configuration.useCoordinatesIp//"true"
property string latitudeC: Plasmoid.configuration.manualLatitude
property string longitudeC: Plasmoid.configuration.manualLongitude
property string temperatureUnit: Plasmoid.configuration.temperatureUnit
property string latitude: (useCoordinatesIp === "true") ? latitudeIP : (latitudeC === "0") ? latitudeIP : latitudeC
property string longitud: (useCoordinatesIp === "true") ? longitudIP : (longitudeC === "0") ? longitudIP : longitudeC
property var observerCoordenates: latitude + longitud
property int currentTime: Number(Qt.formatDateTime(new Date(), "h"))
property string datosweather: "0"
property string forecastWeather: "0"
property string observer: datosweather + forecastWeather
property int retrysCity: 0
property string oneIcon: asingicon(obtener(forecastWeather, 1))
property string twoIcon: asingicon(obtener(forecastWeather, 2))
property string threeIcon: asingicon(obtener(forecastWeather, 3))
property string fourIcon: asingicon(obtener(forecastWeather, 4))
property string fiveIcon: asingicon(obtener(forecastWeather, 5))
property string sixIcon: asingicon(obtener(forecastWeather, 6))
property string sevenIcon: asingicon(obtener(forecastWeather, 7))
property int oneMax: fahrenheit(obtener(forecastWeather, 8))
property int twoMax: fahrenheit(obtener(forecastWeather, 9))
property int threeMax: fahrenheit(obtener(forecastWeather, 10))
property int fourMax: fahrenheit(obtener(forecastWeather, 11))
property int fiveMax: fahrenheit(obtener(forecastWeather, 12))
property int sixMax: fahrenheit(obtener(forecastWeather, 13))
property int sevenMax: fahrenheit(obtener(forecastWeather, 14))
property int oneMin: fahrenheit(obtener(forecastWeather, 15))
property int twoMin: fahrenheit(obtener(forecastWeather, 16))
property int threeMin: fahrenheit(obtener(forecastWeather, 17))
property int fourMin: fahrenheit(obtener(forecastWeather, 18))
property int fiveMin: fahrenheit(obtener(forecastWeather, 19))
property int sixMin: fahrenheit(obtener(forecastWeather, 20))
property int sevenMin: fahrenheit(obtener(forecastWeather, 21))
property string day: (Qt.formatDateTime(new Date(), "yyyy-MM-dd"))
property string therday: Qt.formatDateTime(new Date(new Date().getTime() + (numberOfDays * 24 * 60 * 60 * 1000)), "yyyy-MM-dd")
property string finDay: Qt.formatDateTime(new Date(new Date().getTime() + (1 * 24 * 60 * 60 * 1000)), "yyyy-MM-dd")
property int numberOfDays: 6
property string currentTemperature: datosweather !== "0" ? fahrenheit(obtener(datosweather, 1)) : "?"
property string codeleng: ((Qt.locale().name)[0] + (Qt.locale().name)[1])
property string codeweather: obtener(datosweather, 4)
property string codeweatherTomorrow: obtener(forecastWeather, 2)
property string codeweatherDayAftertomorrow: obtener(forecastWeather, 3)
property string codeweatherTwoDaysAfterTomorrow: obtener(forecastWeather, 4)
property string minweatherCurrent: fahrenheit(obtener(datosweather, 2))
property string maxweatherCurrent: fahrenheit(obtener(datosweather, 3))
property var tempHours: [fahrenheit(obtener(datosweather, 9)), fahrenheit(obtener(datosweather, 10)), fahrenheit(obtener(datosweather, 11)), fahrenheit(obtener(datosweather, 12)), fahrenheit(obtener(datosweather, 13))]
property var iconHours: [asingicon(obtener(datosweather, 14)), asingicon(obtener(datosweather, 15)), asingicon(obtener(datosweather, 16)), asingicon(obtener(datosweather, 17)), asingicon(obtener(datosweather, 18)) ]
property string minweatherTomorrow: twoMin
property string maxweatherTomorrow: twoMax
property string minweatherDayAftertomorrow: threeMin
property string maxweatherDayAftertomorrow: threeMax
property string minweatherTwoDaysAfterTomorrow: fourMax
property string maxweatherTwoDaysAfterTomorrow: fourMax
property string iconWeatherCurrent: asingicon(codeweather)
property string uvindex: uvIndexLevelAssignment(obtener(datosweather, 7))
property string windSpeed: obtener(datosweather, 6)
property string weatherLongtext: i18n(textWeather(codeweather))
property string weatherShottext: i18n(shortTextWeather(codeweather))
property string probabilidadDeLLuvia: obtener(datosweather, 5)
property string textProbability: Traduc.rainProbabilityText(codeleng)
property string completeCoordinates: ""
property string oldCompleteCoordinates: "1"
property string latitudeIP: completeCoordinates.substring(0, (completeCoordinates.indexOf(' ')) - 1)
property string longitudIP: completeCoordinates.substring(completeCoordinates.indexOf(' ') + 1)
property string uvtext: Traduc.uvRadiationText(codeleng)
property string windSpeedText: Traduc.windSpeedText(codeleng)
property int isDay: obtener(datosweather, 8)
property string city: "unk"
property string prefixIcon: isDay === 1 ? "" : "-night"
Component.onCompleted: {
updateWeather(1);
}
function uvIndexLevelAssignment(nivel) {
if (nivel < 3) {
return nivel + " " + Traduc.lavelUV(codeleng, 0);
} else {
if (nivel < 6) {
return nivel + " " + Traduc.lavelUV(codeleng, 1);
} else {
if (nivel < 8) {
return nivel + " " + Traduc.lavelUV(codeleng, 2);
} else {
if (nivel < 11) {
return nivel + " " + Traduc.lavelUV(codeleng, 3);
} else {
return nivel + " " + Traduc.lavelUV(codeleng, 4);
}
}
}
}
}
function getCoordinatesWithIp() {
GeoCoordinates.obtenerCoordenadas(function(result) {
completeCoordinates = result;
retryCoordinate.start()
});
}
onObserverCoordenatesChanged: {
console.log("Coordenadas cambiaron, actualizando clima");
if (latitude && longitud && latitude !== "0" && longitud !== "0") {
updateWeather(2);
getCityFuncion();
} else {
console.warn("Coordenadas inválidas, reintentando...");
retryCoordinate.start();
}
}
function getCityFuncion() {
if (!latitude || !longitud || latitude === "0" || longitud === "0") {
console.error("Coordenadas inválidas para la solicitud de ciudad");
return;
}
GetCity.getNameCity(latitude, longitud, codeleng, function(result) {
city = result;
retrycity.start()
});
}
function getWeatherApi() {
GetInfoApi.obtenerDatosClimaticos(latitude, longitud, day, finDay, currentTime, function(result) {
if (isUpdate) {
newValuesWeather = result;
} else {
datosweather = result;
}
getForecastWeather()
retry.start()
});
}
function getForecastWeather() {
GetModelWeather.GetForecastWeather(latitude, longitud, day, therday, function(result) {
if (isUpdate) {
newValuesForeWeather = result
} else {
forecastWeather = result
};
});
}
function asingicon(x, b) {
let wmocodes = {
0: "clear",
1: "few-clouds",
2: "few-clouds",
3: "clouds",
51: "showers-scattered",
53: "showers-scattered",
55: "showers-scattered",
56: "showers-scattered",
57: "showers-scattered",
61: "showers",
63: "showers",
65: "showers",
66: "showers-scattered",
67: "showers",
71: "snow-scattered",
73: "snow",
75: "snow",
77: "hail",
80: "showers",
81: "showers",
82: "showers",
85: "snow-scattered",
86: "snow",
95: "storm",
96: "storm",
99: "storm",
};
var iconName = "weather-" + (wmocodes[x] || "unknown");
var iconNamePresicion = iconName + prefixIcon
return b === "preciso" ? iconNamePresicion : iconName;
}
function textWeather(x) {
let text = {
0: "Clear",
1: "Mainly clear",
2: "Partly cloudy",
3: "Overcast",
51: "Drizzle light intensity",
53: "Drizzle moderate intensity",
55: "Drizzle dense intensity",
56: "Freezing Drizzle light intensity",
57: "Freezing Drizzle dense intensity",
61: "Rain slight intensity",
63: "Rain moderate intensity",
65: "Rain heavy intensity",
66: "Freezing Rain light intensity",
67: "Freezing Rain heavy intensity",
71: "Snowfall slight intensity",
73: "Snowfall moderate intensity",
75: "Snowfall heavy intensity",
77: "Snow grains",
80: "Rain showers slight",
81: "Rain showers moderate",
82: "Rain showers violent",
85: "Snow showers slight",
86: "Snow showers heavy",
95: "Thunderstorm",
96: "Thunderstorm with slight hail"
};
return text[x]
}
function shortTextWeather(x) {
let text = {
0: "Clear",
1: "Clear",
2: "Cloudy",
3: "Cloudy",
51: "Drizzle",
53: "Drizzle",
55: "Drizzle",
56: "Drizzle",
57: "Drizzle",
61: "Rain",
63: "Rain",
65: "Rain",
66: "Rain",
67: "Rain",
71: "Snow",
73: "Snow",
75: "Snow",
77: "Hail",
80: "Showers",
81: "Showers",
82: "Showers",
85: "Showers",
86: "Showers",
95: "Storm",
96: "Storm",
99: "Storm"
};
return text[x]
}
function updateWeather(x) {
if (x === 1) {
if (useCoordinatesIp === "true") {
getCoordinatesWithIp();
} else {
if (latitudeC === "0" || longitudC === "0") {
getCoordinatesWithIp();
} else {
getWeatherApi()
}
}
}
///
if (x === 2) {
getWeatherApi();
}
}
onObserverChanged: {
if (forecastWeather.length > 3) {
lastUpdate = new Date()
dataChanged();
}
}
onNewValuesForeWeatherChanged: {
if (newValuesForeWeather.length > 3) {
datosweather = newValuesWeather;
forecastWeather = newValuesForeWeather;
newValuesWeather = "0";
newValuesForeWeather= "0";
}
}
Timer {
id: retryCoordinate
interval: 5000
running: false
repeat: false
onTriggered: {
if (completeCoordinates === "") {
getCoordinatesWithIp();
} else {
if (isUpdate) {
veri.start()
}
}
}
}
Timer {
id: retrycity
interval: 6000
running: false
repeat: false
onTriggered: {
if (city === "unk" && retrysCity < 5) {
retrysCity = retrysCity + 1
getCityFuncion();
}
}
}
Timer {
id: retry
interval: 5000
running: false
repeat: false
onTriggered: {
if (datosweather === "0") {
getWeatherApi();
}
}
}
Timer {
id: weatherupdate
interval: 900000
running: true
repeat: true
onTriggered: {
isUpdate = true
oldCompleteCoordinates = completeCoordinates
getCoordinatesWithIp()
//updateWeather(1);
//veri.start()
}
}
Timer {
id: observateHours
interval: 1000
running: true
repeat: true
onTriggered: {
hoursC = Qt.formatDateTime(new Date(), "h")
}
}
Timer {
id: veri
interval: 4000
running: false
repeat: false
onTriggered: {
//newValuesWeather = "0"
if (oldCompleteCoordinates === completeCoordinates) {
updateWeather(2)
}
}
}
onUseCoordinatesIpChanged: {
if (active) {
updateWeather(1);
isInExecution = true
}
}
}