2025-02-02 23:33:15 +02:00
|
|
|
import { Component, createSignal } from 'solid-js'
|
|
|
|
|
|
2025-02-04 19:42:35 +02:00
|
|
|
import { apiHost } from '../consts'
|
2025-02-02 23:33:15 +02:00
|
|
|
import styles from './harmonie.module.css'
|
|
|
|
|
import { GribFile } from './GribFile'
|
2025-02-04 19:42:35 +02:00
|
|
|
import { LoadingSpinner } from '../components/LoadingSpinner'
|
2025-02-02 23:33:15 +02:00
|
|
|
|
|
|
|
|
export const Harmonie: Component<{}> = () => {
|
|
|
|
|
const [getFileList, setFileList] = createSignal<string[]>([])
|
|
|
|
|
const [getActiveGrib, setActiveGrib] = createSignal('')
|
2025-02-03 23:33:28 +02:00
|
|
|
const [getCanvas, setCanvas] = createSignal<HTMLCanvasElement>()
|
2025-02-04 19:42:35 +02:00
|
|
|
const [getIsLoading, setIsLoading] = createSignal(true)
|
2025-02-04 22:12:03 +02:00
|
|
|
const [getIsCrop, setIsCrop] = createSignal(true)
|
2025-02-02 23:33:15 +02:00
|
|
|
|
|
|
|
|
fetch(`${apiHost}/api/show/grib-list`)
|
|
|
|
|
.then(re => re.json())
|
|
|
|
|
.then(fileList => {
|
|
|
|
|
fileList.sort((a: string, b: string) => a < b ? 1 : -1)
|
|
|
|
|
setFileList(fileList)
|
|
|
|
|
})
|
2025-02-04 19:42:35 +02:00
|
|
|
.finally(() => setIsLoading(false))
|
2025-02-02 23:33:15 +02:00
|
|
|
|
2025-02-03 20:24:20 +02:00
|
|
|
return <div class={styles.container}>
|
|
|
|
|
<div class={styles.column}>
|
2025-02-04 22:12:03 +02:00
|
|
|
<label>
|
|
|
|
|
Crop Latvia
|
|
|
|
|
<input type='checkbox' checked={getIsCrop()} onChange={()=>setIsCrop(!getIsCrop())} />
|
|
|
|
|
</label>
|
2025-02-03 20:24:20 +02:00
|
|
|
<ul class={styles.fileList}>
|
|
|
|
|
{getFileList().map(fileName =>
|
|
|
|
|
<GribFile
|
|
|
|
|
name={fileName}
|
|
|
|
|
isActive={() => getActiveGrib() === fileName}
|
2025-02-03 23:33:28 +02:00
|
|
|
getCanvas={getCanvas}
|
2025-02-04 19:42:35 +02:00
|
|
|
setIsLoading={setIsLoading}
|
2025-02-04 22:12:03 +02:00
|
|
|
getIsCrop={getIsCrop}
|
2025-02-03 20:24:20 +02:00
|
|
|
onClick={() => setActiveGrib(fileName)}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
2025-02-03 23:33:28 +02:00
|
|
|
<div class={styles.column}>
|
2025-02-04 19:42:35 +02:00
|
|
|
{ getIsLoading() && <LoadingSpinner text='' />}
|
|
|
|
|
<canvas ref={setCanvas} style={{ display: getIsLoading() ? 'none' : 'block' }} />
|
2025-02-03 23:33:28 +02:00
|
|
|
</div>
|
2025-02-02 23:33:15 +02:00
|
|
|
</div>
|
|
|
|
|
}
|