Feature: [address] apply details button on address-render-box

This commit is contained in:
2023-03-20 18:27:18 +01:00
parent 8177a0fcce
commit f256dda6fe
10 changed files with 62 additions and 12 deletions

View File

@@ -29,3 +29,7 @@ export const syncAddressWithReference = async (address: Address): Promise<Addres
export const markAddressReviewed = async (address: Address): Promise<Address> => {
return makeFetch<null, Address>("POST", `/api/1.0/main/address/reference-match/${address.address_id}/set/reviewed`);
}
export const markAddressToReview = async (address: Address): Promise<Address> => {
return makeFetch<null, Address>("POST", `/api/1.0/main/address/reference-match/${address.address_id}/set/to_review`);
}

View File

@@ -23,6 +23,10 @@ document.querySelectorAll<HTMLSpanElement>('span[data-address-details]').forEach
template: '<address-details-button :address_id="addressId" :address_ref_status="addressRefStatus" @update-address="onUpdateAddress"></address-details-button>',
methods: {
onUpdateAddress: (address: Address): void => {
if (address.refStatus === 'to_review' || address.refStatus === 'reviewed') {
// in this two case, the address content do not change
return;
}
if (window.confirm("L'adresse a été modifiée. Vous pouvez continuer votre travail. Cependant, pour afficher les données immédiatement, veuillez recharger la page. \n\n Voulez-vous recharger la page immédiatement ?")) {
window.location.reload();
}

View File

@@ -53,7 +53,6 @@ async function clickOrOpen(): Promise<void> {
}
const onUpdateAddress = (address: Address): void => {
console.log('from details button', address);
data.working_address = address;
data.working_ref_status = address.refStatus;
emit('update-address', address);

View File

@@ -1,5 +1,5 @@
<template>
<address-render-box :address="props.address"></address-render-box>
<address-render-box :address="props.address" :show-button-details="false"></address-render-box>
<address-details-ref-matching :address="props.address" @update-address="onUpdateAddress"></address-details-ref-matching>
<address-details-map :address="props.address"></address-details-map>
<address-details-geographical-layers :address="props.address"></address-details-geographical-layers>
@@ -23,7 +23,6 @@ const emit = defineEmits<{
}>();
const onUpdateAddress = (address: Address): void => {
console.log('from details content', address);
emit('update-address', address);
}

View File

@@ -42,7 +42,6 @@ const close = (): void => {
}
const onUpdateAddress = (address: Address): void => {
console.log('from details modal', address);
emit('update-address', address);
}

View File

@@ -29,7 +29,8 @@ let marker: L.Marker|null = null;
onMounted(() => {
if (map_div.value === null) {
throw new Error('map div not found');
// there is no map div when the address does not have any Point
return;
}
if (props.address.point !== null) {

View File

@@ -1,7 +1,8 @@
<template>
<template v-if="props.address.refStatus !== 'match'">
<div v-if="props.address.refStatus === 'to_review'" class="alert alert-danger">
<p><i class="fa fa-warning"></i> L'adresse de référence a été modifiée.</p>
<div v-if="props.address.refStatus === 'to_review' || props.address.refStatus === 'reviewed'" :class="{alert: true, 'alert-danger': props.address.refStatus === 'to_review', 'alert-warning': props.address.refStatus === 'reviewed'}">
<p v-if="props.address.refStatus === 'to_review'"><i class="fa fa-warning"></i> L'adresse de référence a été modifiée.</p>
<p v-if="props.address.refStatus === 'reviewed'">L'adresse est conservée, mais diffère de l'adresse de référence.</p>
<template v-if="props.address.addressReference.street !== props.address.street || props.address.addressReference.streetNumber !== props.address.streetNumber">
<template v-if="props.address.country.code === 'BE'">
@@ -33,8 +34,9 @@
</template>
<ul class="record_actions">
<li><button class="btn btn-sm btn-update" @click="applyUpdate">Appliquer les modifications</button></li>
<li><button class="btn btn-sm btn-primary" @click="keepCurrentAddress">Conserver</button></li>
<li v-if="props.address.refStatus === 'to_review'"><button class="btn btn-sm btn-update" @click="applyUpdate">Appliquer les modifications</button></li>
<li v-if="props.address.refStatus === 'to_review'"><button class="btn btn-sm btn-primary" @click="keepCurrentAddress">Conserver</button></li>
<li v-if="props.address.refStatus === 'reviewed'"><button class="btn btn-sm btn-primary" @click="backToReview">-examiner</button></li>
</ul>
</div>
</template>
@@ -43,7 +45,7 @@
<script lang="ts" setup>
import {Address} from "../../../../types";
import {markAddressReviewed, syncAddressWithReference} from "../../../../lib/api/address";
import {markAddressReviewed, markAddressToReview, syncAddressWithReference} from "../../../../lib/api/address";
export interface AddressDetailsRefMatchingProps {
address: Address;
@@ -67,6 +69,12 @@ const keepCurrentAddress = async () => {
emit("update-address", new_address);
}
const backToReview = async () => {
const new_address = await markAddressToReview(props.address);
emit("update-address", new_address);
}
</script>
<style scoped lang="scss">

View File

@@ -11,6 +11,7 @@
<p v-for="(l, i) in address.lines" :key="`line-${i}`">
{{ l }}
</p>
<p v-if="showButtonDetails"><address-details-button :address_id="address.address_id" :address_ref_status="address.refStatus"></address-details-button></p>
</div>
<div v-else>
<p v-if="'' !== address.text"
@@ -35,11 +36,12 @@
<p v-for="(l, i) in address.lines" :key="`line-${i}`">
{{ l }}
</p>
<p v-if="showButtonDetails"><address-details-button :address_id="address.address_id" :address_ref_status="address.refStatus"></address-details-button></p>
</div>
<div v-else>
<p v-if="address.text"
class="street">
{{ address.text }}
{{ address.text }} <template v-if="showButtonDetails"><address-details-button :address_id="address.address_id" :address_ref_status="address.refStatus"></address-details-button></template>
</p>
</div>
</div>
@@ -65,11 +67,13 @@
<script>
import Confidential from 'ChillMainAssets/vuejs/_components/Confidential.vue';
import AddressDetailsButton from "ChillMainAssets/vuejs/_components/AddressDetails/AddressDetailsButton.vue";
export default {
name: 'AddressRenderBox',
components: {
Confidential
Confidential,
AddressDetailsButton,
},
props: {
address: {
@@ -82,6 +86,10 @@ export default {
useDatePane: {
default: false,
type: Boolean
},
showButtonDetails: {
default: true,
type: Boolean
}
},
computed: {