ConfigView luxon date formatting

This commit is contained in:
Jörn-Michael Miehe 2023-09-16 00:17:13 +00:00
parent f7dc74d508
commit 77cb0c1da2

View file

@ -21,16 +21,16 @@
<dd v-else><CountDown :millis="next_door" /></dd> <dd v-else><CountDown :millis="next_door" /></dd>
<dt>Erstes Türchen</dt> <dt>Erstes Türchen</dt>
<dd>{{ config_model.puzzle.first }}</dd> <dd>{{ fmt_puzzle_date("first") }}</dd>
<dt>Nächstes Türchen</dt> <dt>Nächstes Türchen</dt>
<dd>{{ config_model.puzzle.next }}</dd> <dd>{{ fmt_puzzle_date("next") }}</dd>
<dt>Letztes Türchen</dt> <dt>Letztes Türchen</dt>
<dd>{{ config_model.puzzle.last }}</dd> <dd>{{ fmt_puzzle_date("last") }}</dd>
<dt>Rätsel schließt nach</dt> <dt>Rätsel schließt nach</dt>
<dd>{{ config_model.puzzle.end }}</dd> <dd>{{ fmt_puzzle_date("end") }}</dd>
<dt>Zufalls-Seed</dt> <dt>Zufalls-Seed</dt>
<dd class="is-family-monospace"> <dd class="is-family-monospace">
@ -125,6 +125,7 @@
<script lang="ts"> <script lang="ts">
import { ConfigModel, DayStrModel, DoorsSaved } from "@/lib/api"; import { ConfigModel, DayStrModel, DoorsSaved } from "@/lib/api";
import { DateTime } from "luxon";
import { Options, Vue } from "vue-class-component"; import { Options, Vue } from "vue-class-component";
import BulmaDrawer from "../bulma/Drawer.vue"; import BulmaDrawer from "../bulma/Drawer.vue";
@ -146,26 +147,26 @@ interface Credentials {
export default class extends Vue { export default class extends Vue {
public config_model: ConfigModel = { public config_model: ConfigModel = {
puzzle: { puzzle: {
solution: "ABCDEFGHIJKLMNOPQRSTUVWX", solution: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
first: "01.12.2023", first: "2023-12-01",
next: "01.12.2023", next: "2023-12-01",
last: "24.12.2023", last: "2023-12-24",
end: "01.04.2024", end: "2024-04-01",
seed: "", seed: "",
}, },
calendar: { calendar: {
config_file: "default.toml", config_file: "lorem ipsum",
background: "adventskalender.jpg", background: "dolor sit amet",
}, },
image: { image: {
size: 500, size: 500,
border: 30, border: 0,
fonts: [{ file: "files/Lena.ttf", size: 50 }], fonts: [{ file: "consetetur", size: 0 }],
}, },
webdav: { webdav: {
url: "https://example.com/remote.php/webdav/advent22", url: "sadipscing elitr",
cache_ttl: 30, cache_ttl: 0,
config_file: "config.toml", config_file: "sed diam nonumy",
}, },
}; };
public day_parts: DayStrModel[] = []; public day_parts: DayStrModel[] = [];
@ -174,6 +175,13 @@ export default class extends Vue {
public dav_credentials: Credentials = { username: "", password: "" }; public dav_credentials: Credentials = { username: "", password: "" };
public ui_credentials: Credentials = { username: "", password: "" }; public ui_credentials: Credentials = { username: "", password: "" };
public fmt_puzzle_date(name: keyof ConfigModel["puzzle"]): string {
const iso_date = this.config_model.puzzle[name];
if (iso_date === null) return "-";
return DateTime.fromISO(iso_date).toLocaleString(DateTime.DATE_SHORT);
}
public on_open(ready: () => void, fail: () => void): void { public on_open(ready: () => void, fail: () => void): void {
Promise.all([ Promise.all([
this.$advent22.api_get<ConfigModel>("admin/config_model"), this.$advent22.api_get<ConfigModel>("admin/config_model"),