aboutsummaryrefslogtreecommitdiff
path: root/src/components/Forecast/ForecastDrawer.svelte
blob: b47a8101bb36fd3e019f9285f20a2f4157e97aff (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
<script lang="ts">
    import OneHourForecast from "./OneHourForecast/OneHourForecast.svelte";
    import ThreeDayForecast from "./ThreeDayForecast/ThreeDayForecast.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>
    	</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>