diff --git a/web/frontend/src/Config.root.svelte b/web/frontend/src/Config.root.svelte index 126f92b..6b8ae60 100644 --- a/web/frontend/src/Config.root.svelte +++ b/web/frontend/src/Config.root.svelte @@ -14,15 +14,18 @@ import SupportSettings from "./config/SupportSettings.svelte"; import AdminSettings from "./config/AdminSettings.svelte"; - export let isAdmin; - export let isSupport; - export let isApi; - export let username; - export let ncontent; + /* Svelte 5 Props */ + let { + isAdmin, + isSupport, + isApi, + username, + ncontent, + } = $props(); {#if isAdmin} - + Admin Options @@ -31,7 +34,7 @@ {/if} {#if isSupport || isAdmin} - + Support Options diff --git a/web/frontend/src/analysis/PlotSelection.svelte b/web/frontend/src/analysis/PlotSelection.svelte index 6a5e089..ef3f4a7 100644 --- a/web/frontend/src/analysis/PlotSelection.svelte +++ b/web/frontend/src/analysis/PlotSelection.svelte @@ -21,10 +21,14 @@ } from "@sveltestrap/sveltestrap"; import { gql, getContextClient, mutationStore } from "@urql/svelte"; - export let availableMetrics; - export let metricsInHistograms; - export let metricsInScatterplots; + /* Svelte 5 Props */ + let { + availableMetrics, + metricsInHistograms = $bindable(), + metricsInScatterplots = $bindable(), + } = $props(); + /* Const Init */ const client = getContextClient(); const updateConfigurationMutation = ({ name, value }) => { return mutationStore({ @@ -38,11 +42,13 @@ }); }; - let isHistogramConfigOpen = false, - isScatterPlotConfigOpen = false; - let selectedMetric1 = null, - selectedMetric2 = null; + /* State Init */ + let isHistogramConfigOpen = $state(false); + let isScatterPlotConfigOpen = $state(false); + let selectedMetric1 = $state(null); + let selectedMetric2 = $state(null); + /* Functions */ function updateConfiguration(data) { updateConfigurationMutation({ name: data.name, @@ -55,12 +61,12 @@ } - - @@ -78,7 +84,7 @@ type="checkbox" bind:group={metricsInHistograms} value={metric} - on:change={() => + onchange={() => updateConfiguration({ name: "analysis_view_histogramMetrics", value: metricsInHistograms, @@ -91,7 +97,7 @@ - @@ -112,7 +118,7 @@ style="float: right;" outline color="danger" - on:click={() => { + onclick={() => { metricsInScatterplots = metricsInScatterplots.filter( (p) => pair != p, ); @@ -146,7 +152,7 @@ diff --git a/web/frontend/src/config/AdminSettings.svelte b/web/frontend/src/config/AdminSettings.svelte index dd53df4..4ccbb36 100644 --- a/web/frontend/src/config/AdminSettings.svelte +++ b/web/frontend/src/config/AdminSettings.svelte @@ -12,13 +12,17 @@ import Options from "./admin/Options.svelte"; import NoticeEdit from "./admin/NoticeEdit.svelte"; - export let ncontent; - - let users = []; - let roles = []; + /* Svelte 5 Props */ + let { ncontent } = $props(); + /* Const Init*/ const ccconfig = getContext("cc-config"); + /* State Init */ + let users = $state([]); + let roles = $state([]); + + /* Functions */ function getUserList() { fetch("/config/users/?via-ldap=false¬-just-user=true") .then((res) => res.json()) @@ -40,21 +44,22 @@ getValidRoles(); } + /* on Mount */ onMount(() => initAdmin()); - + getUserList()} /> - + getUserList()} bind:users /> - + getUserList()} /> - + getUserList()} /> diff --git a/web/frontend/src/config/UserSettings.svelte b/web/frontend/src/config/UserSettings.svelte index 1b59e31..2df1152 100644 --- a/web/frontend/src/config/UserSettings.svelte +++ b/web/frontend/src/config/UserSettings.svelte @@ -12,17 +12,26 @@ import PlotRenderOptions from "./user/PlotRenderOptions.svelte"; import PlotColorScheme from "./user/PlotColorScheme.svelte"; - export let username - export let isApi + /* Svelte 5 Props */ + let { + username, + isApi + } = $props(); + /* Const Init */ const ccconfig = getContext("cc-config"); - let message = { msg: "", target: "", color: "#d63384" }; - let displayMessage = false; - let cbmode = ccconfig?.plot_general_colorblindMode || false; + + /* State Init */ + let message = $state({ msg: "", target: "", color: "#d63384" }); + let displayMessage = $state(false); + let cbmode = $state(ccconfig?.plot_general_colorblindMode || false); - async function handleSettingSubmit(event) { - const selector = event.detail.selector - const target = event.detail.target + /* Functions */ + async function handleSettingSubmit(event, setting) { + event.preventDefault(); + + const selector = setting.selector + const target = setting.target let form = document.querySelector(selector); let formData = new FormData(form); try { @@ -53,6 +62,6 @@ } - handleSettingSubmit(e)}/> - handleSettingSubmit(e)}/> - handleSettingSubmit(e)}/> + handleSettingSubmit(e, newSetting)}/> + handleSettingSubmit(e, newSetting)}/> + handleSettingSubmit(e, newSetting)}/> diff --git a/web/frontend/src/config/admin/AddUser.svelte b/web/frontend/src/config/admin/AddUser.svelte index 6ca5c62..99c6a84 100644 --- a/web/frontend/src/config/admin/AddUser.svelte +++ b/web/frontend/src/config/admin/AddUser.svelte @@ -10,17 +10,19 @@ @@ -60,7 +58,7 @@ action="/config/users/" class="card-body" autocomplete="off" - on:submit|preventDefault={handleUserSubmit} + onsubmit={(e) => handleUserSubmit(e)} > Create User
diff --git a/web/frontend/src/config/admin/EditProject.svelte b/web/frontend/src/config/admin/EditProject.svelte index 0623f12..215fe51 100644 --- a/web/frontend/src/config/admin/EditProject.svelte +++ b/web/frontend/src/config/admin/EditProject.svelte @@ -7,15 +7,19 @@ @@ -108,19 +110,17 @@ placeholder="project-id" id="project-id" /> - - handleAddProject(e)}>Add handleRemoveProject(e)}>Remove

diff --git a/web/frontend/src/config/admin/EditRole.svelte b/web/frontend/src/config/admin/EditRole.svelte index c351ab9..6618535 100644 --- a/web/frontend/src/config/admin/EditRole.svelte +++ b/web/frontend/src/config/admin/EditRole.svelte @@ -10,17 +10,19 @@ @@ -113,19 +113,17 @@ > {/each} - - handleAddRole(e)}>Add handleRemoveRole(e)}>Remove

diff --git a/web/frontend/src/config/admin/NoticeEdit.svelte b/web/frontend/src/config/admin/NoticeEdit.svelte index 497f4e3..29f0f61 100644 --- a/web/frontend/src/config/admin/NoticeEdit.svelte +++ b/web/frontend/src/config/admin/NoticeEdit.svelte @@ -6,14 +6,18 @@ import { Col, Card, CardTitle, CardBody } from "@sveltestrap/sveltestrap"; import { fade } from "svelte/transition"; - export let ncontent; + /* Svelte 5 Props */ + let { ncontent } = $props(); - let message = { msg: "", color: "#d63384" }; - let displayMessage = false; + /* State Init */ + let message = $state({ msg: "", color: "#d63384" }); + let displayMessage = $state(false); + + /* Functions */ + async function handleEditNotice(event) { + event.preventDefault(); - async function handleEditNotice() { const content = document.querySelector("#notice-content").value; - let formData = new FormData(); formData.append("new-content", content); @@ -56,14 +60,11 @@ value={ncontent} id="notice-content" /> - - - handleEditNotice(e)}>Edit Notice

diff --git a/web/frontend/src/config/admin/Options.svelte b/web/frontend/src/config/admin/Options.svelte index aa762de..2af1307 100644 --- a/web/frontend/src/config/admin/Options.svelte +++ b/web/frontend/src/config/admin/Options.svelte @@ -6,10 +6,13 @@ import { getContext, onMount } from "svelte"; import { Col, Card, CardBody, CardTitle } from "@sveltestrap/sveltestrap"; - let scrambled; - + /*Const Init */ const resampleConfig = getContext("resampling"); + /* State Init */ + let scrambled = $state(false); + + /* on Mount */ onMount(() => { scrambled = window.localStorage.getItem("cc-scramble-names") != null; }); @@ -33,7 +36,7 @@ type="checkbox" id="scramble-names-checkbox" style="margin-right: 1em;" - on:click={() => handleScramble()} + onclick={() => handleScramble()} bind:checked={scrambled} /> Active? diff --git a/web/frontend/src/config/admin/ShowUsers.svelte b/web/frontend/src/config/admin/ShowUsers.svelte index 25da2fb..fb31693 100644 --- a/web/frontend/src/config/admin/ShowUsers.svelte +++ b/web/frontend/src/config/admin/ShowUsers.svelte @@ -16,23 +16,19 @@ CardTitle, CardBody, } from "@sveltestrap/sveltestrap"; - import { createEventDispatcher } from "svelte"; import ShowUsersRow from "./ShowUsersRow.svelte"; - export let users = []; - - const dispatch = createEventDispatcher(); - function reloadUserList() { - dispatch("reload"); - } + /*Svelte 5 Props */ + let { users = $bindable([]), reloadUser } = $props(); + /* Functions */ function deleteUser(username) { if (confirm("Are you sure?")) { let formData = new FormData(); formData.append("username", username); fetch("/config/users/", { method: "DELETE", body: formData }).then((res) => { if (res.status == 200) { - reloadUserList(); + reloadUser(); } else { confirm(res.statusText); } @@ -40,7 +36,6 @@ } } - $: userList = users; @@ -53,7 +48,7 @@

@@ -71,13 +66,13 @@ - {#each userList as user} + {#each users as user} deleteUser(user.username)}>Delete diff --git a/web/frontend/src/config/admin/ShowUsersRow.svelte b/web/frontend/src/config/admin/ShowUsersRow.svelte index a30dc79..67801a5 100644 --- a/web/frontend/src/config/admin/ShowUsersRow.svelte +++ b/web/frontend/src/config/admin/ShowUsersRow.svelte @@ -10,9 +10,13 @@ import { Button } from "@sveltestrap/sveltestrap"; import { fetchJwt } from "../../generic/utils.js" - export let user; + /* Svelte 5 Props */ + let { user } = $props(); - let jwt = ""; + /* State Init */ + let jwt = $state(""); + + /* Functions */ function getUserJwt(username) { const p = fetchJwt(username); p.then((content) => { @@ -30,7 +34,7 @@ {user?.roles ? user.roles.join(", ") : "No Roles"} {#if !jwt} - {:else} diff --git a/web/frontend/src/config/support/SupportOptions.svelte b/web/frontend/src/config/support/SupportOptions.svelte index 88541e0..39400a3 100644 --- a/web/frontend/src/config/support/SupportOptions.svelte +++ b/web/frontend/src/config/support/SupportOptions.svelte @@ -6,12 +6,17 @@ import { Row, Col, Card, CardTitle, CardBody, Button} from "@sveltestrap/sveltestrap"; import { fade } from "svelte/transition"; - export let config; + /* Svelte 5 Props */ + let { config } = $props(); - let message; - let displayMessage; + /* State Init */ + let message = $state(""); + let displayMessage = $state(false); + + /* Functions */ + async function handleSettingSubmit(event, selector, target) { + event.preventDefault() - async function handleSettingSubmit(selector, target) { let form = document.querySelector(selector); let formData = new FormData(form); try { @@ -58,7 +63,7 @@ id="node-paging-form" method="post" action="/frontend/configuration/" - on:submit|preventDefault={() => handleSettingSubmit("#node-paging-form", "npag")}> + onsubmit={(e) => handleSettingSubmit(e, "#node-paging-form", "npag")}>
diff --git a/web/frontend/src/config/user/PlotColorScheme.svelte b/web/frontend/src/config/user/PlotColorScheme.svelte index 1cb5d86..30cedd3 100644 --- a/web/frontend/src/config/user/PlotColorScheme.svelte +++ b/web/frontend/src/config/user/PlotColorScheme.svelte @@ -19,21 +19,20 @@ CardTitle, } from "@sveltestrap/sveltestrap"; import { fade } from "svelte/transition"; - import { createEventDispatcher } from 'svelte'; - export let config; - export let message; - export let displayMessage; - export let cbmode = false; + /* Svelte 5 Props */ + let { + config, + message = $bindable(), + displayMessage = $bindable(), + cbmode = $bindable(false), + updateSetting + } = $props(); - const dispatch = createEventDispatcher(); - function updateSetting(selector, target) { - dispatch('update-config', { - selector: selector, - target: target - }); - } - + /* State Init */ + let activeRow = $state(JSON.stringify(config?.plot_general_colorscheme)); + + /* Const Init */ const colorschemes = { Default: [ "#00bfff", @@ -321,7 +320,6 @@ "rgb(189,189,189)", ] } - @@ -350,37 +348,34 @@ - {#each Object.entries(cbmode ? cvdschemes : colorschemes) as [name, rgbrow]} - - - + + - - - {/each} + + + + {/each} + {/key}
{name} - {#if rgbrow.join(",") == config.plot_general_colorscheme} + {#key activeRow} + {#each Object.entries(cbmode ? cvdschemes : colorschemes) as [name, rgbrow]} +
{name} - updateSetting("#colorscheme-form", "cs")} + checked={activeRow == JSON.stringify(rgbrow)} + onclick={(e) => { + activeRow = JSON.stringify(rgbrow) + updateSetting(e, { + selector: "#colorscheme-form", + target: "cs", + }); + }} /> - {:else} - - updateSetting("#colorscheme-form", "cs")} - /> - {/if} - - {#each rgbrow as rgb} - - {/each} -
+ {#each rgbrow as rgb} + + {/each} +
diff --git a/web/frontend/src/config/user/PlotRenderOptions.svelte b/web/frontend/src/config/user/PlotRenderOptions.svelte index f2ac0aa..26e6563 100644 --- a/web/frontend/src/config/user/PlotRenderOptions.svelte +++ b/web/frontend/src/config/user/PlotRenderOptions.svelte @@ -19,33 +19,29 @@ CardTitle, } from "@sveltestrap/sveltestrap"; import { fade } from "svelte/transition"; - import { createEventDispatcher } from 'svelte'; - export let config; - export let message; - export let displayMessage; - - const dispatch = createEventDispatcher(); - function updateSetting(selector, target) { - dispatch('update-config', { - selector: selector, - target: target - }); - } + /* Svelte 5 Props */ + let { + config, + message = $bindable(), + displayMessage = $bindable(), + updateSetting + } = $props(); -
- updateSetting("#line-width-form", "lw")} + onsubmit={(e) => updateSetting(e, { + selector: "#line-width-form", + target: "lw", + })} > - updateSetting("#plots-per-row-form", "ppr")} + onsubmit={(e) => updateSetting(e, { + selector: "#plots-per-row-form", + target: "ppr", + })} > - updateSetting("#backgrounds-form", "bg")} + onsubmit={(e) => updateSetting(e, { + selector: "#backgrounds-form", + target: "bg", + })} > - updateSetting("#colorblindmode-form", "cbm")} + onsubmit={(e) => updateSetting(e, { + selector: "#colorblindmode-form", + target: "cbm", + })} > @@ -90,8 +88,10 @@ method="post" action="/frontend/configuration/" class="card-body" - on:submit|preventDefault={() => - updateSetting("#paging-form", "pag")} + onsubmit={(e) => updateSetting(e, { + selector: "#paging-form", + target: "pag", + })} > Generate JWT {#if jwt} -

@@ -149,7 +149,7 @@

{/if} {:else} -

diff --git a/web/frontend/src/generic/PlotGrid.svelte b/web/frontend/src/generic/PlotGrid.svelte index c324409..b5cc30e 100644 --- a/web/frontend/src/generic/PlotGrid.svelte +++ b/web/frontend/src/generic/PlotGrid.svelte @@ -19,6 +19,7 @@ * Requirements * - Parent Components must be already Migrated * - TODO: Job.root.svelte, Node.root.svelte + * - DONE: Analysis, Status, User * * How-To * - Define "Plot-Slotcode" as SV5 Snippet with argument "item" in parent (!)