From 06eee8902258cd3e9a7bf4d27668d4887522d2a2 Mon Sep 17 00:00:00 2001 From: Pranshul Date: Sun, 22 Dec 2024 21:21:04 +0530 Subject: [PATCH] updated v1.12.0 -full, fixed #246 --- app/build.gradle | 4 +- app/release/output-metadata.json | 4 +- app/src/main/AndroidManifest.xml | 10 +- app/src/main/assets/app/app.js | 408 ++- app/src/main/assets/app/renderForecastPage.js | 10 +- app/src/main/assets/app/renderWeather.js | 2 +- app/src/main/assets/index.html | 143 +- app/src/main/assets/langs/langs.js | 2949 ++++++++++------- app/src/main/assets/modules/scroll.js | 3 +- app/src/main/assets/modules/units.js | 51 +- app/src/main/assets/pages/AboutPage.html | 6 +- app/src/main/assets/pages/ArrangeItems.html | 308 ++ .../conditions_pages/humidity_forecast.html | 2 +- .../pages/conditions_pages/wind_forecast.html | 2 +- app/src/main/assets/pages/settings.html | 41 +- app/src/main/assets/ui-files/ui.css | 70 +- .../example/weathermaster/ArrangeItems.java | 440 +++ .../weathermaster/SettingsActivity.java | 8 + 18 files changed, 3124 insertions(+), 1337 deletions(-) create mode 100644 app/src/main/assets/pages/ArrangeItems.html create mode 100644 app/src/main/java/com/example/weathermaster/ArrangeItems.java diff --git a/app/build.gradle b/app/build.gradle index 92c74c075..46ef44abf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.example.weathermaster" minSdk 22 targetSdk 33 - versionCode 95 - versionName "1.11.0 (W)" + versionCode 97 + versionName "1.12.0 (W)" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index df699868b..43113b6fb 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -11,8 +11,8 @@ "type": "SINGLE", "filters": [], "attributes": [], - "versionCode": 95, - "versionName": "1.11.0 (W)", + "versionCode": 97, + "versionName": "1.12.0 (W)", "outputFile": "app-release.apk" } ], diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e37da561b..0e7d22eb8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,7 +17,9 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Base.Theme.WeatherMaster" - tools:targetApi="33"> + android:debuggable="true" + tools:targetApi="33" + tools:ignore="HardcodedDebugMode"> + { + ReturnHomeLocation(); + }, 1000); + if (localStorage.getItem("selectedMainWeatherProvider") === "Met norway") { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by Met Norway (Global)"; + } else if ( + localStorage.getItem("ApiForAccu") && + localStorage.getItem("selectedMainWeatherProvider") === "Accuweather" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by Accuweather (Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "meteoFrance" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by Météo-France (Europe, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "dwdGermany" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by DWD (Europe, Global)"; + } else if (localStorage.getItem("selectedMainWeatherProvider") === "noaaUS") { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by NOAA (Americas, Global)"; + } else if (localStorage.getItem("selectedMainWeatherProvider") === "ecmwf") { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by ECMWF (Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "ukMetOffice" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by UK Met Office (Europe, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "jmaJapan" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by JMA (Asia, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "gemCanada" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by GEM (Americas, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "bomAustralia" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by BOM (Oceania, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "cmaChina" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by CMA (Asia, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "knmiEurope" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by KNMI (Europe, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "dmiEurope" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by DMI (Europe, Global)"; + } else { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by Open-Meteo (Global)"; + } + } else{ + useAutoCurrentLocation(); + sendThemeToAndroid("ReqLocation"); + } document.querySelector(".currentLocationdiv").hidden = false; document.getElementById("showDeviceLocation").hidden = false; } else if (DefaultLocation.lat && DefaultLocation.lon) { - DecodeWeather( - DefaultLocation.lat, - DefaultLocation.lon, - DefaultLocation.name - ); + const offlineData = localStorage.getItem("DefaultLocation"); + const parsedOfflineData = JSON.parse(offlineData); + let weatherDataKey; + if ( + localStorage.getItem("selectedMainWeatherProvider") === "Met norway" + ) { + weatherDataKey = `WeatherDataMetNorwayTimeStamp_${parsedOfflineData.name}`; + } else if ( + localStorage.getItem("ApiForAccu") && + localStorage.getItem("selectedMainWeatherProvider") === "Accuweather" + ) { + weatherDataKey = `WeatherDataAccuCurrentTimeStamp_${parsedOfflineData.name}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "meteoFrance" + ) { + weatherDataKey = `WeatherDataMeteoFranceTimeStamp_${parsedOfflineData.name}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "dwdGermany" + ) { + weatherDataKey = `WeatherDataDWDGermanyTimeStamp_${parsedOfflineData.name}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "noaaUS" + ) { + weatherDataKey = `WeatherDataNOAAUSTimeStamp_${parsedOfflineData.name}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "ecmwf" + ) { + weatherDataKey = `WeatherDataECMWFTimeStamp_${parsedOfflineData.name}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "ukMetOffice" + ) { + weatherDataKey = `WeatherDataukMetOfficeTimeStamp_${parsedOfflineData.name}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "jmaJapan" + ) { + weatherDataKey = `WeatherDataJMAJapanTimeStamp_${parsedOfflineData.name}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "gemCanada" + ) { + weatherDataKey = `WeatherDatagemCanadaTimeStamp_${parsedOfflineData.name}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "bomAustralia" + ) { + weatherDataKey = `WeatherDatabomAustraliaTimeStamp_${parsedOfflineData.name}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "cmaChina" + ) { + weatherDataKey = `WeatherDatacmaChinaTimeStamp_${parsedOfflineData.name}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === + "knmiNetherlands" + ) { + weatherDataKey = `WeatherDataknmiNetherlandsTimeStamp_${parsedOfflineData.name}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "dmiDenmark" + ) { + weatherDataKey = `WeatherDatadmiDenmarkTimeStamp_${parsedOfflineData.name}`; + } else { + weatherDataKey = `WeatherDataOpenMeteoTimeStamp_${parsedOfflineData.name}`; + } + + const weatherData = localStorage.getItem(weatherDataKey); + + + const providedDate = new Date(weatherData); + + const currentDate = new Date(); + + const timeDifference = currentDate - providedDate; + + const timeDifferenceInMinutes = timeDifference / (1000 * 60); + + if (timeDifferenceInMinutes < 30) { + setTimeout(() => { + ReturnHomeLocation(); + }, 1000); + if (localStorage.getItem("selectedMainWeatherProvider") === "Met norway") { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by Met Norway (Global)"; + } else if ( + localStorage.getItem("ApiForAccu") && + localStorage.getItem("selectedMainWeatherProvider") === "Accuweather" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by Accuweather (Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "meteoFrance" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by Météo-France (Europe, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "dwdGermany" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by DWD (Europe, Global)"; + } else if (localStorage.getItem("selectedMainWeatherProvider") === "noaaUS") { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by NOAA (Americas, Global)"; + } else if (localStorage.getItem("selectedMainWeatherProvider") === "ecmwf") { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by ECMWF (Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "ukMetOffice" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by UK Met Office (Europe, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "jmaJapan" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by JMA (Asia, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "gemCanada" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by GEM (Americas, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "bomAustralia" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by BOM (Oceania, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "cmaChina" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by CMA (Asia, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "knmiEurope" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by KNMI (Europe, Global)"; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "dmiEurope" + ) { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by DMI (Europe, Global)"; + } else { + document.querySelector(".data_provider_name_import").innerHTML = + "Data by Open-Meteo (Global)"; + } + } else{ + DecodeWeather( + DefaultLocation.lat, + DefaultLocation.lon, + DefaultLocation.name + ); + + document.getElementById("city-name").innerHTML = DefaultLocation.name; + document.getElementById("SelectedLocationText").innerHTML = + DefaultLocation.name; + localStorage.setItem("CurrentLocationName", DefaultLocation.name); + document.getElementById("currentLocationName").textContent = + DefaultLocation.name; + document.getElementById("showDeviceLocation").hidden = true; + } + + + - document.getElementById("city-name").innerHTML = DefaultLocation.name; - document.getElementById("SelectedLocationText").innerHTML = - DefaultLocation.name; - localStorage.setItem("CurrentLocationName", DefaultLocation.name); - document.getElementById("currentLocationName").textContent = - DefaultLocation.name; - document.getElementById("showDeviceLocation").hidden = true; } } else { useAutoCurrentLocation(); @@ -212,6 +501,7 @@ document.addEventListener("DOMContentLoaded", () => { document.querySelector(".view_device_location").hidden = true; sendThemeToAndroid("DisableSwipeRefresh"); loadSavedLocations(); +initializeDragAndDropLocations(); let savedLocations = JSON.parse(localStorage.getItem("savedLocations")) || []; @@ -444,15 +734,18 @@ async function loadSavedLocations() { const currentTime = new Date().getTime(); savedLocationsHolder.innerHTML = ""; + let dataIdCounter = 1; for (const location of savedLocations) { const savedLocationItem = document.createElement("savedLocationItem"); + savedLocationItem.setAttribute("data-id", dataIdCounter++); savedLocationItem.setAttribute("lat", location.lat); savedLocationItem.setAttribute("lon", location.lon); savedLocationItem.setAttribute("locationLabel", location.locationName); const savedLocationItemLat = savedLocationItem.getAttribute("lat"); const savedLocationItemLon = savedLocationItem.getAttribute("lon"); + let temp = "0"; let icon = ""; let showReloadBtn = "hidden"; @@ -3079,12 +3372,97 @@ function refreshWeather() { const longSend = localStorage.getItem("currentLong"); const CurrentLocationName = localStorage.getItem("CurrentLocationName"); + let weatherDataKey; + if ( + localStorage.getItem("selectedMainWeatherProvider") === "Met norway" + ) { + weatherDataKey = `WeatherDataMetNorwayTimeStamp_${CurrentLocationName}`; + } else if ( + localStorage.getItem("ApiForAccu") && + localStorage.getItem("selectedMainWeatherProvider") === "Accuweather" + ) { + weatherDataKey = `WeatherDataAccuCurrentTimeStamp_${CurrentLocationName}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "meteoFrance" + ) { + weatherDataKey = `WeatherDataMeteoFranceTimeStamp_${CurrentLocationName}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "dwdGermany" + ) { + weatherDataKey = `WeatherDataDWDGermanyTimeStamp_${CurrentLocationName}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "noaaUS" + ) { + weatherDataKey = `WeatherDataNOAAUSTimeStamp_${CurrentLocationName}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "ecmwf" + ) { + weatherDataKey = `WeatherDataECMWFTimeStamp_${CurrentLocationName}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "ukMetOffice" + ) { + weatherDataKey = `WeatherDataukMetOfficeTimeStamp_${CurrentLocationName}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "jmaJapan" + ) { + weatherDataKey = `WeatherDataJMAJapanTimeStamp_${CurrentLocationName}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "gemCanada" + ) { + weatherDataKey = `WeatherDatagemCanadaTimeStamp_${CurrentLocationName}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "bomAustralia" + ) { + weatherDataKey = `WeatherDatabomAustraliaTimeStamp_${CurrentLocationName}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "cmaChina" + ) { + weatherDataKey = `WeatherDatacmaChinaTimeStamp_${CurrentLocationName}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === + "knmiNetherlands" + ) { + weatherDataKey = `WeatherDataknmiNetherlandsTimeStamp_${CurrentLocationName}`; + } else if ( + localStorage.getItem("selectedMainWeatherProvider") === "dmiDenmark" + ) { + weatherDataKey = `WeatherDatadmiDenmarkTimeStamp_${CurrentLocationName}`; + } else { + weatherDataKey = `WeatherDataOpenMeteoTimeStamp_${CurrentLocationName}`; + } + + const weatherData = localStorage.getItem(weatherDataKey); + + + const providedDate = new Date(weatherData); + + const currentDate = new Date(); + + const timeDifference = currentDate - providedDate; + + const timeDifferenceInMinutes = timeDifference / (1000 * 60); + + if (timeDifferenceInMinutes < 10) { + + setTimeout(() => { + document.querySelector(".no_touch_screen").hidden = true; + ShowSnackMessage.ShowSnack( + "Please wait 10 minutes before refreshing again.", + "long" + ); + sendThemeToAndroid("StopRefreshingLoader"); + }, 1000); + } else{ + DecodeWeather( latSend, longSend, CurrentLocationName, `Refreshed_${CurrentLocationName}` ); + } + + } else { setTimeout(() => { document.querySelector(".no_touch_screen").hidden = true; @@ -3249,7 +3627,7 @@ document.addEventListener("DOMContentLoaded", () => { }); document.addEventListener("DOMContentLoaded", async function () { - const currentVersion = "v1.11.0"; + const currentVersion = "v1.12.0"; const githubRepo = "PranshulGG/WeatherMaster"; const releasesUrl = `https://api.github.com/repos/${githubRepo}/releases/latest`; diff --git a/app/src/main/assets/app/renderForecastPage.js b/app/src/main/assets/app/renderForecastPage.js index bb24216b8..127f86c30 100644 --- a/app/src/main/assets/app/renderForecastPage.js +++ b/app/src/main/assets/app/renderForecastPage.js @@ -305,14 +305,12 @@ async function displayDailyForecast(forecast, forecastDaily) { const dateObj = new Date(date + 'T00:00:00'); const isToday = date === todayString; - const weekday = isToday ? 'today' : dateObj.toLocaleDateString('en-US', { weekday: 'short' }).toLowerCase(); + const translatedWeekDays = weekDaysCache.map(day => { + return [day][0]; + }); + const weekdayLang = translatedWeekDays[index % translatedWeekDays.length]; - const weekdayLang = isToday - ? getTranslationByLang(localStorage.getItem('AppLanguageCode'), ["Today"])[0] // Translate "Today" - : getTranslationByLang(localStorage.getItem('AppLanguageCode'), weekDaysCache).find( - day => day.toLowerCase() === weekday.toLowerCase() - ); const dailyData = forecastDaily[date]; diff --git a/app/src/main/assets/app/renderWeather.js b/app/src/main/assets/app/renderWeather.js index 6bba0aae2..774b92362 100644 --- a/app/src/main/assets/app/renderWeather.js +++ b/app/src/main/assets/app/renderWeather.js @@ -362,7 +362,7 @@ function DailyWeather(dailyForecast) { ReportFromdaily(send1stDay); - weekDaysCache.push(getTranslationByLang("en", weekday)); + weekDaysCache.push(getTranslationByLang(localStorage.getItem("AppLanguageCode"), weekday)); const rainPercentage = dailyForecast.precipitation_probability_max[index]; const DailyWeatherCode = dailyForecast.weather_code[index]; diff --git a/app/src/main/assets/index.html b/app/src/main/assets/index.html index cb83c1d50..627fc590e 100644 --- a/app/src/main/assets/index.html +++ b/app/src/main/assets/index.html @@ -84,7 +84,7 @@
Now
-

0°

+

0°

Weather Icon
@@ -141,7 +141,7 @@ @@ -189,6 +189,7 @@ +
@@ -258,8 +259,10 @@
+
-
+
+

Next 24-hr

Mar, 19

@@ -299,8 +302,8 @@ - -
+
+

@@ -322,20 +325,20 @@

- + + + + + + + + -
+
-