feat(app/view): improve cloudnes icons filter
This commit is contained in:
@@ -23,12 +23,21 @@ def mount(app: FastAPI):
|
||||
async def get_weather_default(location: str):
|
||||
return RedirectResponse(f"{location}/{datetime.date.today()}")
|
||||
|
||||
@app.get("/weather/{location}/{date}", response_class=HTMLResponse)
|
||||
async def get_weather(request: Request, location: str, date: datetime.date):
|
||||
if date == "mock":
|
||||
response = MOCK_DATA.response
|
||||
else:
|
||||
response = await get_api().get_day(location, date)
|
||||
@app.get("/weather/{location}/mock", response_class=HTMLResponse)
|
||||
async def get_weather_mock(request: Request):
|
||||
response = MOCK_DATA.response
|
||||
return templates.TemplateResponse(
|
||||
request=request,
|
||||
name="weather.html",
|
||||
context={
|
||||
"datetime": datetime,
|
||||
"response": response,
|
||||
},
|
||||
)
|
||||
|
||||
@app.get("/weather/{location}/{date}", response_class=HTMLResponse)
|
||||
async def get_weather(request: Request, location: str, date: datetime.date):
|
||||
response = await get_api().get_day(location, date)
|
||||
return templates.TemplateResponse(
|
||||
request=request,
|
||||
name="weather.html",
|
||||
|
||||
@@ -12,17 +12,27 @@ def wind_direction_icon(wind_direction: str) -> str:
|
||||
}.get(wind_direction, wind_direction)
|
||||
|
||||
|
||||
def cloudness_icon(cloudness: str) -> str:
|
||||
return {
|
||||
"Ясно": "☀️",
|
||||
"Малооблачно, без осадков": "🌤️",
|
||||
"Облачно, без осадков": "⛅",
|
||||
"Малооблачно, небольшой дождь": "🌦️",
|
||||
"Пасмурно, без осадков": "☁️",
|
||||
"Облачно, небольшой дождь": "🌧️",
|
||||
"Облачно, дождь": "🌧️",
|
||||
"Облачно, небольшой дождь, гроза": "⛈️",
|
||||
"Малооблачно, дождь": "🌦️",
|
||||
"Пасмурно, небольшой дождь": "🌧️",
|
||||
"Облачно, дождь, гроза": "⛈️",
|
||||
}.get(cloudness, cloudness)
|
||||
def cloudness_icon(cloudness: str) -> list[str]:
|
||||
icons = []
|
||||
values = {item.strip().lower() for item in cloudness.split(",")}
|
||||
if "дымка" in values:
|
||||
icons.append("🌫️")
|
||||
values.remove("дымка")
|
||||
icons = [
|
||||
{
|
||||
frozenset(["ясно"]): "☀️",
|
||||
frozenset(["малооблачно", "без осадков"]): "🌤️",
|
||||
frozenset(["облачно", "без осадков"]): "⛅",
|
||||
frozenset(["малооблачно", "небольшой дождь"]): "🌦️",
|
||||
frozenset(["пасмурно", "без осадков"]): "☁️",
|
||||
frozenset(["облачно", "небольшой дождь"]): "🌧️",
|
||||
frozenset(["облачно", "дождь"]): "🌧️",
|
||||
frozenset(["облачно", "небольшой дождь", "гроза"]): "⛈️",
|
||||
frozenset(["малооблачно", "дождь"]): "🌦️",
|
||||
frozenset(["пасмурно", "небольшой дождь"]): "🌧️",
|
||||
frozenset(["облачно", "дождь", "гроза"]): "⛈️",
|
||||
frozenset(["пасмурно", "дождь"]): "🌧️",
|
||||
frozenset(["пасмурно", "дождь", "гроза"]): "⛈️",
|
||||
}.get(frozenset(values), "|".join(values))
|
||||
] + icons
|
||||
return icons
|
||||
|
||||
@@ -49,7 +49,15 @@ td {
|
||||
background: rgba(0, 128, 255, 0.2);
|
||||
}
|
||||
|
||||
.cloudness {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.cloudness .icon {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.cloudness .icon:first-child {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,9 @@
|
||||
<tr>
|
||||
{% for value in response.values %}
|
||||
<td class="cloudness">
|
||||
<span class="icon">{{value.cloudness | cloudness_icon}}</span>
|
||||
{% for icon in value.cloudness | cloudness_icon %}
|
||||
<div class="icon">{{icon}}</div>
|
||||
{% endfor %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
|
||||
Reference in New Issue
Block a user