diff --git a/src/app/_helpers/collections/group-by.spec.ts b/src/app/_helpers/collections/group-by.spec.ts
index 295a8b1f..5d165257 100644
--- a/src/app/_helpers/collections/group-by.spec.ts
+++ b/src/app/_helpers/collections/group-by.spec.ts
@@ -13,7 +13,7 @@
* this program. If not, see .
*/
-import {groupBy, groupByProperty} from './group-by';
+import {groupBy, groupByStable, groupByProperty} from './group-by';
describe('groupBy', () => {
it('should group an array by a key', () => {
@@ -77,6 +77,29 @@ describe('groupBy', () => {
});
});
+describe('groupByStable', () => {
+ const array = [
+ {id: 2, name: 'two'},
+ {id: 4, name: 'three'},
+ {id: 3, name: 'three'},
+ {id: 1, name: 'one'},
+ ];
+ const result = groupByStable(array, it => it.name);
+
+ it('should group an array by keys', () => {
+ expect(result.get('one')).toEqual([{id: 1, name: 'one'}]);
+ expect(result.get('two')).toEqual([{id: 2, name: 'two'}]);
+ expect(result.get('three')).toEqual([
+ {id: 4, name: 'three'},
+ {id: 3, name: 'three'},
+ ]);
+ });
+
+ it('should provide ordered keys', () => {
+ expect([...result.keys()]).toEqual(['two', 'three', 'one']);
+ });
+});
+
describe('groupByProperty', function () {
it('should group by property', () => {
const array = [
diff --git a/src/app/_helpers/collections/group-by.ts b/src/app/_helpers/collections/group-by.ts
index b17ccc0b..b47e710f 100644
--- a/src/app/_helpers/collections/group-by.ts
+++ b/src/app/_helpers/collections/group-by.ts
@@ -28,6 +28,21 @@ export function groupBy(
}, {});
}
+/**
+ * Group an array by a function (returns a Map, whose keys keep order info of items entry)
+ */
+export function groupByStable(
+ collection: T[],
+ group: (item: T) => string | undefined,
+): Map {
+ return collection.reduce((accumulator: Map, item) => {
+ const key = group(item) ?? '';
+ accumulator.set(key, accumulator.get(key) ?? []);
+ accumulator.get(key)?.push(item);
+ return accumulator;
+ }, new Map());
+}
+
/**
*
*/
diff --git a/src/app/modules/hebis/daia-availability/daia-availability.component.spec.ts b/src/app/modules/hebis/daia-availability/daia-availability.component.spec.ts
index 0eadd2bb..0673026d 100644
--- a/src/app/modules/hebis/daia-availability/daia-availability.component.spec.ts
+++ b/src/app/modules/hebis/daia-availability/daia-availability.component.spec.ts
@@ -113,7 +113,7 @@ describe('DaiaAvailabilityComponent', () => {
dataProvider.daiaServiceUrl = workingDAIAurl;
translateService = TestBed.inject(TranslateService);
spyOn(dataProvider, 'getAvailability' as any).and.returnValue(
- Promise.resolve(sampleThing),
+ Promise.resolve([]),
);
spyOn(
DaiaAvailabilityComponent.prototype,
diff --git a/src/app/modules/hebis/daia-availability/daia-availability.component.ts b/src/app/modules/hebis/daia-availability/daia-availability.component.ts
index d78e1c8a..c9425031 100644
--- a/src/app/modules/hebis/daia-availability/daia-availability.component.ts
+++ b/src/app/modules/hebis/daia-availability/daia-availability.component.ts
@@ -20,8 +20,9 @@ import {FavoritesService} from '../../favorites/favorites.service';
import {DataProvider} from '../../data/data.provider';
import {DataDetailComponent} from '../../data/detail/data-detail.component';
import {DaiaDataProvider} from '../daia-data.provider';
-import {SCDaiaHolding} from '../protocol/response';
+import {DaiaHolding} from '../protocol/response';
import {ModalController} from '@ionic/angular';
+import {groupByStable} from '../../../_helpers/collections/group-by';
/**
* A Component to display an SCThing detailed
@@ -35,7 +36,9 @@ export class DaiaAvailabilityComponent
extends DataDetailComponent
implements OnInit
{
- holdings: SCDaiaHolding[] | undefined;
+ holdings?: DaiaHolding[];
+
+ holdingsByDepartments?: Map;
/**
*
@@ -80,7 +83,13 @@ export class DaiaAvailabilityComponent
*/
async getAvailability(uid: SCUuid) {
this.daiaDataProvider.getAvailability(uid).then(holdings => {
- this.holdings = holdings;
+ if (typeof holdings !== 'undefined') {
+ this.holdings = holdings;
+ this.holdingsByDepartments = groupByStable(
+ holdings,
+ holding => holding.department.id,
+ );
+ }
});
}
}
diff --git a/src/app/modules/hebis/daia-availability/daia-availability.html b/src/app/modules/hebis/daia-availability/daia-availability.html
index 97c9b4f4..bb3f3ff6 100644
--- a/src/app/modules/hebis/daia-availability/daia-availability.html
+++ b/src/app/modules/hebis/daia-availability/daia-availability.html
@@ -1,16 +1,32 @@
-
-
- {{ 'hebisSearch.daia.availability' | translate }}
-
-
-
-
-
-
- {{ 'hebisSearch.daia.unavailableAvailability' | translate }}
-
-
- {{ 'hebisSearch.daia.unknownAvailability' | translate }}
-
-
-
+
+
+
+ {{ 'hebisSearch.daia.availability' | translate }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ 'hebisSearch.daia.unavailableAvailability' | translate }}
+
+
+ {{ 'hebisSearch.daia.unknownAvailability' | translate }}
+
+
+
+
diff --git a/src/app/modules/hebis/daia-availability/daia-holding.component.ts b/src/app/modules/hebis/daia-availability/daia-holding.component.ts
index 57f1fa04..1064dfd0 100644
--- a/src/app/modules/hebis/daia-availability/daia-holding.component.ts
+++ b/src/app/modules/hebis/daia-availability/daia-holding.component.ts
@@ -14,7 +14,7 @@
*/
import {Component, Input, OnInit} from '@angular/core';
-import {SCDaiaHolding} from '../protocol/response';
+import {DaiaHolding} from '../protocol/response';
import {DaiaDataProvider} from '../daia-data.provider';
@Component({
@@ -23,14 +23,13 @@ import {DaiaDataProvider} from '../daia-data.provider';
styleUrls: ['./daia-holding.scss'],
})
export class DaiaHoldingComponent implements OnInit {
- @Input() holding: SCDaiaHolding;
+ @Input() holding: DaiaHolding;
constructor(private daiaDataProvider: DaiaDataProvider) {}
resourceLink?: string;
ngOnInit(): void {
- console.log(this.holding);
this.resourceLink = this.daiaDataProvider.getHoldingLink(this.holding);
}
}
diff --git a/src/app/modules/hebis/daia-availability/daia-holding.html b/src/app/modules/hebis/daia-availability/daia-holding.html
index b37bab12..cb0dd9a8 100644
--- a/src/app/modules/hebis/daia-availability/daia-holding.html
+++ b/src/app/modules/hebis/daia-availability/daia-holding.html
@@ -12,15 +12,6 @@
~ You should have received a copy of the GNU General Public License along with
~ this program. If not, see .
-->
-
-
-
-
-
{{ 'hebisSearch.daia.location' | translate }}
@@ -30,6 +21,10 @@
{{ 'hebisSearch.daia.signature' | translate }}
{{ holding.signature }}
+
+ {{ 'hebisSearch.daia.holdings' | translate }}
+ {{ holding.holdings }}
+
{{ 'hebisSearch.daia.comment' | translate }}
@@ -69,7 +64,10 @@
{{ 'hebisSearch.daia.status_states' + '.' + holding.status | translate }}
-1 &&
+ holding.available.href
+ "
[text]="'hebisSearch.daia.order' | translate"
[link]="holding.available.href"
>
diff --git a/src/app/modules/hebis/daia-availability/daia-holding.scss b/src/app/modules/hebis/daia-availability/daia-holding.scss
index 078fae64..f0b92375 100644
--- a/src/app/modules/hebis/daia-availability/daia-holding.scss
+++ b/src/app/modules/hebis/daia-availability/daia-holding.scss
@@ -21,6 +21,7 @@ ion-label a {
}
ion-grid {
padding: 0;
+ margin: 5px 5px;
ion-row {
background-color: var(--ion-color-light);
diff --git a/src/app/modules/hebis/daia-data.provider.spec.ts b/src/app/modules/hebis/daia-data.provider.spec.ts
index 7f151b8c..ed2813b3 100644
--- a/src/app/modules/hebis/daia-data.provider.spec.ts
+++ b/src/app/modules/hebis/daia-data.provider.spec.ts
@@ -23,7 +23,7 @@ import {LoggerConfig, LoggerModule, NGXLogger} from 'ngx-logger';
import {MapModule} from '../map/map.module';
import {HttpClientModule} from '@angular/common/http';
import {StorageModule} from '../storage/storage.module';
-import {SCDaiaHolding, SCDaiaService} from './protocol/response';
+import {DaiaHolding, DaiaService} from './protocol/response';
import {Observable, of} from 'rxjs';
import {TranslateLoader, TranslateModule} from '@ngx-translate/core';
@@ -69,9 +69,9 @@ describe('DaiaDataProvider', () => {
});
describe('getResourceLink', () => {
it('should return undefined when available not defined', () => {
- const holding: SCDaiaHolding = {
+ const holding: DaiaHolding = {
+ department: {id: '', content: ''},
id: '',
- label: '',
online: false,
signature: '',
};
@@ -80,16 +80,16 @@ describe('DaiaDataProvider', () => {
});
it('should return the resource link without proxy when service is openaccess', () => {
- const available: SCDaiaService = {
+ const available: DaiaService = {
delay: '',
expected: '',
href: 'https://some-url.com',
limitations: [],
service: 'openaccess',
};
- const holding: SCDaiaHolding = {
+ const holding: DaiaHolding = {
+ department: {id: '', content: ''},
id: '',
- label: '',
online: false,
signature: '',
available: available,
@@ -99,16 +99,16 @@ describe('DaiaDataProvider', () => {
});
it('should return the resource link with proxy when service is not openaccess', () => {
- const available: SCDaiaService = {
+ const available: DaiaService = {
delay: '',
expected: '',
href: 'https://some-url.com',
limitations: [],
service: 'other',
};
- const holding: SCDaiaHolding = {
+ const holding: DaiaHolding = {
+ department: {id: '', content: ''},
id: '',
- label: '',
online: false,
signature: '',
available: available,
@@ -124,51 +124,51 @@ describe('DaiaDataProvider', () => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
// let available, unavalable: SCDaiaService[];
- const checkedOut: SCDaiaService = {
+ const checkedOut: DaiaService = {
expected: '2022-09-01',
limitations: [],
service: 'loan',
};
- const notYetAvailableOnBuy: SCDaiaService = {
+ const notYetAvailableOnBuy: DaiaService = {
limitations: [{id: 'OnBuy', content: ''}],
service: 'loan',
};
- const notYetAvailableJustReturned: SCDaiaService = {
+ const notYetAvailableJustReturned: DaiaService = {
limitations: [{id: 'JustReturned', content: ''}],
service: 'loan',
};
- const notAvailableCopyIsMissing: SCDaiaService = {
+ const notAvailableCopyIsMissing: DaiaService = {
limitations: [{id: 'CopyIsMissing', content: ''}],
service: 'loan',
};
- const notAvailableCanceled: SCDaiaService = {
+ const notAvailableCanceled: DaiaService = {
limitations: [{id: 'Canceled', content: ''}],
service: 'loan',
};
- const libraryOnlyOnlyInHouse: SCDaiaService = {
+ const libraryOnlyOnlyInHouse: DaiaService = {
limitations: [{id: 'OnlyInHouse', content: ''}],
service: 'loan',
};
- const libraryOnlyExternalLoan: SCDaiaService = {
+ const libraryOnlyExternalLoan: DaiaService = {
limitations: [{id: 'ExternalLoan', content: ''}],
service: 'loan',
};
- const libraryOnlyNoLimitations: SCDaiaService = {
+ const libraryOnlyPresentation: DaiaService = {
+ service: 'presentation',
+ };
+
+ const availableLimitationsUndefined: DaiaService = {
service: 'loan',
};
- const availableLimitationsUndefined: SCDaiaService = {
- service: 'loan',
- };
-
- const availableLimitationsEmpty: SCDaiaService = {
+ const availableLimitationsEmpty: DaiaService = {
limitations: [],
service: 'loan',
};
@@ -205,21 +205,27 @@ describe('DaiaDataProvider', () => {
daiaDataProvider.getHoldingStatus([libraryOnlyExternalLoan], []),
).toEqual('library_only');
expect(
- daiaDataProvider.getHoldingStatus([], [libraryOnlyNoLimitations]),
+ daiaDataProvider.getHoldingStatus([libraryOnlyPresentation], []),
).toEqual('library_only');
});
it('should return available', () => {
expect(
- daiaDataProvider.getHoldingStatus([availableLimitationsUndefined], []),
+ daiaDataProvider.getHoldingStatus(
+ [availableLimitationsUndefined, libraryOnlyPresentation],
+ [],
+ ),
).toEqual('available');
expect(
- daiaDataProvider.getHoldingStatus([availableLimitationsEmpty], []),
+ daiaDataProvider.getHoldingStatus(
+ [availableLimitationsEmpty, libraryOnlyPresentation],
+ [],
+ ),
).toEqual('available');
});
it('should return unknown otherwise', () => {
- const withoutLoan: SCDaiaService = {
+ const withoutLoan: DaiaService = {
limitations: [],
service: 'anything else',
};
@@ -230,6 +236,12 @@ describe('DaiaDataProvider', () => {
expect(daiaDataProvider.getHoldingStatus([], [withoutLoan])).toEqual(
'unknown',
);
+ expect(
+ daiaDataProvider.getHoldingStatus([], [availableLimitationsUndefined]),
+ ).toEqual('unknown');
+ expect(
+ daiaDataProvider.getHoldingStatus([], [availableLimitationsEmpty]),
+ ).toEqual('unknown');
});
});
});
diff --git a/src/app/modules/hebis/daia-data.provider.ts b/src/app/modules/hebis/daia-data.provider.ts
index a7defdc9..7a859c5f 100644
--- a/src/app/modules/hebis/daia-data.provider.ts
+++ b/src/app/modules/hebis/daia-data.provider.ts
@@ -14,10 +14,9 @@
*/
import {Injectable} from '@angular/core';
import {
- SCDaiaAvailabilityResponse,
- SCDaiaHolding,
- SCDaiaService,
- SCDaiaSimpleContent,
+ DaiaAvailabilityResponse,
+ DaiaHolding,
+ DaiaService,
} from './protocol/response';
import {StorageProvider} from '../storage/storage.provider';
import {HttpClient, HttpHeaders} from '@angular/common/http';
@@ -73,7 +72,7 @@ export class DaiaDataProvider {
);
}
- async getAvailability(id: string): Promise {
+ async getAvailability(id: string): Promise {
if (typeof this.daiaServiceUrl === 'undefined') {
try {
const features = this.configProvider.getValue(
@@ -99,12 +98,12 @@ export class DaiaDataProvider {
return new Promise(resolve =>
this.httpClient
- .get(this.daiaServiceUrl as string, {
+ .get(this.daiaServiceUrl as string, {
params: {id, lang: this.translateService.currentLang},
})
.subscribe(
- (response: SCDaiaAvailabilityResponse) => {
- const holdings: SCDaiaHolding[] = [];
+ (response: DaiaAvailabilityResponse) => {
+ const holdings: DaiaHolding[] = [];
if (response && Array.isArray(response.document)) {
response.document.map(document => {
Array.isArray(document.item) &&
@@ -120,62 +119,60 @@ export class DaiaDataProvider {
about,
available,
storage,
+ chronology,
unavailable,
} = element;
- const holdingIndex = holdings.findIndex(
- holding => holding.id === departmentId,
- );
+ const holdingStatus = this.holdingHasStatus(
+ available || [],
+ )
+ ? this.getHoldingStatus(
+ available || [],
+ unavailable || [],
+ )
+ : undefined;
- if (holdingIndex === -1) {
- const holdingStatus = this.holdingHasStatus(
- available || [],
- )
- ? this.getHoldingStatus(
- available || [],
- unavailable || [],
- )
- : undefined;
-
- const dueDate =
- holdingStatus === 'checked_out'
- ? (
- unavailable.find(
- item => item.service === 'loan',
- ) as SCDaiaService
- ).expected
- : undefined;
-
- holdings.push({
- id: departmentId,
- label: departmentLabel,
- href: departmentLink,
- signature: label,
- status: holdingStatus,
- dueDate: dueDate,
- online:
- Array.isArray(available) &&
- typeof available.find(
- item => item.service === 'remote',
- ) !== 'undefined',
- available:
- (Array.isArray(available) &&
- (available.find(
- item => item.service === 'openaccess',
- ) ||
- available.find(
- item => item.service === 'loan',
- ))) ||
- undefined,
- unavailable:
- (Array.isArray(unavailable) &&
+ const dueDate =
+ holdingStatus === 'checked_out'
+ ? (
unavailable.find(
item => item.service === 'loan',
- )) ||
- undefined,
- storage,
- about,
- });
- }
+ ) as DaiaService
+ ).expected
+ : undefined;
+
+ holdings.push({
+ id: element.id,
+ department: {
+ id: departmentId,
+ content: departmentLabel,
+ href: departmentLink,
+ },
+ signature: label,
+ status: holdingStatus,
+ dueDate: dueDate,
+ online:
+ Array.isArray(available) &&
+ typeof available.find(
+ item => item.service === 'remote',
+ ) !== 'undefined',
+ available:
+ (Array.isArray(available) &&
+ available.find(item =>
+ ['openaccess', 'loan', 'presentation'].includes(
+ item.service,
+ ),
+ )) ||
+ undefined,
+ unavailable:
+ (Array.isArray(unavailable) &&
+ unavailable.find(
+ item => item.service === 'loan',
+ )) ||
+ undefined,
+ storage,
+ about,
+ holdings: chronology?.about,
+ });
} catch {
// No element available
}
@@ -194,7 +191,7 @@ export class DaiaDataProvider {
);
}
- getHoldingLink(holding: SCDaiaHolding) {
+ getHoldingLink(holding: DaiaHolding) {
if (typeof this.hebisProxyUrl === 'undefined') {
this.logger.error('HeBIS proxy url undefined');
@@ -212,18 +209,25 @@ export class DaiaDataProvider {
return `${this.hebisProxyUrl}${resourceLink}`;
}
- holdingHasStatus(available: SCDaiaService[]): boolean {
+ holdingHasStatus(available: DaiaService[]): boolean {
return !available.some(item => item.service === 'remote');
}
getHoldingStatus(
- available: SCDaiaService[],
- unavailable: SCDaiaService[],
- ): SCDaiaHolding['status'] {
+ available: DaiaService[],
+ unavailable: DaiaService[],
+ ): DaiaHolding['status'] {
const loan: {available: number; unavailable: number} = {
available: available.findIndex(item => item.service === 'loan'),
unavailable: unavailable.findIndex(item => item.service === 'loan'),
};
+ const presentation: {available: number; unavailable: number} = {
+ available: available.findIndex(item => item.service === 'presentation'),
+ unavailable: unavailable.findIndex(
+ item => item.service === 'presentation',
+ ),
+ };
+
if (
loan.unavailable !== -1 &&
typeof unavailable[loan.unavailable].expected !== 'undefined'
@@ -249,16 +253,16 @@ export class DaiaDataProvider {
if (
(loan.unavailable !== -1 &&
- (!Array.isArray(unavailable[loan.unavailable].limitations) ||
- (unavailable[loan.unavailable].limitations as SCDaiaSimpleContent[])
- .length === 0 ||
- unavailable[loan.unavailable].limitations?.some(limitation =>
- ['OnlyInHouse'].includes(limitation.id),
- ))) ||
+ unavailable[loan.unavailable].limitations?.some(limitation =>
+ ['OnlyInHouse'].includes(limitation.id),
+ )) ||
(loan.available !== -1 &&
available[loan.available].limitations?.some(limitation =>
['ExternalLoan'].includes(limitation.id),
- ))
+ )) ||
+ (loan.available === -1 &&
+ presentation.available !== -1 &&
+ presentation.unavailable === -1)
)
return 'library_only';
diff --git a/src/app/modules/hebis/hebis-data.provider.ts b/src/app/modules/hebis/hebis-data.provider.ts
index ec4c8c0e..abf186fb 100644
--- a/src/app/modules/hebis/hebis-data.provider.ts
+++ b/src/app/modules/hebis/hebis-data.provider.ts
@@ -15,7 +15,7 @@
import {Injectable} from '@angular/core';
import {Client} from '@openstapps/api/lib/client';
import {SCHebisSearchRequest} from './protocol/request';
-import {SCHebisSearchResponse} from './protocol/response';
+import {HebisSearchResponse} from './protocol/response';
import {StorageProvider} from '../storage/storage.provider';
import {StAppsWebHttpClient} from '../data/stapps-web-http-client.provider';
import {HttpClient} from '@angular/common/http';
@@ -80,7 +80,7 @@ export class HebisDataProvider extends DataProvider {
async hebisSearch(
searchRequest: SCHebisSearchRequest,
options?: {addPrefix: boolean},
- ): Promise {
+ ): Promise {
if (options?.addPrefix) {
searchRequest.query = [HEBIS_PREFIX, searchRequest.query].join('');
}
@@ -89,7 +89,7 @@ export class HebisDataProvider extends DataProvider {
if (typeof page === 'undefined') {
const preFlightResponse =
- await this.client.invokeRoute(
+ await this.client.invokeRoute(
this.hebisSearchRoute,
undefined,
{
@@ -101,7 +101,7 @@ export class HebisDataProvider extends DataProvider {
page = preFlightResponse.pagination.total;
}
- return this.client.invokeRoute(
+ return this.client.invokeRoute(
this.hebisSearchRoute,
undefined,
{
diff --git a/src/app/modules/hebis/hebis-detail/hebis-detail.component.ts b/src/app/modules/hebis/hebis-detail/hebis-detail.component.ts
index 0d88b16f..624eb04a 100644
--- a/src/app/modules/hebis/hebis-detail/hebis-detail.component.ts
+++ b/src/app/modules/hebis/hebis-detail/hebis-detail.component.ts
@@ -20,7 +20,7 @@ import {HebisDataProvider} from '../hebis-data.provider';
import {FavoritesService} from '../../favorites/favorites.service';
import {DataProvider} from '../../data/data.provider';
import {DataDetailComponent} from '../../data/detail/data-detail.component';
-import {SCDaiaHolding} from '../protocol/response';
+import {DaiaHolding} from '../protocol/response';
import {ModalController} from '@ionic/angular';
/**
@@ -32,7 +32,7 @@ import {ModalController} from '@ionic/angular';
templateUrl: 'hebis-detail.html',
})
export class HebisDetailComponent extends DataDetailComponent {
- holdings: SCDaiaHolding[];
+ holdings: DaiaHolding[];
/**
*
diff --git a/src/app/modules/hebis/protocol/response.ts b/src/app/modules/hebis/protocol/response.ts
index 65f6fc9b..814ce168 100644
--- a/src/app/modules/hebis/protocol/response.ts
+++ b/src/app/modules/hebis/protocol/response.ts
@@ -5,7 +5,7 @@ import {
SCSearchResultPagination,
} from '@openstapps/core';
-export interface SCHebisSearchResponse {
+export interface HebisSearchResponse {
/**
* Response Array of SCBook type or Object
*/
@@ -17,48 +17,51 @@ export interface SCHebisSearchResponse {
pagination: SCSearchResultPagination;
}
-export interface SCDaiaAvailabilityResponse {
+export interface DaiaAvailabilityResponse {
document: Array<{
item: Array<{
id: string;
label: string;
- department: SCDaiaSimpleContent;
- available: SCDaiaService[];
- unavailable: SCDaiaService[];
+ chronology?: {
+ about?: string;
+ };
+ department: DaiaSimpleContent;
+ available: DaiaService[];
+ unavailable: DaiaService[];
debugInfo: string;
about?: string;
- storage?: SCDaiaSimpleContent;
+ storage?: DaiaSimpleContent;
}>;
}>;
- institution: SCDaiaSimpleContent;
+ institution: DaiaSimpleContent;
timestamp: string;
}
-export interface SCDaiaSimpleContent {
+export interface DaiaSimpleContent {
id: string;
content: string;
href?: string;
}
-export interface SCDaiaService {
+export interface DaiaService {
delay?: string;
href?: string;
service: string;
expected?: string;
- limitations?: SCDaiaSimpleContent[];
+ limitations?: DaiaSimpleContent[];
}
-export interface SCDaiaHolding {
+export interface DaiaHolding {
id: string;
- label: string;
- href?: string;
+ department: DaiaSimpleContent;
signature: string;
- storage?: SCDaiaSimpleContent;
- available?: SCDaiaService;
- unavailable?: SCDaiaService;
+ storage?: DaiaSimpleContent;
+ available?: DaiaService;
+ unavailable?: DaiaService;
about?: string;
online: boolean;
dueDate?: string;
+ holdings?: string;
status?:
| 'checked_out'
| 'not_yet_available'
diff --git a/src/app/modules/library/account/library-account.service.ts b/src/app/modules/library/account/library-account.service.ts
index cc6b4be7..77b3b3af 100644
--- a/src/app/modules/library/account/library-account.service.ts
+++ b/src/app/modules/library/account/library-account.service.ts
@@ -34,7 +34,7 @@ import {AuthHelperService} from '../../auth/auth-helper.service';
import {ConfigProvider} from '../../config/config.provider';
import {TranslateService} from '@ngx-translate/core';
import {AlertController} from '@ionic/angular';
-import {SCHebisSearchResponse} from '../../hebis/protocol/response';
+import {HebisSearchResponse} from '../../hebis/protocol/response';
@Injectable({
providedIn: 'root',
@@ -141,7 +141,7 @@ export class LibraryAccountService {
return;
}
- let response: SCHebisSearchResponse;
+ let response: HebisSearchResponse;
try {
response = await this.hebisDataProvider.hebisSearch(
diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json
index a3e7731a..103e0da4 100644
--- a/src/assets/i18n/de.json
+++ b/src/assets/i18n/de.json
@@ -370,7 +370,8 @@
"ejournal": "ejournal",
"unknownAvailability": "Keine Information vorhanden",
"unavailableAvailability": "System nicht erreichbar",
- "fulltext": "Zum Volltext"
+ "fulltext": "Zum Volltext",
+ "holdings": "Bestand"
}
},
"schedule": {
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index a25fcc55..6cbf1883 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -358,7 +358,7 @@
"not_available": "not available",
"library_only": "for use in library only",
"available": "available",
- "unknown": "not available"
+ "unknown": "unknown"
},
"dueDate": "Due date",
"location": "Location",
@@ -370,7 +370,8 @@
"ejournal": "ejournal",
"unknownAvailability": "No information available",
"unavailableAvailability": "System unreachable",
- "fulltext": "Full text"
+ "fulltext": "Full text",
+ "holdings": "Holdings"
}
},
"schedule": {