Files
WeatherTool/web/src/harmonie/GribFile.tsx
T

43 lines
1.1 KiB
TypeScript
Raw Normal View History

2025-02-02 23:33:15 +02:00
import { Accessor, Component, createSignal } from 'solid-js'
import styles from './harmonie.module.css'
import { apiHost } from '../consts'
export const GribFile: Component<{
name: string,
isActive: Accessor<boolean>,
onClick: (name: string) => void,
}> = ({ name, isActive, onClick }) => {
const [getStructure, setStructure] = createSignal<any[]>([])
function onFileClick() {
onClick(name)
if (getStructure().length === 0) {
fetch(`${apiHost}/api/show/grib/${name}`)
.then(re => re.json())
.then(setStructure)
}
}
return <li
class={isActive() ? styles.active : ''}
onClick={onFileClick}
>
2025-02-03 20:24:20 +02:00
<div class={styles.name}>{ trimName(name) }</div>
2025-02-02 23:33:15 +02:00
<ul class={styles.meteoParams}>
{ getStructure().map(grib =>
<li>{ grib.title }</li>
)}
</ul>
</li>
2025-02-03 20:24:20 +02:00
}
function trimName(title: string): string {
let result = title
result = result.replace('harmonie_', '')
result = result.replace('.grib', '')
return result
}