@@ -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">
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user