`<Gpx>` component
This commit is contained in:
parent
346b9a1186
commit
79fb39100f
|
@ -1,21 +1,16 @@
|
||||||
import {
|
import { Component, createEffect, createResource, For } from 'solid-js';
|
||||||
Component,
|
|
||||||
createEffect,
|
|
||||||
createResource,
|
|
||||||
createSignal,
|
|
||||||
} from 'solid-js';
|
|
||||||
|
|
||||||
import OlMap from 'ol/Map';
|
import OlMap from 'ol/Map';
|
||||||
|
|
||||||
import dispatch from '../../workers/dispatcher-main';
|
import dispatch from '../../workers/dispatcher-main';
|
||||||
// import Gpx from './Gpx';
|
import Gpx from '../gpx';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
map: OlMap | null;
|
map: () => OlMap | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const AllGpxes: Component<Props> = ({ map }) => {
|
export const AllGpxes: Component<Props> = ({ map }) => {
|
||||||
const [allGpxes] = createResource(
|
const [allGpxIds] = createResource(
|
||||||
async () =>
|
async () =>
|
||||||
await dispatch({
|
await dispatch({
|
||||||
action: 'getAllGpxes',
|
action: 'getAllGpxes',
|
||||||
|
@ -24,10 +19,17 @@ export const AllGpxes: Component<Props> = ({ map }) => {
|
||||||
);
|
);
|
||||||
|
|
||||||
createEffect(() => {
|
createEffect(() => {
|
||||||
console.log({ caller: 'AllGpxes', allGpxes: allGpxes() });
|
console.log({ caller: 'AllGpxes', allGpxes: allGpxIds(), map: map() });
|
||||||
});
|
});
|
||||||
|
|
||||||
return <></>;
|
return (
|
||||||
|
<For each={allGpxIds()}>
|
||||||
|
{(gpxId) => {
|
||||||
|
console.log({ caller: 'AllGpxes / loop', gpxId });
|
||||||
|
return <Gpx map={map} gpxId={gpxId} />;
|
||||||
|
}}
|
||||||
|
</For>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default AllGpxes;
|
export default AllGpxes;
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
import { Component, createEffect, createResource } from 'solid-js';
|
||||||
|
|
||||||
|
import OlMap from 'ol/Map';
|
||||||
|
|
||||||
|
import dispatch from '../../workers/dispatcher-main';
|
||||||
|
//import Trk from './Trk';
|
||||||
|
import getUri from '../../lib/ids';
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
gpxId: string;
|
||||||
|
map: () => OlMap | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const Gpx: Component<Props> = ({ map, gpxId }) => {
|
||||||
|
const [gpx] = createResource(
|
||||||
|
gpxId,
|
||||||
|
async () =>
|
||||||
|
await dispatch({
|
||||||
|
action: 'getGpx',
|
||||||
|
params: {
|
||||||
|
id: gpxId,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
createEffect(() => {
|
||||||
|
console.log({ caller: 'Gpx', map: map(), gpxId, gpx: gpx() });
|
||||||
|
});
|
||||||
|
|
||||||
|
return <></>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Gpx;
|
|
@ -0,0 +1 @@
|
||||||
|
export { default } from './Gpx';
|
|
@ -185,7 +185,7 @@ const Map: Component = () => {
|
||||||
<Forward />
|
<Forward />
|
||||||
<Back />
|
<Back />
|
||||||
<GpxImport />
|
<GpxImport />
|
||||||
<AllGpxes map={getMap()} />
|
<AllGpxes map={getMap} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -187,7 +187,7 @@ export const pruneAndSaveImportedGpx = async (params: any) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getAllGpxes = async () => {
|
export const getAllGpxes = async () => {
|
||||||
return await getDocsByType('gpx');
|
return (await getDocsByType('gpx')).map((doc: any) => doc._id);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getGpxesForViewport = async (params: any) => {
|
export const getGpxesForViewport = async (params: any) => {
|
||||||
|
@ -261,13 +261,30 @@ export const getFullGpx = async (params: any) => {
|
||||||
export const getGpx = async (params: any) => {
|
export const getGpx = async (params: any) => {
|
||||||
const { id } = params;
|
const { id } = params;
|
||||||
const docs = await getFamily(id, { include_docs: true });
|
const docs = await getFamily(id, { include_docs: true });
|
||||||
console.log(`getGpx, uri: ${id} docs: ${JSON.stringify(docs)}`);
|
let target: any[];
|
||||||
return docs.rows.filter(
|
let gpx: Gpx | undefined = undefined;
|
||||||
(row: any) =>
|
docs.rows.forEach((row: any) => {
|
||||||
row.doc.type === 'gpx' ||
|
// level 0
|
||||||
|
if (row.doc.type === 'gpx') {
|
||||||
|
target = [row.doc.doc];
|
||||||
|
gpx = row.doc.doc;
|
||||||
|
}
|
||||||
|
//level 1 (extensions)
|
||||||
|
if (row.doc.type === 'extensions') {
|
||||||
|
target.splice(1);
|
||||||
|
appendToArray(target.at(-1), row.doc.type, row.doc.doc);
|
||||||
|
target.push(row.doc.doc);
|
||||||
|
}
|
||||||
|
//level 1 (others)
|
||||||
|
if (
|
||||||
row.doc.type === 'wpt' ||
|
row.doc.type === 'wpt' ||
|
||||||
row.doc.type === 'rte' ||
|
row.doc.type === 'rte' ||
|
||||||
row.doc.type === 'trk' ||
|
row.doc.type === 'trk'
|
||||||
row.doc.type === 'extensions'
|
) {
|
||||||
);
|
target.splice(1);
|
||||||
|
appendToArray(target.at(-1), row.doc.type, row.doc._id);
|
||||||
|
target.push(row.doc.doc);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return gpx;
|
||||||
};
|
};
|
||||||
|
|
|
@ -25,6 +25,7 @@ const dispatch = (
|
||||||
payload: any,
|
payload: any,
|
||||||
callBack?: (error: any, result: any) => void
|
callBack?: (error: any, result: any) => void
|
||||||
) => {
|
) => {
|
||||||
|
console.log({ caller: 'dispatcher-main / dispatch', payload });
|
||||||
if (worker === undefined) {
|
if (worker === undefined) {
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
@ -47,7 +48,7 @@ const dispatch = (
|
||||||
payload: payload,
|
payload: payload,
|
||||||
};
|
};
|
||||||
worker.postMessage(message);
|
worker.postMessage(message);
|
||||||
console.log({ caller: 'dispatcher-main / dispatch', message });
|
console.log({ caller: 'dispatcher-main / message sent', message });
|
||||||
};
|
};
|
||||||
|
|
||||||
export default dispatch;
|
export default dispatch;
|
||||||
|
|
|
@ -31,7 +31,6 @@ console.log({ caller: 'dispatcher-worker', actions });
|
||||||
onmessage = async function (e) {
|
onmessage = async function (e) {
|
||||||
console.log({ caller: 'dispatcher-worker / onmessage', e });
|
console.log({ caller: 'dispatcher-worker / onmessage', e });
|
||||||
const { id, payload } = e.data;
|
const { id, payload } = e.data;
|
||||||
console.log(`payload.action in actions: ${payload.action in actions}`);
|
|
||||||
var returnValue: any = 'unknownAction';
|
var returnValue: any = 'unknownAction';
|
||||||
if (payload.action in actions) {
|
if (payload.action in actions) {
|
||||||
returnValue = await actions[<keyof typeof actions>payload.action](
|
returnValue = await actions[<keyof typeof actions>payload.action](
|
||||||
|
@ -39,6 +38,7 @@ onmessage = async function (e) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
postMessage({ id: id, payload: returnValue });
|
postMessage({ id: id, payload: returnValue });
|
||||||
|
console.log({ caller: 'dispatcher-worker / response sent', id, returnValue });
|
||||||
};
|
};
|
||||||
|
|
||||||
//export default self;
|
//export default self;
|
||||||
|
|
Loading…
Reference in New Issue