diff --git a/src/components/contacts/ContactDetail.svelte b/src/components/contacts/ContactDetail.svelte index 0d8fae48..c4550a19 100644 --- a/src/components/contacts/ContactDetail.svelte +++ b/src/components/contacts/ContactDetail.svelte @@ -31,7 +31,7 @@ isEmailValid && isPhoneValidOrEmpty && ((isAddress1Valid && iszipcodevalid && iscityvalid) || - address_checked === false); + editable.address_checked === false); const promise = GroupContactService.groupContactControllerGetOne( params.contact ).then((data) => { @@ -42,6 +42,15 @@ original_data.groups = original_data.groups.map((g) => g.id); editable.address_checked = editable.address.address1 !== null; original_data.address_checked = editable.address.address1 !== null; + if(editable.address_checked===false){ + editable.address = { + address1: "", + address2: "", + city: "", + postalcode: "", + country: "" + } + } }); RunnerOrganizationService.runnerOrganizationControllerGetAll().then((val) => { orgs = val; @@ -64,7 +73,7 @@ }).showToast(); editable.address.country = "DE"; if (editable.address_checked === false) { - editable.address = {}; + editable.address = null; } if (editable.email) editable.email = editable.email; if (editable.phone) editable.phone = editable.phone; diff --git a/src/components/orgs/AddOrgModal.svelte b/src/components/orgs/AddOrgModal.svelte index 8419cdf8..6b3d8b68 100644 --- a/src/components/orgs/AddOrgModal.svelte +++ b/src/components/orgs/AddOrgModal.svelte @@ -13,7 +13,24 @@ $: name = ""; $: processed_last_submit = true; $: isOrgnameValid = name.trim().length !== 0; - $: createbtnenabled = isOrgnameValid; + $: isAddress1Valid = address_input1_value.trim().length !== 0; + $: iszipcodevalid = address_zipcode_value.trim().length !== 0; + $: iscityvalid = address_city_value.trim().length !== 0; + $: createbtnenabled = + isOrgnameValid && + ((isAddress1Valid && iszipcodevalid && iscityvalid) || + address_checked === false); + $: address_input1_value = ""; + $: address_input2_value = ""; + $: address_zipcode_value = ""; + $: address_city_value = ""; + $: address_checked = true; + + let address_input1; + let address_input2; + let address_zipcode; + let address_city; + (() => { document.onkeydown = (e) => { e = e || window.event; @@ -35,9 +52,19 @@ text: "Organization is being added...", duration: -1, }).showToast(); + let address = {}; + if (address_checked === true) { + address = { + address1: address_input1_value, + address2: address_input2_value || "", + postalcode: address_zipcode_value, + city: address_city_value, + country: "DE", + }; + } RunnerOrganizationService.runnerOrganizationControllerPost({ name, - address: undefined, + address: address, contact: undefined, }) .then((result) => { @@ -133,7 +160,105 @@ {/if} - +
+
+ +
+
+ +
+
+ {#if address_checked === true} +
+ + + {#if !isAddress1Valid} + + Address is required + + {/if} +
+
+ + +
+
+ + + {#if !iszipcodevalid} + + Valid zipcode/ postal code is required + + {/if} +
+
+ + + {#if !iscityvalid} + + Valid city is required + + {/if} +
+ {/if} + diff --git a/src/components/orgs/OrgDetail.svelte b/src/components/orgs/OrgDetail.svelte index 43df726a..3c71e0c8 100644 --- a/src/components/orgs/OrgDetail.svelte +++ b/src/components/orgs/OrgDetail.svelte @@ -10,13 +10,21 @@ import ImportRunnerModal from "../runners/ImportRunnerModal.svelte"; import PromiseError from "../base/PromiseError.svelte"; $: delete_triggered = false; - $: save_enabled = !data_changed; - export let params; - let orgdata = {}; - let original = {}; + $: address_valid_or_none = + (isAddress1Valid && iszipcodevalid && iscityvalid) || + editable.address_checked === false; + $: save_enabled = data_changed && address_valid_or_none; + let original = ""; + let original_object = {}; let contacts = []; + export let params; + $: editable = {}; $: data_loaded = false; - $: data_changed = JSON.stringify(orgdata) === JSON.stringify(original); + $: data_changed = !(JSON.stringify(editable) === original); + $: isAddress1Valid = editable.address?.address1?.trim().length !== 0; + $: iszipcodevalid = editable.address?.postalcode?.trim().length !== 0; + $: iscityvalid = editable.address?.city?.trim().length !== 0; + const promise = RunnerOrganizationService.runnerOrganizationControllerGetOne( params.orgid ).then((value) => { @@ -26,8 +34,20 @@ value.contact = value.contact.id; } } - orgdata = Object.assign(orgdata, value); - original = Object.assign(original, value); + value.address_checked = value.address.address1 !== null; + if(value.address_checked===false){ + value.address = { + address1: "", + address2: "", + city: "", + postalcode: "", + country: "" + } + } + editable = Object.assign(editable, value); + editable = editable; + original_object = Object.assign(editable, value); + original = JSON.stringify(value); }); GroupContactService.groupContactControllerGetAll().then((val) => { contacts = val; @@ -36,7 +56,7 @@ let delete_org = {}; function deleteOrganization() { RunnerOrganizationService.runnerOrganizationControllerRemove( - original.id, + original_object.id, false ) .then((resp) => { @@ -48,9 +68,9 @@ location.replace("./"); }) .catch((err) => { - modal_open = true; - delete_org = original; - }); + modal_open = true; + delete_org = original_object; + }); } function submit() { if (data_loaded === true && save_enabled) { @@ -58,17 +78,18 @@ text: "updating organization", duration: 2500, }).showToast(); - let postdata = orgdata; + let postdata = Object.assign({}, editable); + if (postdata.address_checked === false) { + postdata.address = null; + } + console.log(postdata) postdata.contact = postdata.contact === "null" ? null : postdata.contact; RunnerOrganizationService.runnerOrganizationControllerPut( - original.id, + original_object.id, postdata ) .then((resp) => { - Object.assign(original, orgdata); - original = orgdata; - Object.assign(original, orgdata); - // + original = JSON.stringify(editable); Toastify({ text: "updated organization", duration: 2500, @@ -89,15 +110,15 @@ current_runners={[]} passed_team={{}} passed_orgs={[]} - passed_org={orgdata} + passed_org={editable} opened_from="OrgDetail" bind:import_modal_open /> {#if data_loaded}
- {original.name} - + {original_object.name} + {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:IMPORT')}
@@ -225,7 +246,7 @@ class="font-medium text-gray-700">{$_('contact')} -
- - + +
+
+ +
+
+ +
+ {#if editable.address_checked === true} +
+ + + {#if !isAddress1Valid} + + {$_('address-is-required')} + + {/if} +
+
+ + +
+
+ + + {#if !iszipcodevalid} + + {$_('valid-zipcode-postal-code-is-required')} + + {/if} +
+
+ + + {#if !iscityvalid} + + {$_('valid-city-is-required')} + + {/if} +
+ {/if}
{:else} {#await promise} diff --git a/src/components/orgs/OrgOverview.svelte b/src/components/orgs/OrgOverview.svelte index 7d4cd967..47a2f496 100644 --- a/src/components/orgs/OrgOverview.svelte +++ b/src/components/orgs/OrgOverview.svelte @@ -88,9 +88,13 @@
- {#if o.address} - {JSON.stringify(o.address)} - {:else}no address specified{/if} + {#if o.address.address1 !== null} + {o.address.address1}
+ {o.address.address2 || ''}
+ {o.address.postalcode} + {o.address.city} + {o.address.country} + {/if}
diff --git a/src/components/runners/RunnersOverview.svelte b/src/components/runners/RunnersOverview.svelte index 320a70cc..e7ceeaa5 100644 --- a/src/components/runners/RunnersOverview.svelte +++ b/src/components/runners/RunnersOverview.svelte @@ -115,6 +115,13 @@ {#if runner.phone}
{runner.phone}
{/if} + {#if runner.address.address1 !== null} + {runner.address.address1}
+ {runner.address.address2 || ''}
+ {runner.address.postalcode} + {runner.address.city} + {runner.address.country} + {/if} {#if runner.group.responseType === 'RUNNERTEAM'}