Karolis' playground schedule / master src / lib / timeperiod.svelte
master

Tree @master (Download .tar.gz)

timeperiod.svelte @masterraw · history · blame

<script lang="ts">
    import type { timeperiod } from "./models/models";

    export let period: timeperiod;
    let width = ((period.endTime - period.startTime) * 100) / 24;
    let left = (period.startTime * 100) / 24;

    function toTime(n: number): string {
        return `${Math.floor(n)}:${Math.floor((n % 1) * 60)
            .toString()
            .padEnd(2, "0")}`;
    }
</script>

<div
    class="timeperiod"
    data-periodType={period.type}
    style={`width:${width}%; left: ${left}%`}
>
    {period.label || period.type} ({toTime(period.startTime)}-{toTime(
        period.endTime,
    )})
</div>

<style lang="sass">
    .timeperiod
        position: absolute
        height: 100%
        display: flex
        align-items: center
        justify-content: center
        font-size: .8rem
        &[data-periodType="first"]
            background: hsla(0, 40%, 60%, 0.6)

        &[data-periodType="work"]
            background: hsla(100, 40%, 60%, 0.6)

        &[data-periodType="placeholder"]
            background: hsla(55, 40%, 60%, 0.6)
</style>