Spaces:
Runtime error
Runtime error
<script context="module" lang="ts"> | |
export { default as BaseExample } from "./Example.svelte"; | |
</script> | |
<script lang="ts"> | |
import type { Gradio } from "@gradio/utils"; | |
import { Block, BlockTitle } from "@gradio/atoms"; | |
import DateTime from "@gradio/datetime"; | |
export let gradio: Gradio<{ | |
change: undefined; | |
}>; | |
export let label = "Time"; | |
export let show_label = true; | |
export let info: string | undefined = undefined; | |
export let elem_id = ""; | |
export let elem_classes: string[] = []; | |
export let visible = true; | |
export let value: [string, string] = ["", ""]; | |
let old_value = value; | |
export let scale: number | null = null; | |
export let min_width: number | undefined = undefined; | |
export let include_time = true; | |
export let quick_ranges: string[] = []; | |
let range_history: [string, string][] = [value]; | |
$: if (value[0] !== old_value[0] || value[1] !== old_value[1]) { | |
old_value = value; | |
range_history = [...range_history, value]; | |
} | |
const back_in_history = (): void => { | |
range_history.pop(); | |
const last_range = range_history.pop(); | |
if (last_range === undefined) { | |
value = ["", ""]; | |
range_history = []; | |
} else { | |
value = last_range; | |
gradio.dispatch("change"); | |
range_history = [...range_history]; | |
} | |
}; | |
</script> | |
<Block | |
{visible} | |
{elem_id} | |
{elem_classes} | |
{scale} | |
{min_width} | |
allow_overflow={false} | |
padding={true} | |
> | |
<div class="label-content"> | |
<BlockTitle {show_label} {info}>{label}</BlockTitle> | |
{#if show_label} | |
<div class="quick-ranges"> | |
<button | |
class="quick-range" | |
style:display={range_history.length <= 1 ? "none" : "block"} | |
on:click={back_in_history}>Back</button | |
> | |
{#each quick_ranges as quick_range} | |
<button | |
class="quick-range" | |
on:click={() => { | |
value = ["now - " + quick_range, "now"]; | |
}}>Last {quick_range}</button | |
> | |
{/each} | |
</div> | |
{/if} </div> | |
<div class="times"> | |
<DateTime show_label={false} bind:value={value[0]} {include_time} {gradio} on:gradio></DateTime> | |
<DateTime show_label={false} bind:value={value[1]} {include_time} {gradio} on:gradio></DateTime> | |
</div> | |
</Block> | |
<style> | |
.times { | |
display: flex; | |
gap: 10px; | |
} | |
.times > :global(.block) { | |
margin: 0; | |
padding: 0; | |
} | |
.label-content { | |
display: flex; | |
justify-content: space-between; | |
align-items: flex-start; | |
} | |
.quick-ranges { | |
display: inline-flex; | |
gap: var(--size-3); | |
} | |
button { | |
color: var(--body-text-color-subdued); | |
cursor: pointer; | |
} | |
button:hover { | |
color: var(--body-text-color); | |
} | |
</style> | |