From 754931b2f61fb30373b67f7bf93a4fd7513d0257 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Sun, 19 Mar 2023 12:28:27 +0100 Subject: [PATCH] ScansOverview: migrate to datatable close #168 --- src/components/scans/ScansOverview.svelte | 213 ++++++++++++--------- src/components/scans/ThFilterRunner.svelte | 50 +++++ 2 files changed, 171 insertions(+), 92 deletions(-) create mode 100644 src/components/scans/ThFilterRunner.svelte diff --git a/src/components/scans/ScansOverview.svelte b/src/components/scans/ScansOverview.svelte index c653d614..dd0880d6 100644 --- a/src/components/scans/ScansOverview.svelte +++ b/src/components/scans/ScansOverview.svelte @@ -1,125 +1,140 @@ -{#if store.state.jwtinfo.userdetails.permissions.includes('SCAN:GET')} +{#if store.state.jwtinfo.userdetails.permissions.includes("SCAN:GET")} {#await scans_promise} {:then} {#if current_scans.length === 0} {:else} -
- - - - - - - - - - - - {#each current_scans as scan} - {#if scan.track?.name - .toLowerCase() - .includes( - searchvalue.toLowerCase() - ) || scan.runner?.firstname - .toLowerCase() - .includes( - searchvalue.toLowerCase() - ) || scan.runner?.lastname - .toLowerCase() - .includes( - searchvalue.toLowerCase() - ) || should_display_based_on_id(scan.id)} + class="shadow border-b border-gray-200 sm:rounded-lg overflow-x-scroll" + > + +
- {$_('runner')} - - {$_('distance-track')} - - {$_('laptime')} - - {$_('status')} - - {$_('action')} -
+ + + + + + + + + + + + + + + + + {#each $rows as scan} + - + - @@ -127,23 +142,30 @@
{#if scan.valid} {$_('valid')} + class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800" + >{$_("valid")} {:else} {$_('invalid')} + class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-red-100 text-red-800" + >{$_("invalid")} {/if}
{#if active_deletes[scan.id] === true} {:else} {/if} - {/if} - {/each} - -
ID + {$_("runner")} + + {$_("distance")} + + {$_("track")} + + {$_("laptime")} + + {$_("status")} + + {$_("action")} +
+ + + + +
+
+ {scan.id} +
+
{scan.runner.firstname} - {scan.runner.middlename || ''} - {scan.runner.lastname} + class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800" + >{scan.runner.firstname} + {scan.runner.middlename || ""} + {scan.runner.lastname}
+
{#if scan.distance < 1000} {scan.distance}m {:else}{scan.distance / 1000}km{/if} +
+
+ + {#if scan.responseType === "TRACKSCAN"}
{format_laptime(scan.lapTime)}
{:else}
- {$_('scan-with-fixed-distance')} + {$_("scan-with-fixed-distance")}
{/if}
+ class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium" + > + class="ml-4 text-indigo-600 hover:text-indigo-900 cursor-pointer" + >{$_("cancel-delete")} + class="ml-4 text-red-600 hover:text-red-900 cursor-pointer" + >{$_("confirm-delete")} + class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium" + > {$_('details')} - {#if store.state.jwtinfo.userdetails.permissions.includes('SCAN:DELETE')} + class="text-indigo-600 hover:text-indigo-900" + >{$_("details")} + {#if store.state.jwtinfo.userdetails.permissions.includes("SCAN:DELETE")} + class="ml-4 text-red-600 hover:text-red-900 cursor-pointer" + >{$_("delete")} {/if}
+ {/each} + + +
{/if} {:catch error}
- {$_('general_promise_error')} + {$_("general_promise_error")} {error}
diff --git a/src/components/scans/ThFilterRunner.svelte b/src/components/scans/ThFilterRunner.svelte new file mode 100644 index 00000000..67ddb419 --- /dev/null +++ b/src/components/scans/ThFilterRunner.svelte @@ -0,0 +1,50 @@ + + + + { + setTimeout(() => { + const v = filterValue.toLowerCase(); + handler.filter(v, (c) => { + if (v.startsWith("#")) { + return `#${c.runner?.id}`; + } + if (c.runner) { + let runnerName = `${c.runner.firstname} ${c.runner.lastname}`; + if (c.runner.middlename) { + runnerName = `${c.runner.firstname} ${c.runner.middlename} ${c.runner.lastname}`; + } + runnerName = runnerName.toLowerCase(); + return runnerName; + } + return ""; + }); + }, 150); + }} + placeholder="Filter" + bind:value={filterValue} + type="text" + name="runnerfilter" + id="runnerfilter" + /> + + +