58 lines
1.2 KiB
TypeScript
58 lines
1.2 KiB
TypeScript
import { Component, createEffect, For, onCleanup, Suspense } from 'solid-js';
|
|
|
|
import Trkseg from '../trkseg';
|
|
import VectorSource from 'ol/source/Vector';
|
|
import {
|
|
createCachedSignal,
|
|
destroyCachedSignal,
|
|
} from '../../workers/cached-signals';
|
|
|
|
interface Props {
|
|
trkId: string;
|
|
vectorSources: VectorSource[];
|
|
context: any;
|
|
tags: any;
|
|
}
|
|
export const Trk: Component<Props> = ({
|
|
vectorSources,
|
|
trkId,
|
|
context,
|
|
tags,
|
|
}) => {
|
|
const params = {
|
|
id: trkId,
|
|
method: 'getTrk',
|
|
};
|
|
const trk = createCachedSignal(params);
|
|
|
|
onCleanup(() => {
|
|
console.log({ caller: 'Trk / onCleanup', trkId, trk: trk(), params });
|
|
destroyCachedSignal(params);
|
|
});
|
|
|
|
createEffect(() => {
|
|
console.log({ caller: 'Trk', vectorSources, trkId, trk: trk() });
|
|
});
|
|
|
|
return (
|
|
// @ts-ignore
|
|
<For each={trk() ? trk().trkseg || [] : []}>
|
|
{(trksegId: string) => {
|
|
console.log({ caller: 'Trk / loop', trksegId });
|
|
return (
|
|
<Suspense>
|
|
<Trkseg
|
|
vectorSources={vectorSources}
|
|
trksegId={trksegId}
|
|
context={{ ...context, trk, trkId }}
|
|
tags={tags}
|
|
/>
|
|
</Suspense>
|
|
);
|
|
}}
|
|
</For>
|
|
);
|
|
};
|
|
|
|
export default Trk;
|