🐞 [bugfix] RunnerDetail update

ref #13
This commit is contained in:
Philipp Dormann 2021-01-24 17:16:49 +01:00
parent 5552055b98
commit ec4bcd093b

View File

@ -5,26 +5,25 @@
import { RunnerService } from "@odit/lfk-client-js"; import { RunnerService } from "@odit/lfk-client-js";
import Toastify from "toastify-js"; import Toastify from "toastify-js";
import PromiseError from "./PromiseError.svelte"; import PromiseError from "./PromiseError.svelte";
import isEmail from "validator/es/lib/isEmail";
export let params; export let params;
const runner_promise = RunnerService.runnerControllerGetOne(params.runnerid); const runner_promise = RunnerService.runnerControllerGetOne(params.runnerid);
let data_loaded = false; let data_loaded = false;
$: delete_triggered = false; $: delete_triggered = false;
$: original_data = {}; $: original_data = {};
$: editable_userdata = {}; $: editable = {};
runner_promise.then((data) => { runner_promise.then((data) => {
console.log(data);
data_loaded = true; data_loaded = true;
original_data = Object.assign(original_data, data); original_data = Object.assign(original_data, data);
editable_userdata = data; editable = data;
}); });
$: changes_performed = !lodashIsEqual(original_data, editable_userdata); $: changes_performed = !lodashIsEqual(original_data, editable);
import isEmail from "validator/es/lib/isEmail";
$: isEmailValid = $: isEmailValid =
(editable_userdata.email || "") === "" || (editable.email || "") === "" ||
(editable_userdata.email && isEmail(editable_userdata.email || "")); (editable.email && isEmail(editable.email || ""));
$: isFirstnameValid = editable_userdata.firstname !== ""; $: isFirstnameValid = editable.firstname !== "";
$: isLastnameValid = editable_userdata.lastname !== ""; $: isLastnameValid = editable.lastname !== "";
$: save_enabled = $: save_enabled =
changes_performed && isFirstnameValid && isLastnameValid && isEmailValid; changes_performed && isFirstnameValid && isLastnameValid && isEmailValid;
function submit() { function submit() {
@ -33,11 +32,12 @@
text: "Updating runner...", text: "Updating runner...",
duration: 2500, duration: 2500,
}).showToast(); }).showToast();
RunnerService.runnerControllerPut(original_data.id, editable_userdata) editable.group = editable.group.id;
RunnerService.runnerControllerPut(original_data.id, editable)
.then((resp) => { .then((resp) => {
Object.assign(original_data, editable_userdata); Object.assign(original_data, editable);
original_data = editable_userdata; original_data = editable;
Object.assign(original_data, editable_userdata); Object.assign(original_data, editable);
// //
Toastify({ Toastify({
text: "Runner updated!", text: "Runner updated!",
@ -108,7 +108,7 @@
{original_data.firstname} {original_data.firstname}
{original_data.middlename || ''} {original_data.middlename || ''}
{original_data.lastname} {original_data.lastname}
<span data-id="user_actions_${editable_userdata.id}"> <span data-id="user_actions_${editable.id}">
{#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:DELETE')} {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:DELETE')}
{#if delete_triggered} {#if delete_triggered}
<button <button
@ -153,7 +153,7 @@
class:border-red-500={!isFirstnameValid} class:border-red-500={!isFirstnameValid}
class:focus:border-red-500={!isFirstnameValid} class:focus:border-red-500={!isFirstnameValid}
class:focus:ring-red-500={!isFirstnameValid} class:focus:ring-red-500={!isFirstnameValid}
bind:value={editable_userdata.firstname} bind:value={editable.firstname}
name="firstname" name="firstname"
class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" /> class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" />
{#if !isFirstnameValid} {#if !isFirstnameValid}
@ -171,7 +171,7 @@
autocomplete="off" autocomplete="off"
placeholder={$_('middle-name')} placeholder={$_('middle-name')}
type="text" type="text"
bind:value={editable_userdata.middlename} bind:value={editable.middlename}
name="middlename" name="middlename"
class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" /> class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" />
</div> </div>
@ -183,7 +183,7 @@
autocomplete="off" autocomplete="off"
placeholder={$_('last-name')} placeholder={$_('last-name')}
type="text" type="text"
bind:value={editable_userdata.lastname} bind:value={editable.lastname}
class:border-red-500={!isLastnameValid} class:border-red-500={!isLastnameValid}
class:focus:border-red-500={!isLastnameValid} class:focus:border-red-500={!isLastnameValid}
class:focus:ring-red-500={!isLastnameValid} class:focus:ring-red-500={!isLastnameValid}
@ -204,7 +204,7 @@
autocomplete="off" autocomplete="off"
placeholder={$_('e-mail-adress')} placeholder={$_('e-mail-adress')}
type="email" type="email"
bind:value={editable_userdata.email} bind:value={editable.email}
class:border-red-500={!isEmailValid} class:border-red-500={!isEmailValid}
class:focus:border-red-500={!isEmailValid} class:focus:border-red-500={!isEmailValid}
class:focus:ring-red-500={!isEmailValid} class:focus:ring-red-500={!isEmailValid}
@ -223,7 +223,7 @@
autocomplete="off" autocomplete="off"
placeholder={$_('phone')} placeholder={$_('phone')}
type="tel" type="tel"
bind:value={editable_userdata.phone} bind:value={editable.phone}
name="phone" name="phone"
class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" /> class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" />
</div> </div>