refactor: adjust HeBIS templates in list

Closes #318
This commit is contained in:
Jovan Krunić
2022-10-26 18:05:54 +02:00
committed by Rainer Killinger
parent 18ab92909d
commit aba9627661
22 changed files with 110 additions and 169 deletions

View File

@@ -22,10 +22,10 @@
[item]="item"
*ngSwitchCase="'periodical'"
></stapps-periodical-detail-content>
<stapps-hebis-article-content
<stapps-article-content
[item]="item"
*ngSwitchCase="'article'"
></stapps-hebis-article-content>
></stapps-article-content>
<ng-container *ngSwitchDefault>
<ion-item class="ion-text-wrap" lines="inset">
<ion-thumbnail slot="start" class="ion-margin-end">

View File

@@ -32,14 +32,6 @@ import {DaiaDataProvider} from './daia-data.provider';
import {StAppsWebHttpClient} from '../data/stapps-web-http-client.provider';
import {HebisRoutingModule} from './hebis-routing.module';
import {DataModule} from '../data/data.module';
import {BookDetailContentComponent} from './types/book/book-detail-content.component';
import {BookListItemComponent} from './types/book/book-list-item.component';
import {PeriodicalListItemComponent} from './types/periodical/periodical-list-item.component';
import {PeriodicalDetailContentComponent} from './types/periodical/periodical-detail-content.component';
import {HebisArticleListItemComponent} from './types/hebis-article/hebis-article-item.component';
import {HebisArticleContentComponent} from './types/hebis-article/hebis-article-content.component';
import {DataListComponent} from '../data/list/data-list.component';
import {DaiaAvailabilityComponent} from './daia-availability/daia-availability.component';
import {UtilModule} from '../../util/util.module';
@@ -55,12 +47,6 @@ import {DaiaHoldingComponent} from './daia-availability/daia-holding.component';
HebisDetailComponent,
HebisDetailContentComponent,
DaiaAvailabilityComponent,
BookDetailContentComponent,
BookListItemComponent,
PeriodicalDetailContentComponent,
PeriodicalListItemComponent,
HebisArticleListItemComponent,
HebisArticleContentComponent,
DaiaHoldingComponent,
],
entryComponents: [DataListComponent],
@@ -86,15 +72,5 @@ import {DaiaHoldingComponent} from './daia-availability/daia-holding.component';
UtilModule,
],
providers: [HebisDataProvider, DaiaDataProvider, StAppsWebHttpClient],
exports: [
HebisSearchPageComponent,
HebisDetailComponent,
HebisDetailContentComponent,
DaiaAvailabilityComponent,
PeriodicalDetailContentComponent,
BookDetailContentComponent,
HebisArticleListItemComponent,
HebisArticleContentComponent,
],
})
export class HebisModule {}

View File

@@ -1,30 +0,0 @@
/*
* Copyright (C) 2019 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {Component, Input} from '@angular/core';
import {SCBook} from '@openstapps/core';
/**
* TODO
*/
@Component({
selector: 'stapps-book-detail-content',
templateUrl: 'book-detail-content.html',
})
export class BookDetailContentComponent {
/**
* TODO
*/
@Input() item: SCBook;
}

View File

@@ -1,105 +0,0 @@
<!--
~ Copyright (C) 2022 StApps
~ This program is free software: you can redistribute it and/or modify it
~ under the terms of the GNU General Public License as published by the Free
~ Software Foundation, version 3.
~
~ This program is distributed in the hope that it will be useful, but WITHOUT
~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
~ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
~ more details.
~
~ You should have received a copy of the GNU General Public License along with
~ this program. If not, see <https://www.gnu.org/licenses/>.
-->
<ion-card *ngIf="item.sameAs">
<ion-card-header>{{
'hebisSearch.detail.title' | translate | sentencecase
}}</ion-card-header>
<ion-card-content>
<stapps-external-link
[text]="'name' | thingTranslate: item"
[link]="item.sameAs"
></stapps-external-link>
</ion-card-content>
</ion-card>
<stapps-simple-card
*ngIf="!item.sameAs"
[title]="'name' | propertyNameTranslate: item | sentencecase"
[content]="'name' | thingTranslate: item"
>
</stapps-simple-card>
<stapps-simple-card
*ngIf="item.edition"
[title]="'edition' | propertyNameTranslate: item | sentencecase"
[content]="'edition' | thingTranslate: item"
>
</stapps-simple-card>
<stapps-simple-card
*ngIf="item.description"
[title]="'hebisSearch.detail.description' | translate | sentencecase"
[content]="item.description"
></stapps-simple-card>
<stapps-simple-card
*ngIf="item.sourceOrganization"
[title]="'sourceOrganization' | propertyNameTranslate: item | sentencecase"
[content]="item.sourceOrganization"
></stapps-simple-card>
<ion-card *ngIf="item.authors && item.authors.length > 0">
<ion-card-header>{{
'authors' | propertyNameTranslate: item | sentencecase
}}</ion-card-header>
<ion-card-content>
<ion-label *ngFor="let author of item.authors">{{
'name' | thingTranslate: author
}}</ion-label>
</ion-card-content>
</ion-card>
<stapps-simple-card
*ngIf="item.ISBNs"
[title]="'ISBNs' | propertyNameTranslate: item | sentencecase"
[content]="item.ISBNs"
>
</stapps-simple-card>
<stapps-simple-card
*ngIf="item.firstPublished && !item.lastPublished"
[title]="'hebisSearch.detail.firstPublished' | translate | sentencecase"
[content]="item.firstPublished"
>
</stapps-simple-card>
<stapps-simple-card
*ngIf="item.firstPublished && item.lastPublished"
[title]="'hebisSearch.detail.firstPublished' | translate | sentencecase"
[content]="[item.firstPublished, item.lastPublished] | join: ' - '"
>
</stapps-simple-card>
<ion-card *ngIf="item.publications">
<ion-card-header>{{
'publications' | propertyNameTranslate: item | sentencecase
}}</ion-card-header>
<ion-card-content>
<p *ngFor="let publication of item.publications">
{{ publication.locations | join: ', ' }}
{{ publication.locations && publication.publisher ? ':' : '' }}
{{ publication.publisher }}
</p>
</ion-card-content>
</ion-card>
<ion-card *ngIf="item.categories">
<ion-card-header>{{
'categories' | propertyNameTranslate: item | sentencecase
}}</ion-card-header>
<ion-card-content>
<ion-chip [color]="'primary'">
<ion-icon [name]="item.type | dataIcon"></ion-icon>
<ion-label>{{ 'categories' | thingTranslate: item }}</ion-label>
</ion-chip>
</ion-card-content>
</ion-card>

View File

@@ -1,31 +0,0 @@
/*
* Copyright (C) 2019 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {Component, Input} from '@angular/core';
import {SCBook} from '@openstapps/core';
import {DataListItemComponent} from '../../../data/list/data-list-item.component';
/**
* TODO
*/
@Component({
selector: 'stapps-book-list-item',
templateUrl: 'book-list-item.html',
})
export class BookListItemComponent extends DataListItemComponent {
/**
* TODO
*/
@Input() item: SCBook;
}

View File

@@ -1,16 +0,0 @@
<ion-grid>
<ion-row>
<ion-col>
<h2 class="name">{{ 'name' | thingTranslate: item }}</h2>
<p *ngIf="item.keywords">
<stapps-long-inline-text
[text]="item.keywords.join(', ')"
[size]="110"
></stapps-long-inline-text>
</p>
<ion-note>
{{ 'type' | thingTranslate: item }}
</ion-note>
</ion-col>
</ion-row>
</ion-grid>

View File

@@ -1,30 +0,0 @@
/*
* Copyright (C) 2019 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {Component, Input} from '@angular/core';
import {SCArticle} from '@openstapps/core';
/**
* TODO
*/
@Component({
selector: 'stapps-hebis-article-content',
templateUrl: 'hebis-article-content.html',
})
export class HebisArticleContentComponent {
/**
* TODO
*/
@Input() item: SCArticle;
}

View File

@@ -1,106 +0,0 @@
<!--
~ Copyright (C) 2022 StApps
~ This program is free software: you can redistribute it and/or modify it
~ under the terms of the GNU General Public License as published by the Free
~ Software Foundation, version 3.
~
~ This program is distributed in the hope that it will be useful, but WITHOUT
~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
~ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
~ more details.
~
~ You should have received a copy of the GNU General Public License along with
~ this program. If not, see <https://www.gnu.org/licenses/>.
-->
<ion-card *ngIf="item.sameAs">
<ion-card-header>{{
'hebisSearch.detail.title' | translate | sentencecase
}}</ion-card-header>
<ion-card-content>
<stapps-external-link
[text]="'name' | thingTranslate: item"
[link]="item.sameAs"
></stapps-external-link>
</ion-card-content>
</ion-card>
<stapps-simple-card
*ngIf="!item.sameAs"
[title]="'name' | propertyNameTranslate: item | sentencecase"
[content]="'name' | thingTranslate: item"
>
</stapps-simple-card>
<stapps-simple-card
*ngIf="item.description"
[title]="'hebisSearch.detail.description' | translate | sentencecase"
[content]="item.description"
></stapps-simple-card>
<stapps-simple-card
*ngIf="item.sourceOrganization"
[title]="'sourceOrganization' | propertyNameTranslate: item | sentencecase"
[content]="item.sourceOrganization"
></stapps-simple-card>
<ion-card *ngIf="item.authors && item.authors.length > 0">
<ion-card-header>{{
'authors' | propertyNameTranslate: item | sentencecase
}}</ion-card-header>
<ion-card-content>
<ion-label *ngFor="let author of item.authors">{{
'name' | thingTranslate: author
}}</ion-label>
</ion-card-content>
</ion-card>
<stapps-simple-card
*ngIf="item.firstPublished && !item.lastPublished"
[title]="'hebisSearch.detail.firstPublished' | translate | sentencecase"
[content]="item.firstPublished"
>
</stapps-simple-card>
<stapps-simple-card
*ngIf="item.firstPublished && item.lastPublished"
[title]="'hebisSearch.detail.firstPublished' | translate | sentencecase"
[content]="[item.firstPublished, item.lastPublished] | join: ' - '"
>
</stapps-simple-card>
<ion-card *ngIf="item.publications">
<ion-card-header>{{
'publications' | propertyNameTranslate: item | sentencecase
}}</ion-card-header>
<ion-card-content>
<p *ngFor="let publication of item.publications">
{{ publication.locations | join: ', ' }}
{{ publication.locations && publication.publisher ? ':' : '' }}
{{ publication.publisher }}
</p>
</ion-card-content>
</ion-card>
<stapps-simple-card
*ngIf="item.reference"
[title]="'reference' | propertyNameTranslate: item | sentencecase"
[content]="item.reference"
></stapps-simple-card>
<stapps-simple-card
*ngIf="item.isPartOf"
[title]="'isPartOf' | propertyNameTranslate: item | sentencecase"
[content]="item.isPartOf.name"
></stapps-simple-card>
<ion-card *ngIf="item.categories">
<ion-card-header>{{
'categories' | propertyNameTranslate: item | sentencecase
}}</ion-card-header>
<ion-card-content>
<ion-chip [color]="'primary'">
<ion-icon [name]="item.type | dataIcon"></ion-icon>
<ion-label>{{ 'categories' | thingTranslate: item }}</ion-label>
</ion-chip>
</ion-card-content>
</ion-card>

View File

@@ -1,31 +0,0 @@
/*
* Copyright (C) 2019 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {Component, Input} from '@angular/core';
import {SCArticle} from '@openstapps/core';
import {DataListItemComponent} from '../../../data/list/data-list-item.component';
/**
* TODO
*/
@Component({
selector: 'stapps-hebis-article-item',
templateUrl: 'hebis-article-item.html',
})
export class HebisArticleListItemComponent extends DataListItemComponent {
/**
* TODO
*/
@Input() item: SCArticle;
}

View File

@@ -1,16 +0,0 @@
<ion-grid>
<ion-row>
<ion-col>
<h2 class="name">{{ 'name' | thingTranslate: item }}</h2>
<p *ngIf="item.keywords">
<stapps-long-inline-text
[text]="item.keywords.join(', ')"
[size]="110"
></stapps-long-inline-text>
</p>
<ion-note>
{{ 'type' | thingTranslate: item }}
</ion-note>
</ion-col>
</ion-row>
</ion-grid>

View File

@@ -1,30 +0,0 @@
/*
* Copyright (C) 2019 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {Component, Input} from '@angular/core';
import {SCPeriodical} from '@openstapps/core';
/**
* TODO
*/
@Component({
selector: 'stapps-periodical-detail-content',
templateUrl: 'periodical-detail-content.html',
})
export class PeriodicalDetailContentComponent {
/**
* TODO
*/
@Input() item: SCPeriodical;
}

View File

@@ -1,98 +0,0 @@
<!--
~ Copyright (C) 2022 StApps
~ This program is free software: you can redistribute it and/or modify it
~ under the terms of the GNU General Public License as published by the Free
~ Software Foundation, version 3.
~
~ This program is distributed in the hope that it will be useful, but WITHOUT
~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
~ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
~ more details.
~
~ You should have received a copy of the GNU General Public License along with
~ this program. If not, see <https://www.gnu.org/licenses/>.
-->
<ion-card *ngIf="item.sameAs">
<ion-card-header>{{
'hebisSearch.detail.title' | translate | sentencecase
}}</ion-card-header>
<ion-card-content>
<stapps-external-link
[text]="'name' | thingTranslate: item"
[link]="item.sameAs"
></stapps-external-link>
</ion-card-content>
</ion-card>
<stapps-simple-card
*ngIf="!item.sameAs"
[title]="'name' | propertyNameTranslate: item | sentencecase"
[content]="'name' | thingTranslate: item"
>
</stapps-simple-card>
<stapps-simple-card
*ngIf="item.description"
[title]="'hebisSearch.detail.description' | translate | sentencecase"
[content]="item.description"
></stapps-simple-card>
<stapps-simple-card
*ngIf="item.sourceOrganization"
[title]="'sourceOrganization' | propertyNameTranslate: item | sentencecase"
[content]="item.sourceOrganization"
></stapps-simple-card>
<ion-card *ngIf="item.authors && item.authors.length > 0">
<ion-card-header>{{
'authors' | propertyNameTranslate: item | sentencecase
}}</ion-card-header>
<ion-card-content>
<ion-label *ngFor="let author of item.authors">{{
'name' | thingTranslate: author
}}</ion-label>
</ion-card-content>
</ion-card>
<stapps-simple-card
*ngIf="item.firstPublished && !item.lastPublished"
[title]="'hebisSearch.detail.firstPublished' | translate | sentencecase"
[content]="item.firstPublished + '-'"
>
</stapps-simple-card>
<stapps-simple-card
*ngIf="item.firstPublished && item.lastPublished"
[title]="'hebisSearch.detail.firstPublished' | translate | sentencecase"
[content]="[item.firstPublished, item.lastPublished] | join: ' - '"
>
</stapps-simple-card>
<ion-card *ngIf="item.publications">
<ion-card-header>{{
'publications' | propertyNameTranslate: item | sentencecase
}}</ion-card-header>
<ion-card-content>
<p *ngFor="let publication of item.publications">
{{ publication.locations | join: ', ' }}
{{ publication.locations && publication.publisher ? ':' : '' }}
{{ publication.publisher }}
</p>
</ion-card-content>
</ion-card>
<ion-card *ngIf="item.categories">
<ion-card-header>{{
'categories' | propertyNameTranslate: item | sentencecase
}}</ion-card-header>
<ion-card-content>
<ion-chip [color]="'primary'">
<ion-icon [name]="item.type | dataIcon"></ion-icon>
<ion-label>{{ 'categories' | thingTranslate: item }}</ion-label>
</ion-chip>
</ion-card-content>
</ion-card>
<stapps-simple-card
*ngIf="item.ISSNs"
[title]="'ISSNs' | propertyNameTranslate: item | sentencecase"
[content]="item.ISSNs | join: ', '"
>
</stapps-simple-card>

View File

@@ -1,31 +0,0 @@
/*
* Copyright (C) 2019 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {Component, Input} from '@angular/core';
import {SCPeriodical} from '@openstapps/core';
import {DataListItemComponent} from '../../../data/list/data-list-item.component';
/**
* TODO
*/
@Component({
selector: 'stapps-periodical-list-item',
templateUrl: 'periodical-list-item.html',
})
export class PeriodicalListItemComponent extends DataListItemComponent {
/**
* TODO
*/
@Input() item: SCPeriodical;
}

View File

@@ -1,16 +0,0 @@
<ion-grid>
<ion-row>
<ion-col>
<h2 class="name">{{ 'name' | thingTranslate: item }}</h2>
<p *ngIf="item.keywords">
<stapps-long-inline-text
[text]="item.keywords.join(', ')"
[size]="110"
></stapps-long-inline-text>
</p>
<ion-note>
{{ 'type' | thingTranslate: item }}
</ion-note>
</ion-col>
</ion-row>
</ion-grid>