import getUri from '../lib/ids'; import { appendToArray } from './gpx'; 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 }); 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; };