feat(data): use general template for all offers

With help of Object.keys (which is provided to the
template) make offers template general for different
price group types (which are academic or sport course
for now).

See discussions on !2
This commit is contained in:
Jovan Krunić
2019-04-15 13:58:25 +02:00
parent c3bc227a3c
commit 58960a29ea
11 changed files with 38 additions and 51 deletions

View File

@@ -26,8 +26,8 @@ import {DataRoutingModule} from './data-routing.module';
import {DataProvider} from './data.provider';
import {DataDetailContentComponent} from './detail/data-detail-content.component';
import {DataDetailComponent} from './detail/data-detail.component';
import {AcademicOffersDetailComponent} from './elements/academic-offers-detail.component';
import {AcademicOffersInListComponent} from './elements/academic-offers-in-list.component';
import {OffersDetailComponent} from './elements/offers-detail.component';
import {OffersInListComponent} from './elements/offers-in-list.component';
import {AddressDetailComponent} from './elements/address-detail.component';
import {LongInlineText} from './elements/long-inline-text.component';
import {OriginDetailComponent} from './elements/origin-detail.component';
@@ -63,8 +63,8 @@ import {VideoListItem} from './types/video/video-list-item.component';
@NgModule({
declarations: [
AcademicOffersDetailComponent,
AcademicOffersInListComponent,
OffersDetailComponent,
OffersInListComponent,
AddressDetailComponent,
ArticleDetailContentComponent,
ArticleListItem,

View File

@@ -1,36 +0,0 @@
<ion-card>
<ion-card-header>Offers</ion-card-header>
<ion-card-content>
<div *ngFor="let offer of offers">
<p *ngIf="offer.inPlace">
<ion-icon name="pin"></ion-icon>
<a [routerLink]="['/data-detail', offer.inPlace.uid]">{{offer.inPlace.name}}</a>,&nbsp;
<span *ngIf="offer.availabilityStarts">
<ion-icon name="calendar"></ion-icon> {{offer.availabilityStarts | date}}
</span>
</p>
<ion-grid>
<ion-row *ngIf="offer.prices.student">
<ion-col>Students:</ion-col>
<ion-col width-20 text-right>
<p *ngIf="offer.prices.student"> {{offer.prices.student | currency:'EUR':'symbol':undefined:'de'}}</p>
</ion-col>
</ion-row>
<ion-row *ngIf="offer.prices.employee">
<ion-col>Employees:</ion-col>
<ion-col width-20 text-right>
<p *ngIf="offer.prices.employee"> {{offer.prices.employee | currency:'EUR':'symbol':undefined:'de'}}
</p>
</ion-col>
</ion-row>
<ion-row *ngIf="offer.prices.guest">
<ion-col>Guests:</ion-col>
<ion-col width-20 text-right>
<p *ngIf="offer.prices.guest">
{{offer.prices.guest | currency:'EUR':'symbol':undefined:'de'}}</p>
</ion-col>
</ion-row>
</ion-grid>
</div>
</ion-card-content>
</ion-card>

View File

@@ -16,9 +16,10 @@ import {Component, Input} from '@angular/core';
import {SCAcademicPriceGroup, SCThingThatCanBeOfferedOffer} from '@openstapps/core';
@Component({
selector: 'stapps-academic-offers-in-list',
templateUrl: 'academic-offers-in-list.html',
selector: 'stapps-offers-detail',
templateUrl: 'offers-detail.html',
})
export class AcademicOffersInListComponent {
export class OffersDetailComponent {
objectKeys = Object.keys;
@Input() offers: Array<SCThingThatCanBeOfferedOffer<SCAcademicPriceGroup>>;
}

View File

@@ -0,0 +1,22 @@
<ion-card>
<ion-card-header>Offers</ion-card-header>
<ion-card-content>
<div *ngFor="let offer of offers">
<p *ngIf="offer.inPlace">
<ion-icon name="pin"></ion-icon>
<a [routerLink]="['/data-detail', offer.inPlace.uid]">{{offer.inPlace.name}}</a>,&nbsp;
<span *ngIf="offer.availabilityStarts">
<ion-icon name="calendar"></ion-icon> {{offer.availabilityStarts | date}}
</span>
</p>
<ion-grid *ngFor="let group of objectKeys(offer.prices)">
<ion-row>
<ion-col>{{group | titlecase}}</ion-col>
<ion-col width-20 text-right>
<p> {{offer.prices[group] | currency:'EUR':'symbol':undefined:'de'}}</p>
</ion-col>
</ion-row>
</ion-grid>
</div>
</ion-card-content>
</ion-card>

View File

@@ -16,9 +16,9 @@ import {Component, Input} from '@angular/core';
import {SCAcademicPriceGroup, SCThingThatCanBeOfferedOffer} from '@openstapps/core';
@Component({
selector: 'stapps-academic-offers-detail',
templateUrl: 'academic-offers-detail.html',
selector: 'stapps-offers-in-list',
templateUrl: 'offers-in-list.html',
})
export class AcademicOffersDetailComponent {
export class OffersInListComponent {
@Input() offers: Array<SCThingThatCanBeOfferedOffer<SCAcademicPriceGroup>>;
}

View File

@@ -9,5 +9,5 @@
</ion-card>
<stapps-simple-card [title]="'Duration'" [content]="[item.duration | amDuration:'minutes']"></stapps-simple-card>
<stapps-simple-card *ngIf="item.performers" [title]="'Performers'" [content]="item.performers"></stapps-simple-card>
<stapps-academic-offers-detail *ngIf="item.offers" [offers]="item.offers"></stapps-academic-offers-detail>
<stapps-offers-detail *ngIf="item.offers" [offers]="item.offers"></stapps-offers-detail>
<stapps-origin-detail [origin]="item.origin"></stapps-origin-detail>

View File

@@ -12,7 +12,7 @@
<ion-note *ngIf="item.event.type === 'academic event'">{{item.event.categories.join(', ')}}</ion-note>
</ion-col>
<ion-col width-20 text-right>
<stapps-academic-offers-in-list *ngIf="item.offers" [offers]="item.offers"></stapps-academic-offers-in-list>
<stapps-offers-in-list *ngIf="item.offers" [offers]="item.offers"></stapps-offers-in-list>
</ion-col>
</ion-row>
</ion-grid>

View File

@@ -9,7 +9,7 @@
</p>
</ion-card-content>
</ion-card>
<stapps-academic-offers-detail *ngIf="item.offers" [offers]="item.offers"></stapps-academic-offers-detail>
<stapps-offers-detail *ngIf="item.offers" [offers]="item.offers"></stapps-offers-detail>
<stapps-simple-card *ngIf="item.additives" [title]="'Additives'" [content]="translator.translate(item).additives().join(', ')">
</stapps-simple-card>
<ion-card *ngIf="item.nutrition">

View File

@@ -6,7 +6,7 @@
<p>{{item.categories.join(',')}}</p>
</ion-col>
<ion-col width-20 text-right>
<stapps-academic-offers-in-list *ngIf="item.offers" [offers]="item.offers"></stapps-academic-offers-in-list>
<stapps-offers-in-list *ngIf="item.offers" [offers]="item.offers"></stapps-offers-in-list>
</ion-col>
</ion-row>
</ion-grid>

View File

@@ -3,4 +3,4 @@
<stapps-simple-card *ngIf="item.datePublished" [title]="'Authors'" [content]="item.authors"></stapps-simple-card>
<stapps-simple-card *ngIf="item.datePublished" [title]="'Published'"
[content]="item.datePublished | amDateFormat:'DD. MMM YYYY'"></stapps-simple-card>
<stapps-academic-offers-detail *ngIf="item.offers" [offers]="item.offers"></stapps-academic-offers-detail>
<stapps-offers-detail *ngIf="item.offers" [offers]="item.offers"></stapps-offers-detail>