diff --git a/src/App.svelte b/src/App.svelte index 02fa8bca..3ac80059 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -126,8 +126,8 @@ - - + + diff --git a/src/components/dashboard/MainDashContent.svelte b/src/components/dashboard/MainDashContent.svelte index ac14463a..99344a19 100644 --- a/src/components/dashboard/MainDashContent.svelte +++ b/src/components/dashboard/MainDashContent.svelte @@ -220,7 +220,7 @@ - import { - RunnerOrganizationService, - RunnerService, - RunnerTeamService, - } from "@odit/lfk-client-js"; - import { - createSvelteTable, - flexRender, - getCoreRowModel, - getFilteredRowModel, - getPaginationRowModel, - getSortedRowModel, - renderComponent, - } from "@tanstack/svelte-table"; - import { onMount } from "svelte"; - import { writable } from "svelte/store"; - import GenerateRunnerCards from "../pdf_generation/GenerateRunnerCards.svelte"; - import GenerateRunnerCertificates from "../pdf_generation/GenerateRunnerCertificates.svelte"; - import GenerateSponsoringContracts from "../pdf_generation/GenerateSponsoringContracts.svelte"; - import InputElement from "../shared/InputElement.svelte"; - import TableActions from "../shared/TableActions.svelte"; - import { groupFilter } from "../shared/tablefilters"; - import DeleteRunnerModal from "./DeleteRunnerModal.svelte"; - import TableBottom from "../shared/TableBottom.svelte"; - import TableHeader from "../shared/TableHeader.svelte"; + import { + RunnerOrganizationService, + RunnerService, + RunnerTeamService, + } from "@odit/lfk-client-js"; + import { + createSvelteTable, + flexRender, + getCoreRowModel, + getFilteredRowModel, + getPaginationRowModel, + getSortedRowModel, + renderComponent, + } from "@tanstack/svelte-table"; + import { onMount } from "svelte"; + import { writable } from "svelte/store"; + import GenerateRunnerCards from "../pdf_generation/GenerateRunnerCards.svelte"; + import GenerateRunnerCertificates from "../pdf_generation/GenerateRunnerCertificates.svelte"; + import GenerateSponsoringContracts from "../pdf_generation/GenerateSponsoringContracts.svelte"; + import InputElement from "../shared/InputElement.svelte"; + import TableActions from "../shared/TableActions.svelte"; + import { groupFilter } from "../shared/tablefilters"; + import DeleteRunnerModal from "./DeleteRunnerModal.svelte"; + import TableBottom from "../shared/TableBottom.svelte"; + import TableHeader from "../shared/TableHeader.svelte"; - $: selectedRunners = - $table?.getSelectedRowModel().rows.map((row) => row.original) || []; - $: selected = - $table?.getSelectedRowModel().rows.map((row) => row.index) || []; + $: selectedRunners = + $table?.getSelectedRowModel().rows.map((row) => row.original) || []; + $: selected = + $table?.getSelectedRowModel().rows.map((row) => row.index) || []; - $: active_delete = undefined; - let dataLoaded = false; - export let created_via = "all"; - export let current_runners = []; - $: sponsoring_contracts_show = selected.length > 0; - $: cards_show = selected.length > 0; - $: certificates_show = selected.length > 0; - $: teams = []; - $: orgs = []; + $: active_delete = undefined; + let dataLoaded = false; + export let created_via = "all"; + export let current_runners = []; + $: sponsoring_contracts_show = selected.length > 0; + $: cards_show = selected.length > 0; + $: certificates_show = selected.length > 0; + $: teams = []; + $: orgs = []; - export const addRunners = (runners) => { - current_runners = current_runners.concat(...runners); - options.update((options) => ({ - ...options, - data: current_runners, - })); - }; + export const addRunners = (runners) => { + current_runners = current_runners.concat(...runners); + options.update((options) => ({ + ...options, + data: current_runners, + })); + }; - //Section table - const columns = [ - { - accessorKey: "id", - header: () => "id", - filterFn: `equalsString`, - }, - { - accessorKey: "firstname", - header: () => $_("first-name"), - filterFn: `includesString`, - }, - { - accessorKey: "middlename", - header: () => $_("middle-name"), - cell: (info) => { - if (!info || !info.getValue()) { - return ""; - } - return info.getValue(); - }, - filterFn: `includesString`, - }, - { - accessorKey: "lastname", - header: () => $_("last-name"), - filterFn: `includesString`, - }, - { - accessorKey: "created_via", - header: () => "created_via", - filterFn: `includesString`, - }, - { - accessorKey: "group", - header: () => $_("group"), - cell: (info) => { - const group = info.getValue(); - if (group.responseType === "RUNNERORGANIZATION") { - return group.name; - } - return `${group.parentGroup.name} > ${group.name}`; - }, - filterFn: `group`, - sortingFn: (rowA, rowB, col) => { - return rowA.original.group.name.localeCompare(rowB.original.group.name); - }, - }, - { - accessorKey: "distance", - header: () => $_("distance"), - sortingFn: (rowA, rowB, col) => { - return rowA.original.distance > rowB.original.distance; - }, - cell: (info) => { - if (info.getValue() < 1000) { - return `${info.getValue()} m`; - } - return `${(info.getValue() / 1000).toFixed(1)} km`; - }, - enableColumnFilter: false, - }, - { - accessorKey: "actions", - header: () => $_("action"), - cell: (info) => { - return renderComponent(TableActions, { - detailsLink: `/runners/${info.row.original.id}`, - deleteAction: () => { - active_delete = - current_runners[ - current_runners.findIndex((r) => r.id == info.row.original.id) - ]; - }, - deleteEnabled: - store.state.jwtinfo.userdetails.permissions.includes( - "RUNNER:DELETE" - ), - }); - }, - enableColumnFilter: false, - enableSorting: false, - }, - ]; - const options = writable({ - data: [], - columns: columns, - filterFns: { - group: groupFilter, - }, - initialState: { - pagination: { - pageSize: 50, - }, - }, - enableRowSelection: true, - getCoreRowModel: getCoreRowModel(), - getFilteredRowModel: getFilteredRowModel(), - getPaginationRowModel: getPaginationRowModel(), - getSortedRowModel: getSortedRowModel(), - }); - const table = createSvelteTable(options); + //Section table + const columns = [ + { + accessorKey: "id", + header: () => "id", + filterFn: `equalsString`, + }, + { + accessorKey: "firstname", + header: () => $_("first-name"), + filterFn: `includesString`, + }, + { + accessorKey: "middlename", + header: () => $_("middle-name"), + cell: (info) => { + if (!info || !info.getValue()) { + return ""; + } + return info.getValue(); + }, + filterFn: `includesString`, + }, + { + accessorKey: "lastname", + header: () => $_("last-name"), + filterFn: `includesString`, + }, + { + accessorKey: "created_via", + header: () => "created_via", + filterFn: `includesString`, + }, + { + accessorKey: "group", + header: () => $_("group"), + cell: (info) => { + const group = info.getValue(); + if (group.responseType === "RUNNERORGANIZATION") { + return group.name; + } + return `${group.parentGroup.name} > ${group.name}`; + }, + filterFn: `group`, + sortingFn: (rowA, rowB, col) => { + return rowA.original.group.name.localeCompare(rowB.original.group.name); + }, + }, + { + accessorKey: "distance", + header: () => $_("distance"), + sortingFn: (rowA, rowB, col) => { + return rowA.original.distance > rowB.original.distance; + }, + cell: (info) => { + if (info.getValue() < 1000) { + return `${info.getValue()} m`; + } + return `${(info.getValue() / 1000).toFixed(1)} km`; + }, + enableColumnFilter: false, + }, + { + accessorKey: "actions", + header: () => $_("action"), + cell: (info) => { + return renderComponent(TableActions, { + detailsLink: `/runners/${info.row.original.id}`, + deleteAction: () => { + active_delete = + current_runners[ + current_runners.findIndex((r) => r.id == info.row.original.id) + ]; + }, + deleteEnabled: + store.state.jwtinfo.userdetails.permissions.includes( + "RUNNER:DELETE" + ), + }); + }, + enableColumnFilter: false, + enableSorting: false, + }, + ]; + const options = writable({ + data: [], + columns: columns, + filterFns: { + group: groupFilter, + }, + initialState: { + pagination: { + pageSize: 50, + }, + }, + enableRowSelection: true, + getCoreRowModel: getCoreRowModel(), + getFilteredRowModel: getFilteredRowModel(), + getPaginationRowModel: getPaginationRowModel(), + getSortedRowModel: getSortedRowModel(), + }); + const table = createSvelteTable(options); - async function deleteRunner(delete_runner_id) { - await RunnerService.runnerControllerRemove(delete_runner_id, true); - current_runners = current_runners.filter((r) => r.id !== delete_runner_id); - options.update((options) => ({ - ...options, - data: current_runners, - })); - toast.success($_("runner-deleted")); - } + async function deleteRunner(delete_runner_id) { + await RunnerService.runnerControllerRemove(delete_runner_id, true); + current_runners = current_runners.filter((r) => r.id !== delete_runner_id); + options.update((options) => ({ + ...options, + data: current_runners, + })); + toast.success($_("runner-deleted")); + } - onMount(async () => { - RunnerTeamService.runnerTeamControllerGetAll().then((val) => { - teams = val; - }); - RunnerOrganizationService.runnerOrganizationControllerGetAll().then( - (val) => { - orgs = val; - } - ); + onMount(async () => { + RunnerTeamService.runnerTeamControllerGetAll().then((val) => { + teams = val; + }); + RunnerOrganizationService.runnerOrganizationControllerGetAll().then( + (val) => { + orgs = val; + } + ); - let page = 0; - while (page >= 0) { - const runners = await RunnerService.runnerControllerGetAll( - page, - 500, - created_via - ); - if (runners.length == 0) { - page = -2; - } + let page = 0; + while (page >= 0) { + const runners = await RunnerService.runnerControllerGetAll( + page, + 500, + ); + if (runners.length == 0) { + page = -2; + } - current_runners = current_runners.concat(...runners); - options.update((options) => ({ - ...options, - data: current_runners, - })); + current_runners = current_runners.concat(...runners); + options.update((options) => ({ + ...options, + data: current_runners, + })); - dataLoaded = true; - page++; - } - }); - import { _ } from "svelte-i18n"; - import store from "../../store"; - import AddRunnerModal from "./AddRunnerModal.svelte"; - import ImportRunnerModal from "./ImportRunnerModal.svelte"; - import toast from "svelte-french-toast"; - $: current_runners = []; - export let modal_open = false; - export let import_modal_open = false; + dataLoaded = true; + page++; + } + }); + import { _ } from "svelte-i18n"; + import store from "../../store"; + import AddRunnerModal from "./AddRunnerModal.svelte"; + import ImportRunnerModal from "./ImportRunnerModal.svelte"; + import toast from "svelte-french-toast"; + $: current_runners = []; + export let modal_open = false; + export let import_modal_open = false; + + if (created_via != "all") { + $table.setColumnFilters([ + { + id: "created_via", + value: created_via, + }, + ]); + }
-

- {$_("runners")} -

- {#if created_via !== "all"} -

created_via={created_via}

- {/if} - {#if store.state.jwtinfo.userdetails.permissions.includes("RUNNER:CREATE")} - - - {/if} - { - deleteRunner(event.detail.id); - }} - /> - {#if store.state.jwtinfo.userdetails.permissions.includes("RUNNER:GET")} - {#if !dataLoaded} - - {:else} - - - -
- - - {#each $table.getHeaderGroups() as headerGroup} - - - {#each headerGroup.headers as header} - - {/each} - - {/each} - - - {#each $table.getRowModel().rows as row} - - - {#each row.getVisibleCells() as cell} - - {/each} - - {/each} - -
- $table.toggleAllRowsSelected()} - /> -
- row.toggleSelected()} - /> - - -
-
-
- {/if} - {/if} - +

+ {$_("runners")} +

+ {#if store.state.jwtinfo.userdetails.permissions.includes("RUNNER:CREATE")} + + + {/if} + { + deleteRunner(event.detail.id); + }} + /> + {#if store.state.jwtinfo.userdetails.permissions.includes("RUNNER:GET")} + {#if !dataLoaded} + + {:else} + + + +
+ + + {#each $table.getHeaderGroups() as headerGroup} + + + {#each headerGroup.headers as header} + + {/each} + + {/each} + + + {#each $table.getRowModel().rows as row} + + + {#each row.getVisibleCells() as cell} + + {/each} + + {/each} + +
+ $table.toggleAllRowsSelected()} + /> +
+ row.toggleSelected()} + /> + + +
+
+
+ {/if} + {/if} + {#if store.state.jwtinfo.userdetails.permissions.includes("RUNNER:CREATE")} - { - addRunners(event.detail.runners); - }} - /> - { - import_modal_open = false; - }} - passed_team={{}} - passed_orgs={[]} - passed_org={{}} - opened_from="RunnerOverview" - bind:import_modal_open - on:created={(event) => { - addRunners(event.detail.runners); - }} - /> + { + addRunners(event.detail.runners); + }} + /> + { + import_modal_open = false; + }} + passed_team={{}} + passed_orgs={[]} + passed_org={{}} + opened_from="RunnerOverview" + bind:import_modal_open + on:created={(event) => { + addRunners(event.detail.runners); + }} + /> {/if}