2022-11-26 18:36:55 +00:00
|
|
|
import getUri from '../lib/ids';
|
2022-11-27 15:18:50 +00:00
|
|
|
import { appendToArray } from './gpx';
|
2022-11-26 18:36:55 +00:00
|
|
|
import { getFamily, put } from './lib';
|
|
|
|
import { putNewTrk } from './trk';
|
|
|
|
|
|
|
|
const emptyTrkseg: Trkseg = {
|
|
|
|
trkpt: undefined,
|
|
|
|
extensions: undefined,
|
|
|
|
};
|
|
|
|
|
|
|
|
export const putNewTrkseg = async (id?: IdTrk | IdGpx | IdTrkseg) => {
|
|
|
|
let finalId = { ...id };
|
|
|
|
if (!('trkseg' in finalId)) {
|
|
|
|
const trkId = await putNewTrk(id);
|
|
|
|
finalId = { ...trkId, trkseg: 0 };
|
|
|
|
}
|
|
|
|
const uri = getUri('trkseg', finalId);
|
|
|
|
await put(
|
|
|
|
uri,
|
|
|
|
'trkseg',
|
|
|
|
(trkseg) => {
|
|
|
|
return trkseg;
|
|
|
|
},
|
|
|
|
emptyTrkseg
|
|
|
|
);
|
|
|
|
return finalId as IdTrkseg;
|
|
|
|
};
|
|
|
|
|
|
|
|
export const getTrkseg = async (params: any) => {
|
|
|
|
const { id } = params;
|
|
|
|
const docs = await getFamily(id, { include_docs: true });
|
2022-11-27 15:18:50 +00:00
|
|
|
let target: any[];
|
|
|
|
let trkseg: Trkseg | undefined = undefined;
|
|
|
|
docs.rows.forEach((row: any) => {
|
|
|
|
// level 0
|
|
|
|
if (row.doc.type === 'trkseg') {
|
|
|
|
target = [row.doc.doc];
|
|
|
|
trkseg = row.doc.doc;
|
|
|
|
}
|
|
|
|
//level 1
|
|
|
|
if (row.doc.type === 'trkpt') {
|
|
|
|
target.splice(1);
|
|
|
|
appendToArray(target.at(-1), row.doc.type, row.doc._id);
|
|
|
|
target.push(row.doc.doc);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return trkseg;
|
2022-11-26 18:36:55 +00:00
|
|
|
};
|