fixed datatable-emptystate transition

ref #11
This commit is contained in:
Philipp Dormann 2021-01-05 20:27:06 +01:00
parent 6e00ac8f1f
commit 10bf88e4ba

View File

@ -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;
</script>
{#if table_visible}
{#if trackscache.length > 0}
<div bind:this={table} />
{:else}
<TracksEmptyState />
{/if}
{#await tracks_promise}
<div
@ -93,12 +86,6 @@
<p class="font-bold">{$_('track-data-is-being-loaded')}</p>
<p class="text-sm">{$_('this-might-take-a-moment')}</p>
</div>
{:then tracks}
{#if tracks.length > 0}
<!-- -->
{:else}
<TracksEmptyState />
{/if}
{:catch error}
<div class="text-white px-6 py-4 border-0 rounded relative mb-4 bg-red-500">
<span class="inline-block align-middle mr-8">