blob: 9f69f17bccdbbc63505a3b463286edd7ffbc8f6f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
<script lang="ts">
import OneHourForecast from "./OneHourForecast/OneHourForecast.svelte";
import ThreeDayForecast from "./ThreeDayForecast/ThreeDayForecast.svelte";
import OutlookTwentySevenDay from "./OutlookTwentySevenDay/OutlookTwentySevenDay.svelte";
import { earth_weather, space_weather } from "../../stores.ts";
let selected_version = ThreeDayForecast;
</script>
<style>
.drawer {
border-top-left-radius: 2rem;
border-top-right-radius: 2rem;
--bg-opacity: 1;
background-color: #f7fafc;
background-color: rgba(247, 250, 252, var(--bg-opacity));
padding: 1.5rem;
--text-opacity: 1;
color: #1a202c;
color: rgba(26, 32, 44, var(--text-opacity));
height: 100%;
overflow: hidden;
align-self: stretch;
box-shadow: 0px -6px 7px 0px black;
}
@media (min-width: 640px), (min-height: 720px) {
.drawer {
padding: 2rem;
padding-top: 1.5rem;
}
}
@media (min-width: 640px) {
.drawer {
border-bottom-right-radius: 1rem;
border-bottom-left-radius: 1rem;
}
}
.drawer .header {
display: flex;
align-items: flex-start;
}
.drawer h2 {
text-transform: uppercase;
font-size: 0.875rem;
letter-spacing: 0.1em;
font-weight: 700;
margin-top: 0.25rem;
margin-bottom: 0.5rem;
margin-right: auto;
}
.version-picker {
display: flex;
font-size: 0.875rem;
gap: 0.5rem;
align-items: center;
color: #616161;
}
.version-picker > * {
transition: all 0.1s ease;
}
.version-picker .selected {
background-color: #c2c2c2;
padding: 3px 5px;
box-sizing: border-box;
border-radius: 10px;
color: black;
}
.no-data {
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
color: grey;
}
.no-data {
margin-top: 1rem;
}
</style>
<div class="drawer">
{#if !$earth_weather.updating && !$space_weather.updating}
<div class="header">
<h2>Forecast</h2>
<div class="version-picker">
<div class:selected={selected_version == OneHourForecast} on:click={() => selected_version = OneHourForecast}>hour</div>
<div class:selected={selected_version == ThreeDayForecast} on:click={() => selected_version = ThreeDayForecast}>3 day</div>
<div class:selected={selected_version == OutlookTwentySevenDay} on:click={() => selected_version = OutlookTwentySevenDay}>Long time</div>
</div>
</div>
<svelte:component this={selected_version} />
{:else}
<div class="no-data">
<i class="fas fa-7x fa-exclamation-triangle"></i>
<p>No prediction data</p>
</div>
{/if}
</div>
|