address: render address lines in vue AddressRenderBox

This commit is contained in:
nobohan 2022-01-06 21:15:56 +01:00
parent fd40ae0198
commit d14edd469e
4 changed files with 54 additions and 55 deletions

View File

@ -2,21 +2,28 @@
<component :is="component" class="chill-entity entity-address my-3"> <component :is="component" class="chill-entity entity-address my-3">
<component :is="component" class="address" :class="multiline"> <component :is="component" class="address" :class="multiline">
<p v-if="address.text" <div v-if="isMultiline === true">
class="street"> <p v-for="(l, i) in address.lines" :key="`line-${i}`">
{{ address.text }}, {{ l }}
</p> </p>
<p v-if="address.postcode" </div>
class="postcode"> <div v-else>
{{ address.postcode.code }} {{ address.postcode.name }} <p v-if="address.text"
</p> class="street">
<p v-if="address.country" {{ address.text }}
class="country"> </p>
{{ address.country.name.fr }} <p v-if="address.postcode"
</p> class="postcode">
{{ address.postcode.code }} {{ address.postcode.name }}
</p>
<p v-if="address.country"
class="country">
{{ address.country.name.fr }}
</p>
</div>
</component> </component>
<div v-if="isMultiline === true" class="address-more"> <!-- <div v-if="isMultiline === true" class="address-more">
<div v-if="address.floor"> <div v-if="address.floor">
<span class="floor"> <span class="floor">
<b>{{ $t('floor') }}</b>: {{ address.floor }} <b>{{ $t('floor') }}</b>: {{ address.floor }}
@ -52,7 +59,7 @@
<b>{{ $t('distribution') }}</b>: {{ address.distribution }} <b>{{ $t('distribution') }}</b>: {{ address.distribution }}
</span> </span>
</div> </div>
</div> </div> -->
<div v-if="useDatePane === true" class="address-more"> <div v-if="useDatePane === true" class="address-more">
<div v-if="address.validFrom"> <div v-if="address.validFrom">

View File

@ -15,7 +15,7 @@
{% macro raw(lines) %} {% macro raw(lines) %}
{% for l in lines %} {% for l in lines %}
<div>{{ l }}</div> <p>{{ l }}</p>
{% endfor %} {% endfor %}
{% endmacro %} {% endmacro %}

View File

@ -61,19 +61,10 @@ class AddressNormalizer implements ContextAwareNormalizerInterface, NormalizerAw
public function normalize($address, $format = null, array $context = []) public function normalize($address, $format = null, array $context = [])
{ {
if ($address instanceof Address) { if ($address instanceof Address) {
$text = $address->isNoAddress() ? '' : $address->getStreet() . ', ' . $address->getStreetNumber();
if (null !== $address->getPostCode()->getCountry()->getCountryCode()) {
if ($address->getPostCode()->getCountry()->getCountryCode() === 'FR') {
$text = $address->isNoAddress() ? '' : $address->getStreetNumber() . ', ' . $address->getStreet();
} else {
$text = $address->isNoAddress() ? '' : $address->getStreetNumber() . ', ' . $address->getStreet();
}
}
$data = [ $data = [
'address_id' => $address->getId(), 'address_id' => $address->getId(),
'text' => $this->addressRender->renderString($address, []), 'text' => $address->isNoAddress() ? null : $this->addressRender->renderStreetLine($address, []),
'street' => $address->getStreet(), 'street' => $address->getStreet(),
'streetNumber' => $address->getStreetNumber(), 'streetNumber' => $address->getStreetNumber(),
'postcode' => [ 'postcode' => [

View File

@ -50,7 +50,7 @@ class AddressRender implements ChillEntityRenderInterface
return $this->templating return $this->templating
->render('@ChillMain/Entity/address.html.twig', [ ->render('@ChillMain/Entity/address.html.twig', [
'address' => $addr, 'address' => $addr,
'streetLine' => $this->renderStreetLine($addr), // TODO inutile? 'streetLine' => $this->renderStreetLine($addr),
'render' => $options['render'] ?? 'bloc', 'render' => $options['render'] ?? 'bloc',
'options' => $options, 'options' => $options,
'lines' => $this->renderLines($addr), 'lines' => $this->renderLines($addr),
@ -73,7 +73,7 @@ class AddressRender implements ChillEntityRenderInterface
$lines[] = $this->renderStreetLine($addr); $lines[] = $this->renderStreetLine($addr);
$lines[] = $this->renderDeliveryLine($addr); $lines[] = $this->renderDeliveryLine($addr);
$lines[] = $this->renderCityLine($addr); $lines[] = $this->renderCityLine($addr);
$lines[] = $this->renderCountryLine($addr); // TODO only if != available country $lines[] = $this->renderCountryLine($addr);
} else { } else {
$lines[] = $this->renderBuildingLine($addr); $lines[] = $this->renderBuildingLine($addr);
$lines[] = $this->renderDeliveryLine($addr); $lines[] = $this->renderDeliveryLine($addr);
@ -99,6 +99,35 @@ class AddressRender implements ChillEntityRenderInterface
return $entity instanceof Address; return $entity instanceof Address;
} }
public function renderStreetLine($addr): ?string
{
if (!empty($addr->getStreet())) {
$street = $addr->getStreet();
} else {
$street = '';
}
if (!empty($addr->getStreetNumber())) {
$streetNumber = $addr->getStreetNumber();
} else {
$streetNumber = '';
}
$res = trim($street . ', ' . $streetNumber, ', ');
if (null !== $addr->getPostCode()->getCountry()->getCountryCode()) {
if ($addr->getPostCode()->getCountry()->getCountryCode() === 'FR') {
$res = trim($streetNumber . ', ' . $street, ', ');
}
}
if ((',' === $res) || ('' === $res)) {
$res = null;
}
return $res;
}
private function renderBuildingLine($addr): ?string private function renderBuildingLine($addr): ?string
{ {
@ -188,32 +217,4 @@ class AddressRender implements ChillEntityRenderInterface
return $res; return $res;
} }
private function renderStreetLine($addr): ?string
{
if (!empty($addr->getStreet())) {
$street = $addr->getStreet();
} else {
$street = '';
}
if (!empty($addr->getStreetNumber())) {
$streetNumber = $addr->getStreetNumber();
} else {
$streetNumber = '';
}
$res = trim($street . ', ' . $streetNumber, ', ');
if (null !== $addr->getPostCode()->getCountry()->getCountryCode()) {
if ($addr->getPostCode()->getCountry()->getCountryCode() === 'FR') {
$res = trim($streetNumber . ', ' . $street, ', ');
}
}
if ((',' === $res) || ('' === $res)) {
$res = null;
}
return $res;
}
} }