Merged PR 1809: PDP-EVT-Datum-anpassen

Related work items: #4825
This commit is contained in:
Lorenz Hilpert
2024-10-11 08:14:12 +00:00
committed by Nino Righi
parent acc2f7f664
commit 7a1ef06a4c

View File

@@ -93,35 +93,41 @@ export class ArticleDetailsComponent implements OnInit, OnDestroy {
contributors$ = this.store.item$.pipe(map((item) => item?.product?.contributors?.split(';').map((m) => m.trim())));
/**
* Ein Observable, das das Veröffentlichungsdatum eines Artikels formatiert.
* Ein Observable, das das Veröffentlichungsdatum eines Artikels aus dem Store extrahiert und formatiert.
*
* Dieses Observable filtert die Artikel, um sicherzustellen, dass ein Veröffentlichungsdatum vorhanden ist,
* und formatiert dann das Datum basierend auf der Verfügbarkeit im Katalog oder dem Veröffentlichungsdatum des Produkts.
* Das Veröffentlichungsdatum wird aus dem `item$` Observable des Stores abgeleitet. Es wird zuerst geprüft,
* ob ein `firstDayOfSale` in der `catalogAvailability` vorhanden ist und gültig ist. Wenn ja, wird dieses Datum
* im Format 'DD. MMMM y' zurückgegeben.
*
* - Wenn das erste Verkaufsdatum im Katalog gültig ist, wird es im Format 'DD. MMMM y' zurückgegeben.
* - Wenn das Veröffentlichungsdatum des Produkts gültig ist und es sich um den Jahresanfang handelt, wird nur das Jahr zurückgegeben.
* - Andernfalls wird das Veröffentlichungsdatum im Format 'DD. MMMM y' zurückgegeben.
* - Wenn kein gültiges Datum gefunden wird, wird ein leerer String zurückgegeben.
* Falls kein `firstDayOfSale` vorhanden ist, wird das Veröffentlichungsdatum aus dem `product` extrahiert und
* geprüft, ob es gültig ist. Wenn das Datum der Jahresanfang ist, wird nur das Jahr im Format 'y' zurückgegeben,
* andernfalls wird das Datum im Format 'DD. MMMM y' zurückgegeben.
*
* @observable publicationDate$
* Wenn kein gültiges Veröffentlichungsdatum gefunden wird, wird ein leerer String zurückgegeben.
*
* @observable publicationDate$ - Ein Observable, das das formatierte Veröffentlichungsdatum eines Artikels enthält.
*/
publicationDate$ = this.store.item$.pipe(
filter((item) => !!item?.product?.publicationDate),
map((item) => {
const catalogAvailability = moment(item.catalogAvailability.firstDayOfSale);
if (item.catalogAvailability?.firstDayOfSale) {
const catalogAvailability = moment(item.catalogAvailability.firstDayOfSale);
if (catalogAvailability.isValid()) {
return catalogAvailability.format('DD. MMMM y');
if (catalogAvailability.isValid()) {
return catalogAvailability.format('DD. MMMM y');
}
}
const publicationDate = moment(item.product.publicationDate);
if (item.product.publicationDate) {
const publicationDate = moment(item.product.publicationDate);
if (publicationDate.isValid()) {
if (publicationDate.clone().startOf('year').isSame(publicationDate, 'day')) {
return publicationDate.format('y');
if (publicationDate.isValid()) {
if (publicationDate.clone().startOf('year').isSame(publicationDate, 'day')) {
return publicationDate.format('y');
}
return publicationDate.format('DD. MMMM y');
}
return publicationDate.format('DD. MMMM y');
}
return '';