diff --git a/.gitignore b/.gitignore index a80db66f..67716fee 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ .vscode/ .cache/ +venv/ + node_modules/ data/ db/ diff --git a/src/nonebot_plugins/liteyuki_weather/qw_api.py b/src/nonebot_plugins/liteyuki_weather/qw_api.py index ab47fad6..22300edd 100644 --- a/src/nonebot_plugins/liteyuki_weather/qw_api.py +++ b/src/nonebot_plugins/liteyuki_weather/qw_api.py @@ -43,18 +43,27 @@ def get_local_data(ulang_code: str) -> dict: """ ulang = Language(ulang_code) return { - "monday" : ulang.get("weather.monday"), + "monday" : ulang.get("weather.monday"), "tuesday" : ulang.get("weather.tuesday"), - "wednesday": ulang.get("weather.wednesday"), - "thursday" : ulang.get("weather.thursday"), - "friday" : ulang.get("weather.friday"), - "saturday" : ulang.get("weather.saturday"), - "sunday" : ulang.get("weather.sunday"), - "today" : ulang.get("weather.today"), - "tomorrow" : ulang.get("weather.tomorrow"), - "day" : ulang.get("weather.day"), - "night" : ulang.get("weather.night"), - "no_aqi" : ulang.get("weather.no_aqi"), + "wednesday" : ulang.get("weather.wednesday"), + "thursday" : ulang.get("weather.thursday"), + "friday" : ulang.get("weather.friday"), + "saturday" : ulang.get("weather.saturday"), + "sunday" : ulang.get("weather.sunday"), + "today" : ulang.get("weather.today"), + "tomorrow" : ulang.get("weather.tomorrow"), + "day" : ulang.get("weather.day"), + "night" : ulang.get("weather.night"), + "no_aqi" : ulang.get("weather.no_aqi"), + "now-windVelocity" : ulang.get("weather.now-windVelocity"), + "now-humidity" : ulang.get("weather.now-humidity"), + "now-feelsLike" : ulang.get("weather.now-feelsLike"), + "now-precip" : ulang.get("weather.now-precip"), + "now-pressure" : ulang.get("weather.now-pressure"), + "now-vis" : ulang.get("weather.now-vis"), + "now-cloud" : ulang.get("weather.now-cloud"), + "astronomy-sunrise" : ulang.get("weather.astronomy-sunrise"), + "astronomy-sunset" : ulang.get("weather.astronomy-sunset"), } diff --git a/src/resources/liteyuki_weather/lang/en.lang b/src/resources/liteyuki_weather/lang/en.lang index d8642dfe..7d3d68a5 100644 --- a/src/resources/liteyuki_weather/lang/en.lang +++ b/src/resources/liteyuki_weather/lang/en.lang @@ -9,4 +9,13 @@ weather.day=Day weather.night=Night weather.today=Today weather.tomorrow=Tomorrow -weather.no_aqi=No AQI data \ No newline at end of file +weather.no_aqi=No AQI data +weather.now-windVelocity=WS +weather.now-humidity=RH +weather.now-feelsLike=FL +weather.now-precip=PPT +weather.now-pressure=MSLP +weather.now-vis=VIS +weather.now-cloud=CC +weather.astronomy-sunrise=SR +weather.astronomy-sunset=SS \ No newline at end of file diff --git a/src/resources/liteyuki_weather/lang/ja.lang b/src/resources/liteyuki_weather/lang/ja.lang index 5c39ab6a..2b221bec 100644 --- a/src/resources/liteyuki_weather/lang/ja.lang +++ b/src/resources/liteyuki_weather/lang/ja.lang @@ -9,4 +9,13 @@ weather.day=昼 weather.night=夜 weather.today=今日 weather.tomorrow=明日 -weather.no_aqi=空気質データなし \ No newline at end of file +weather.no_aqi=空気質データなし +weather.now-windVelocity=風速 +weather.now-humidity=湿度 +weather.now-feelsLike=体感温度 +weather.now-precip=降水量 +weather.now-pressure=気圧 +weather.now-vis=能視距離 +weather.now-cloud=雲量 +weather.astronomy-sunrise=日出 +weather.astronomy-sunset=日没 \ No newline at end of file diff --git a/src/resources/liteyuki_weather/lang/zh-CN.lang b/src/resources/liteyuki_weather/lang/zh-CN.lang index e4fb52e1..26931d65 100644 --- a/src/resources/liteyuki_weather/lang/zh-CN.lang +++ b/src/resources/liteyuki_weather/lang/zh-CN.lang @@ -9,4 +9,13 @@ weather.day=白天 weather.night=夜晚 weather.today=今天 weather.tomorrow=明天 -weather.no_aqi=暂无AQI数据 \ No newline at end of file +weather.no_aqi=暂无AQI数据 +weather.now-windVelocity=风矢 +weather.now-humidity=湿度 +weather.now-feelsLike=体感 +weather.now-precip=降水 +weather.now-pressure=气压 +weather.now-vis=能见 +weather.now-cloud=云量 +weather.astronomy-sunrise=日出 +weather.astronomy-sunset=日落 \ No newline at end of file diff --git a/src/resources/liteyuki_weather/templates/css/weather_now.css b/src/resources/liteyuki_weather/templates/css/weather_now.css index 608c93bb..dd1f4298 100644 --- a/src/resources/liteyuki_weather/templates/css/weather_now.css +++ b/src/resources/liteyuki_weather/templates/css/weather_now.css @@ -187,37 +187,37 @@ .ad-box { margin-bottom: 20px; - - img { - border-radius: 60px; - } } -.sub-info { +#ad { + border-radius: 60px; +} + +#sub-info { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; color: var(--main-text-color); - font-size: 40px; + font-size: 36px; align-items: center; } -.sub-info>div { +.sub-item { display: flex; align-items: center; gap: 5px; overflow: hidden; padding-left: 20px; +} - /*要问就问html调svg为什么那么不友好*/ - img { - transform: translateY(-80px); - /*自定义颜色*/ - filter: drop-shadow(var(--main-text-color) 0 80px); - /*自定义透明度*/ - opacity: 1; - padding-right: 10px; - } +/*要问就问为什么html调svg那么不友好*/ +.sub-svg { + transform: translateY(-80px); + /*此处用作自定义颜色*/ + filter: drop-shadow(var(--main-text-color) 0 80px); + /*此处用作自定义透明度*/ + opacity: 1; + padding-right: 10px; } .attribution-box { @@ -225,16 +225,16 @@ position: relative; display: flex; justify-content: center; +} - #attribution-info { - backdrop-filter: blur(10px); - padding: 0 5px 0; - background-color: rgba(0, 0, 0, 0.5); - font-size: 25px; - justify-content: space-between; - display: inline-flex; - word-wrap: break-word; - color: var(--sub-text-color); - text-align: center; - } +#attribution-info { + backdrop-filter: blur(10px); + padding: 0 5px 0; + background-color: rgba(0, 0, 0, 0.5); + font-size: 25px; + justify-content: space-between; + display: inline-flex; + word-wrap: break-word; + color: var(--sub-text-color); + text-align: center; } \ No newline at end of file diff --git a/src/resources/liteyuki_weather/templates/js/weather_now.js b/src/resources/liteyuki_weather/templates/js/weather_now.js index b8af944f..c2cb7973 100644 --- a/src/resources/liteyuki_weather/templates/js/weather_now.js +++ b/src/resources/liteyuki_weather/templates/js/weather_now.js @@ -54,7 +54,7 @@ if ("aqi" in aqi) { } -templates = { +let templates = { "time": weatherNow["now"]["obsTime"], "city": locationData["name"], "adm": locationData["country"] + " " + locationData["adm1"] + " " + locationData["adm2"], @@ -69,31 +69,48 @@ for (let id in templates) { } -subtemplates = { +let subtemplates = { "now-windDirect": weatherNow["now"]["windDir"] + " " + weatherNow["now"]["wind360"] + "°", - "now-windVelocity": "风矢 " + weatherNow["now"]["windScale"] + "级 " + weatherNow["now"]["windSpeed"] + "km/h", - "now-humidity": "湿度 " + weatherNow["now"]["humidity"] + "%", - "now-feelsLike": "体感 " + weatherNow["now"]["feelsLike"] + "°C", - "now-precip": "降水 " + weatherNow["now"]["precip"] + "mm", - "now-pressure": "气压 " + weatherNow["now"]["pressure"] + "hPa", - "vis": "能见 " + weatherNow["now"]["vis"] + "km", - "cloud ": "云量 " + (weatherNow["now"]["cloud"] == "" ? "无数据" : (weatherNow["now"]["cloud"] + "%")), - "astronomy-sunrise": "日出 " + get_time_hour(weatherAstronomy["sunrise"]), - "astronomy-sunset": "日落 " + get_time_hour(weatherAstronomy["sunset"]) + "now-windVelocity": localData["now-windVelocity"] + " " + weatherNow["now"]["windScale"] + "级 " + weatherNow["now"]["windSpeed"] + "km/h", + "now-humidity": localData["now-humidity"] + " " + weatherNow["now"]["humidity"] + "%", + "now-feelsLike": localData["now-feelsLike"] + " " + weatherNow["now"]["feelsLike"] + "°C", + "now-precip": localData["now-precip"] + " " + weatherNow["now"]["precip"] + "mm", + "now-pressure": localData["now-pressure"] + " " + weatherNow["now"]["pressure"] + "hPa", + "now-vis": localData["now-vis"] + " " + weatherNow["now"]["vis"] + "km", + "now-cloud": localData["now-cloud"] + " " + (weatherNow["now"]["cloud"] == "" ? "无数据" : (weatherNow["now"]["cloud"] + "%")), + "astronomy-sunrise": localData["astronomy-sunrise"] + " " + get_time_hour(weatherAstronomy["sunrise"]), + "astronomy-sunset": localData["astronomy-sunset"] + " " + get_time_hour(weatherAstronomy["sunset"]) } -let subItemDivTemplate = document.importNode(document.getElementById("sub-info-template").content, true); +let subiconMap = { + "now-windDirect": "windDirect", + "now-windVelocity": "windVelocity", + "now-humidity": "humidity", + "now-feelsLike": "feelsLike", + "now-precip": "precip", + "now-pressure": "pressure", + "now-vis": "vis", + "now-cloud": "cloud", + "astronomy-sunrise": "sunrise", + "astronomy-sunset": "sunset" +}; -let subItemDiv = subItemDivTemplate.querySelector(".sub-info"); +let subtemplate = document.getElementById('sub-info-template').content; +let subcontainer = document.getElementById('sub-info'); -for (let id in subtemplates) { - let element = subItemDiv.querySelector(`#${id}`); - if (element) { - element.innerText = subtemplates[id]; - } -} +Object.keys(subtemplates).forEach(id => { + let subItemDiv = document.importNode(subtemplate, true).querySelector('.sub-item'); + + subItemDiv.querySelector(`div`).innerText = subtemplates[id]; + + let iconName = subiconMap[id]; + + subItemDiv.querySelector(`img`).src = `./img/svg/${iconName}.svg`; + subItemDiv.querySelector(`img`).alt = `SVG ${id}`; + + subcontainer.appendChild(subItemDiv); +}); -document.getElementById('sub-info').appendChild(subItemDiv); let maxHourlyItem = 8 let percentWidth = 1 / (maxHourlyItem * 1.5) * 100 @@ -161,7 +178,6 @@ function get_time_hour(fxTime) { return fxTime.split("T")[1].split("+")[0] } -let attrinfo = document.getElementById('attribution-info'); -if (!is_dev & !attr) attrinfo.parentElement.style.display = "none" -attrinfo.innerText = is_dev ? "Weather Service Drived by QWeather" : (attr ? attr : "Weather Service Drived by QWeather") +let attrinfo = document.getElementById('attribution-info'); +attrinfo.innerText = is_dev ? "Weather Service Drived by QWeather" : (attr ? attr : "Weather Service Drived by QWeather"); diff --git a/src/resources/liteyuki_weather/templates/weather_now.html b/src/resources/liteyuki_weather/templates/weather_now.html index 8a65bffc..3cb2de7c 100644 --- a/src/resources/liteyuki_weather/templates/weather_now.html +++ b/src/resources/liteyuki_weather/templates/weather_now.html @@ -7,7 +7,6 @@ - @@ -38,68 +37,9 @@ diff --git a/src/resources/vanilla_resource/templates/css/status.css b/src/resources/vanilla_resource/templates/css/status.css index c7ed2cb0..0e8b6ad3 100644 --- a/src/resources/vanilla_resource/templates/css/status.css +++ b/src/resources/vanilla_resource/templates/css/status.css @@ -107,6 +107,10 @@ margin-bottom: 10px; margin-left: 20px; text-align: left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: calc(100% - 40px); z-index: 2; } @@ -123,5 +127,4 @@ font-style: italic; color: var(--sub-text-color); text-align: right; -} - +} \ No newline at end of file