feat(weather): update navigate icons
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from babel.dates import format_date
|
from babel.dates import format_date
|
||||||
@@ -7,6 +8,7 @@ from fastapi.templating import Jinja2Templates
|
|||||||
from gallery.version import __version__
|
from gallery.version import __version__
|
||||||
|
|
||||||
from ...translation import _
|
from ...translation import _
|
||||||
|
from .tag import TagUtil
|
||||||
|
|
||||||
|
|
||||||
def is_widget(request: Request) -> bool:
|
def is_widget(request: Request) -> bool:
|
||||||
@@ -31,6 +33,9 @@ def build_templates(templates_dir: Path | None = None, filters: dict | None = No
|
|||||||
"_": _,
|
"_": _,
|
||||||
"version": __version__,
|
"version": __version__,
|
||||||
"format_date": format_date,
|
"format_date": format_date,
|
||||||
|
"datetime": datetime,
|
||||||
|
"tag_util": TagUtil,
|
||||||
|
"DATE_FORMAT": "E, d MMMM Y",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
if filters:
|
if filters:
|
||||||
|
|||||||
@@ -25,8 +25,6 @@ def build_weather_response(request: AppRequest, response: WeatherResponse):
|
|||||||
request=request,
|
request=request,
|
||||||
name="weather.html",
|
name="weather.html",
|
||||||
context={
|
context={
|
||||||
"tag_util": TagUtil,
|
|
||||||
"datetime": datetime,
|
|
||||||
"response": response,
|
"response": response,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from gallery.sketch.weather.model import Cloudness, Precipitation, Sky, WindDirection, WindDirectionDeg
|
from gallery.sketch.weather.model import (
|
||||||
|
Cloudness,
|
||||||
|
Precipitation,
|
||||||
|
Sky,
|
||||||
|
WindDirection,
|
||||||
|
WindDirectionDeg,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def wind_direction_icon(wind_direction_deg: float) -> str:
|
def wind_direction_icon(wind_direction_deg: float) -> str:
|
||||||
@@ -8,7 +14,7 @@ def wind_direction_icon(wind_direction_deg: float) -> str:
|
|||||||
if wind_direction == WindDirection.CALM:
|
if wind_direction == WindDirection.CALM:
|
||||||
return "wind-calm"
|
return "wind-calm"
|
||||||
else:
|
else:
|
||||||
return f"wind-from-{wind_direction.name.lower()}"
|
return f"wind-from-{wind_direction.name.lower()}"
|
||||||
|
|
||||||
|
|
||||||
def cloudness_icon(sky: Sky, date: datetime.datetime, period: str) -> list[str]:
|
def cloudness_icon(sky: Sky, date: datetime.datetime, period: str) -> list[str]:
|
||||||
|
|||||||
@@ -9,16 +9,24 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<h4>
|
<h4>
|
||||||
{% if response.period == 'day' %}
|
{% if response.period == 'day' %}
|
||||||
<a class="button {{'disabled' if response.date == datetime.date.today() else ''}}"
|
<a class="icon-link {{'disabled' if response.date == datetime.date.today() else ''}}"
|
||||||
href="../tag/{{tag_util.create_tag('day', response.date, -1)}}">⬅️</a>
|
href="../tag/{{tag_util.create_tag('day', response.date, -1)}}">
|
||||||
<a class="button"
|
<i class="bi bi-arrow-left-square"></i>
|
||||||
href="../tag/days-10">⬆️</a>
|
</a>
|
||||||
<span>{{response.location}} | {{format_date(response.date, 'E, d MMMM Y', locale=request.state.language)}}</span>
|
<a class="icon-link"
|
||||||
<a class="button"
|
href="../tag/days-10">
|
||||||
href="../tag/{{tag_util.create_tag('day', response.date, 1)}}">➡️</a>
|
<i class="bi bi-arrow-up-square"></i>
|
||||||
|
</a>
|
||||||
|
<span>{{response.location}} | {{format_date(response.date, DATE_FORMAT, locale=request.state.language)}}</span>
|
||||||
|
<a class="icon-link"
|
||||||
|
href="../tag/{{tag_util.create_tag('day', response.date, 1)}}">
|
||||||
|
<i class="bi bi-arrow-right-square"></i>
|
||||||
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if response.period == 'days' %}
|
{% if response.period == 'days' %}
|
||||||
<span>{{response.location}} | {{format_date(response.date, 'E, d MMMM Y', locale=request.state.language)}}</span>
|
<span>{{response.location}} | {{format_date(response.date, DATE_FORMAT, locale=request.state.language)}}</span>
|
||||||
|
<span>- {{format_date(response.date + datetime.timedelta(days=(response.values | length - 1)), DATE_FORMAT,
|
||||||
|
locale=request.state.language)}}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</h4>
|
</h4>
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
@@ -58,8 +66,7 @@
|
|||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{{ value.sky }}">
|
data-bs-title="{{ value.sky }}">
|
||||||
{% for icon in value.sky | cloudness_icon(value.date, response.period) %}
|
{% for icon in value.sky | cloudness_icon(value.date, response.period) %}
|
||||||
<div class="wi wi-{{icon}} text-primary"
|
<div class="wi wi-{{icon}} wi-xl text-primary"></div>
|
||||||
style="font-size: 3.5rem;"></div>
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</td>
|
</td>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
@@ -95,7 +102,7 @@
|
|||||||
<td class="wind"
|
<td class="wind"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-title="{{ value.wind_direction }}">
|
data-bs-title="{{ value.wind_direction }}">
|
||||||
<div class="wi wi-wind-deg wi-{{value.wind_direction | wind_direction_icon}} fs-1 text-primary"></div>
|
<div class="wi wi-wind-deg wi-{{value.wind_direction | wind_direction_icon}} wi-l text-primary"></div>
|
||||||
</td>
|
</td>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
19
static/src/lib/bootstrap-icons.scss
vendored
19
static/src/lib/bootstrap-icons.scss
vendored
@@ -1,4 +1,6 @@
|
|||||||
//$bootstrap-icons: "circle-half", "moon-stars-fill", "brightness-high", "gear", "sun-fill", "tv";
|
.icon-link {
|
||||||
|
vertical-align: -0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
.bi {
|
.bi {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@@ -13,12 +15,6 @@
|
|||||||
mask-repeat: no-repeat;
|
mask-repeat: no-repeat;
|
||||||
background-color: currentColor;
|
background-color: currentColor;
|
||||||
|
|
||||||
//@each $icon in $bootstrap-icons {
|
|
||||||
// &.bi-#{$icon} {
|
|
||||||
// mask-image: url("bootstrap-icons/icons/#{$icon}.svg");
|
|
||||||
// }
|
|
||||||
///
|
|
||||||
|
|
||||||
&.bi-circle-half {
|
&.bi-circle-half {
|
||||||
mask-image: url(bootstrap-icons/icons/circle-half.svg);
|
mask-image: url(bootstrap-icons/icons/circle-half.svg);
|
||||||
}
|
}
|
||||||
@@ -37,4 +33,13 @@
|
|||||||
&.bi-tv {
|
&.bi-tv {
|
||||||
mask-image: url(bootstrap-icons/icons/tv.svg);
|
mask-image: url(bootstrap-icons/icons/tv.svg);
|
||||||
}
|
}
|
||||||
|
&.bi-arrow-left-square {
|
||||||
|
mask-image: url(bootstrap-icons/icons/arrow-left-square.svg);
|
||||||
|
}
|
||||||
|
&.bi-arrow-right-square {
|
||||||
|
mask-image: url(bootstrap-icons/icons/arrow-right-square.svg);
|
||||||
|
}
|
||||||
|
&.bi-arrow-up-square {
|
||||||
|
mask-image: url(bootstrap-icons/icons/arrow-up-square.svg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,4 +13,11 @@
|
|||||||
mask-position: 50%;
|
mask-position: 50%;
|
||||||
mask-repeat: no-repeat;
|
mask-repeat: no-repeat;
|
||||||
background-color: currentColor;
|
background-color: currentColor;
|
||||||
|
|
||||||
|
&.wi-l {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
}
|
||||||
|
&.wi-xl {
|
||||||
|
font-size: 3.5rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user