diff --git a/src/components/Tracks.svelte b/src/components/Tracks.svelte index ca09781c..bad8d43e 100644 --- a/src/components/Tracks.svelte +++ b/src/components/Tracks.svelte @@ -7,36 +7,29 @@ import { Grid, html } from "gridjs"; import "gridjs/dist/theme/mermaid.css"; import { tracks as tracksstore } from "../store.js"; - let trackscache = []; + $: trackscache = []; let table; let datatable; let datatable_inited = false; - let initial_load_done = false; + tracksstore.subscribe((val) => { + trackscache = val; + setTimeout(() => { + if (val.length > 0) { + renderdatatable(); + } + }, 100); + }); tracks_promise.then((data) => { tracksstore.set(data); - tracksstore.subscribe((val) => { - trackscache = val; - if (initial_load_done === false) { - initial_load_done = true; - } - setTimeout(() => { - renderdatatable(); - }, 100); - }); - if (trackscache.length > 0) { - table_visible = true; - } }); window.track__delete_handler = () => { const trackid = parseInt(window.event.target.getAttribute("data-trackid")); - // const track = trackscache.find((e) => e.id == trackid); - // console.log(track); - // ----- // TODO: modal or double click confirmation? TrackService.trackControllerRemove(trackid) - .then((resp) => { + .then(() => { const newStoreVal = trackscache.filter((obj) => obj.id !== trackid); tracksstore.set(newStoreVal); + renderdatatable(); }) .catch((err) => { console.log(err); @@ -55,36 +48,36 @@ `), ]); }); - if (trackscache.length > 0) { - if (datatable_inited === false) { - datatable = new Grid({ - columns: [ - $_("track-name"), - $_("track-length-in-m"), - $_("minimum-lap-time-in-s"), - $_("action"), - ], - language: getlang($json("datatable")), - sort: true, - search: { enabled: true }, - data: tabledata, - pagination: { - enabled: true, - limit: 25, - summary: false, - }, - }).render(table); - datatable_inited = true; - } else { - datatable.updateConfig({ data: tabledata }).forceRender(); - } + + if (datatable_inited === false) { + datatable = new Grid({ + columns: [ + $_("track-name"), + $_("track-length-in-m"), + $_("minimum-lap-time-in-s"), + $_("action"), + ], + language: getlang($json("datatable")), + sort: true, + search: { enabled: true }, + data: tabledata, + pagination: { + enabled: true, + limit: 25, + summary: false, + }, + }).render(table); + datatable_inited = true; + } else { + datatable.updateConfig({ data: tabledata }).forceRender(); } } - let table_visible = false; -{#if table_visible} +{#if trackscache.length > 0}
+{:else} +{$_('this-might-take-a-moment')}