theme: don't include set-theme inline
This commit is contained in:
parent
d7d5a15da7
commit
e6f516da62
|
@ -0,0 +1,40 @@
|
|||
function setTheme() {
|
||||
const time = new Date();
|
||||
|
||||
const prev = localStorage.getItem('date');
|
||||
const date = String(time.getMonth() + 1) + '.' + String(time.getDate());
|
||||
|
||||
const now = time.getTime();
|
||||
let sunrise;
|
||||
let sunset;
|
||||
|
||||
function setBodyClass() {
|
||||
if (now > sunrise && now < sunset) return;
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
if (date !== prev) {
|
||||
fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215')
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
sunrise = data.sunrise.split(':').map(Number);
|
||||
sunset = data.sunset.split(':').map(Number);
|
||||
})
|
||||
.catch(() => {
|
||||
sunrise = [7, 0];
|
||||
sunset = [19, 0];
|
||||
})
|
||||
.finally(() => {
|
||||
sunrise = time.setHours(sunrise[0], sunrise[1], 0);
|
||||
sunset = time.setHours(sunset[0], sunset[1], 0);
|
||||
setBodyClass();
|
||||
localStorage.setItem('sunrise', sunrise);
|
||||
localStorage.setItem('sunset', sunset);
|
||||
});
|
||||
localStorage.setItem('date', date);
|
||||
} else {
|
||||
sunrise = Number(localStorage.getItem('sunrise'));
|
||||
sunset = Number(localStorage.getItem('sunset'));
|
||||
setBodyClass();
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="{{ .Site.LanguageCode }}">
|
||||
<head>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
@ -35,69 +36,30 @@
|
|||
{{- template "_internal/opengraph.html" . }}
|
||||
{{- end }}
|
||||
<!-- Script -->
|
||||
{{ $settheme := resources.Get "set-theme.js" | minify }}
|
||||
<script src="{{ $settheme.Permalink }}"></script>
|
||||
</head>
|
||||
|
||||
<body class="{{ if eq .Kind `page` }}single{{ else }}list{{ if .IsHome }} home{{ end }}{{ end }}">
|
||||
<script>
|
||||
function setTheme() {
|
||||
const time = new Date();
|
||||
|
||||
const prev = localStorage.getItem('date');
|
||||
const date = String(time.getMonth() + 1) + '.' + String(time.getDate());
|
||||
|
||||
const now = time.getTime();
|
||||
let sunrise;
|
||||
let sunset;
|
||||
|
||||
function setBodyClass() {
|
||||
if (now > sunrise && now < sunset) return;
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
if (date !== prev) {
|
||||
fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215')
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
sunrise = data.sunrise.split(':').map(Number);
|
||||
sunset = data.sunset.split(':').map(Number);
|
||||
})
|
||||
.catch(() => {
|
||||
sunrise = [7, 0];
|
||||
sunset = [19, 0];
|
||||
})
|
||||
.finally(() => {
|
||||
sunrise = time.setHours(sunrise[0], sunrise[1], 0);
|
||||
sunset = time.setHours(sunset[0], sunset[1], 0);
|
||||
setBodyClass();
|
||||
localStorage.setItem('sunrise', sunrise);
|
||||
localStorage.setItem('sunset', sunset);
|
||||
});
|
||||
localStorage.setItem('date', date);
|
||||
} else {
|
||||
sunrise = Number(localStorage.getItem('sunrise'));
|
||||
sunset = Number(localStorage.getItem('sunset'));
|
||||
setBodyClass();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body class="{{ if eq .Kind `page` }}single{{ else }}list{{ if .IsHome }} home{{ end }}{{ end }}">
|
||||
<script>
|
||||
setTheme();
|
||||
setTheme();
|
||||
</script>
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
{{- if .IsHome }}
|
||||
<h1 class="logo"><a href="{{ "" | absURL }}">{{ .Site.Title }}</a></h1>
|
||||
{{- else }}
|
||||
<p class="logo"><a href="{{ "" | absURL }}">{{ .Site.Title }}</a></p>
|
||||
{{- end }}
|
||||
{{- if .Site.Menus.main }}
|
||||
<ul class="menu">
|
||||
{{- range .Site.Menus.main }}
|
||||
<li>
|
||||
<a href="{{ .URL }}">{{ .Name }}</a>
|
||||
</li>
|
||||
{{- end }}
|
||||
</ul>
|
||||
{{- end }}
|
||||
</nav>
|
||||
<nav class="nav">
|
||||
{{- if .IsHome }}
|
||||
<h1 class="logo"><a href="{{ "" | absURL }}">{{ .Site.Title }}</a></h1>
|
||||
{{- else }}
|
||||
<p class="logo"><a href="{{ "" | absURL }}">{{ .Site.Title }}</a></p>
|
||||
{{- end }}
|
||||
{{- if .Site.Menus.main }}
|
||||
<ul class="menu">
|
||||
{{- range .Site.Menus.main }}
|
||||
<li>
|
||||
<a href="{{ .URL }}">{{ .Name }}</a>
|
||||
</li>
|
||||
{{- end }}
|
||||
</ul>
|
||||
{{- end }}
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<main class="main">
|
Loading…
Reference in New Issue