Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/app/core/shared/access-status.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ export class AccessStatusObject implements CacheableObject {
@autoserialize
embargoDate: string;

/**
* The lease expiration date value
*/
@autoserialize
leaseDate: string;

/**
* The {@link HALLink}s for this AccessStatusObject
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
@if (showAccessStatus) {
@if ((accessStatus$ | async); as status) {
@let date = embargoDate$ | async;
@let embargoDate = embargoDate$ | async;
@let leaseDate = leaseDate$ | async;
@let date = embargoDate ?? leaseDate;
<span [class]="'badge bg-secondary dont-break-out access-status-list-element-badge ' + accessStatusClass">
<span class="sr-only">{{ 'listelement.badge.access-status' | translate }}</span>
{{ status | translate: { date: date } }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ describe('AccessStatusBadgeComponent', () => {
let metadataOnlyStatus: AccessStatusObject;
let openAccessStatus: AccessStatusObject;
let embargoStatus: AccessStatusObject;
let leaseStatus: AccessStatusObject;
let restrictedStatus: AccessStatusObject;

let linkService;
Expand All @@ -52,6 +53,11 @@ describe('AccessStatusBadgeComponent', () => {
embargoDate: '2050-01-01',
});

leaseStatus = Object.assign(new AccessStatusObject(), {
status: 'lease',
leaseDate: '2050-06-01',
});

restrictedStatus = Object.assign(new AccessStatusObject(), {
status: 'restricted',
});
Expand Down Expand Up @@ -108,6 +114,11 @@ describe('AccessStatusBadgeComponent', () => {
expect(badge.nativeElement.textContent).toContain('embargo.listelement.badge');
}

function lookForLeaseBadgeForBitstream() {
const badge = fixture.debugElement.query(By.css('span.badge'));
expect(badge.nativeElement.textContent).toContain('lease.listelement.badge');
}

function lookForNoAccessStatusBadgeForBitstream() {
const badge = fixture.debugElement.query(By.css('span.badge'));
expect(badge).toBeNull();
Expand Down Expand Up @@ -216,6 +227,20 @@ describe('AccessStatusBadgeComponent', () => {
});
});

describe('When the item accessStatus link returns lease', () => {
beforeEach(waitForAsync(() => {
init();
item.accessStatus = createSuccessfulRemoteDataObject$(leaseStatus);
initTestBed();
}));
beforeEach(() => {
initFixtureAndComponentWithItem();
});
it('should show the lease badge', () => {
lookForAccessStatusBadgeForItem('lease');
});
});

describe('init with bitstream', () => {
beforeEach(waitForAsync(() => {
init();
Expand Down Expand Up @@ -276,4 +301,18 @@ describe('AccessStatusBadgeComponent', () => {
lookForAccessStatusBadgeForBitstream();
});
});

describe('When the bitstream have an accessStatus link with a lease date', () => {
beforeEach(waitForAsync(() => {
init();
initTestBed();
}));
beforeEach(() => {
bitstream.accessStatus = createSuccessfulRemoteDataObject$(leaseStatus);
initFixtureAndComponentWithBitstream();
});
it('should show the lease badge', () => {
lookForLeaseBadgeForBitstream();
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ export class AccessStatusBadgeComponent implements OnDestroy, OnInit {

accessStatus$: Observable<string>;
embargoDate$: Observable<string>;
leaseDate$: Observable<string>;

/**
* Whether to show the access status badge or not
Expand Down Expand Up @@ -95,16 +96,19 @@ export class AccessStatusBadgeComponent implements OnDestroy, OnInit {
private handleItem() {
this.showAccessStatus = environment.item.showAccessStatuses;
if (!this.showAccessStatus) {
// Do not show the badge if the feature is inactive.
return;
}
this.accessStatus$ = this.object.accessStatus.pipe(
const accessStatusPayload$ = this.object.accessStatus.pipe(
getFirstSucceededRemoteDataPayload(),
map((accessStatus: AccessStatusObject) => hasValue(accessStatus.status) ? accessStatus.status : 'unknown'),
catchError(() => of({ status: 'unknown', leaseDate: null } as Partial<AccessStatusObject>)),
);
this.accessStatus$ = accessStatusPayload$.pipe(
map((accessStatus) => hasValue(accessStatus.status) ? accessStatus.status : 'unknown'),
map((status: string) => `access-status.${status.toLowerCase()}.listelement.badge`),
catchError(() => of('access-status.unknown.listelement.badge')),
);
// stylesheet based on the access status value
this.leaseDate$ = accessStatusPayload$.pipe(
map((accessStatus) => hasValue(accessStatus.leaseDate) ? accessStatus.leaseDate : null),
);
this.subs.push(
this.accessStatus$.pipe(
map((accessStatusClass: string) => accessStatusClass.replace(/\./g, '-')),
Expand All @@ -120,16 +124,24 @@ export class AccessStatusBadgeComponent implements OnDestroy, OnInit {
private handleBitstream() {
this.showAccessStatus = environment.item.bitstream.showAccessStatuses;
if (!this.showAccessStatus) {
// Do not show the badge if the feature is inactive.
return;
}
this.embargoDate$ = this.object.accessStatus.pipe(
const payload$ = this.object.accessStatus.pipe(
getFirstSucceededRemoteDataPayload(),
map((accessStatus: AccessStatusObject) => hasValue(accessStatus.embargoDate) ? accessStatus.embargoDate : null),
catchError(() => of(null)),
catchError(() => of({ embargoDate: null, leaseDate: null } as Partial<AccessStatusObject>)),
);
this.embargoDate$ = payload$.pipe(
map((s) => hasValue(s.embargoDate) ? s.embargoDate : null),
);
this.accessStatus$ = this.embargoDate$.pipe(
map(date => hasValue(date) ? 'embargo.listelement.badge' : null),
this.leaseDate$ = payload$.pipe(
map((s) => hasValue(s.leaseDate) ? s.leaseDate : null),
);
this.accessStatus$ = payload$.pipe(
map((s) => {
if (hasValue(s.embargoDate)) { return 'embargo.listelement.badge'; }
if (hasValue(s.leaseDate)) { return 'lease.listelement.badge'; }
return null;
}),
);
}
}
8 changes: 8 additions & 0 deletions src/assets/i18n/ar.json5
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,12 @@
"listelement.badge.access-status": "حالة الوصول:",

// "access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",
"access-status.embargo.listelement.badge": "حظر",

"access-status.lease.listelement.badge": "Lease until {{ date }}",

// "access-status.metadata.only.listelement.badge": "Metadata only",
"access-status.metadata.only.listelement.badge": "ميتاداتا فقط",

Expand Down Expand Up @@ -11691,8 +11695,12 @@
"search.filters.access_status.restricted": "وصول مقيد",

// "search.filters.access_status.embargo": "Embargoed access",

"search.filters.access_status.lease": "Temporary access (lease)",
"search.filters.access_status.embargo": "وصول محجوب حتى موعد الرفع",

"search.filters.access_status.lease": "Temporary access (lease)",

// "search.filters.access_status.metadata.only": "Metadata only",
"search.filters.access_status.metadata.only": "بيانات وصفية فقط",

Expand Down
8 changes: 8 additions & 0 deletions src/assets/i18n/bn.json5
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,12 @@
"listelement.badge.access-status": "Access status:",

// "access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",
"access-status.embargo.listelement.badge": "নিষেধাজ্ঞা",

"access-status.lease.listelement.badge": "Lease until {{ date }}",

// "access-status.metadata.only.listelement.badge": "Metadata only",
"access-status.metadata.only.listelement.badge": "মেটাডেটা শুধুমাত্র",

Expand Down Expand Up @@ -11824,8 +11828,12 @@
"search.filters.access_status.restricted": "সীমিত অ্যাক্সেস",

// "search.filters.access_status.embargo": "Embargoed access",

"search.filters.access_status.lease": "Temporary access (lease)",
"search.filters.access_status.embargo": "নিষিদ্ধ অ্যাক্সেস",

"search.filters.access_status.lease": "Temporary access (lease)",

// "search.filters.access_status.metadata.only": "Metadata only",
"search.filters.access_status.metadata.only": "মেটাডেটা শুধুমাত্র",

Expand Down
8 changes: 8 additions & 0 deletions src/assets/i18n/ca.json5
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,12 @@
"listelement.badge.access-status": "Access status:",

// "access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",
"access-status.embargo.listelement.badge": "Embargament",

"access-status.lease.listelement.badge": "Lease until {{ date }}",

// "access-status.metadata.only.listelement.badge": "Metadata only",
"access-status.metadata.only.listelement.badge": "Només Metadades",

Expand Down Expand Up @@ -11904,9 +11908,13 @@
"search.filters.access_status.restricted": "Restricted access",

// "search.filters.access_status.embargo": "Embargoed access",

"search.filters.access_status.lease": "Temporary access (lease)",
// TODO New key - Add a translation
"search.filters.access_status.embargo": "Embargoed access",

"search.filters.access_status.lease": "Temporary access (lease)",

// "search.filters.access_status.metadata.only": "Metadata only",
// TODO New key - Add a translation
"search.filters.access_status.metadata.only": "Metadata only",
Expand Down
8 changes: 8 additions & 0 deletions src/assets/i18n/cs.json5
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,12 @@
"listelement.badge.access-status": "Stav přístupu:",

// "access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",
"access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",

// "access-status.metadata.only.listelement.badge": "Metadata only",
"access-status.metadata.only.listelement.badge": "Pouze metadata",

Expand Down Expand Up @@ -11535,8 +11539,12 @@
"search.filters.access_status.restricted": "Omezený přístup",

// "search.filters.access_status.embargo": "Embargoed access",

"search.filters.access_status.lease": "Temporary access (lease)",
"search.filters.access_status.embargo": "Embargovaný přístup",

"search.filters.access_status.lease": "Temporary access (lease)",

// "search.filters.access_status.metadata.only": "Metadata only",
"search.filters.access_status.metadata.only": "Pouze metadata",

Expand Down
8 changes: 8 additions & 0 deletions src/assets/i18n/de.json5
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,12 @@
"listelement.badge.access-status": "Zugangsstatus:",

// "access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",
"access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",

// "access-status.metadata.only.listelement.badge": "Metadata only",
"access-status.metadata.only.listelement.badge": "Nur Metadaten",

Expand Down Expand Up @@ -11511,8 +11515,12 @@
"search.filters.access_status.restricted": "Beschränkter Zugang",

// "search.filters.access_status.embargo": "Embargoed access",

"search.filters.access_status.lease": "Temporary access (lease)",
"search.filters.access_status.embargo": "Zugang unter Embargo",

"search.filters.access_status.lease": "Temporary access (lease)",

// "search.filters.access_status.metadata.only": "Metadata only",
"search.filters.access_status.metadata.only": "Nur Metadaten",

Expand Down
8 changes: 8 additions & 0 deletions src/assets/i18n/el.json5
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,12 @@
"listelement.badge.access-status": "Access status:",

// "access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",
"access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",

// "access-status.metadata.only.listelement.badge": "Metadata only",
"access-status.metadata.only.listelement.badge": "Μόνο μεταδεδομένα",

Expand Down Expand Up @@ -13197,9 +13201,13 @@
"search.filters.access_status.restricted": "Restricted access",

// "search.filters.access_status.embargo": "Embargoed access",

"search.filters.access_status.lease": "Temporary access (lease)",
// TODO New key - Add a translation
"search.filters.access_status.embargo": "Embargoed access",

"search.filters.access_status.lease": "Temporary access (lease)",

// "search.filters.access_status.metadata.only": "Metadata only",
// TODO New key - Add a translation
"search.filters.access_status.metadata.only": "Metadata only",
Expand Down
4 changes: 4 additions & 0 deletions src/assets/i18n/en.json5
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@

"access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",

"access-status.metadata.only.listelement.badge": "Metadata only",

"access-status.open.access.listelement.badge": "Open Access",
Expand Down Expand Up @@ -7676,6 +7678,8 @@

"search.filters.access_status.embargo": "Embargoed access",

"search.filters.access_status.lease": "Temporary access (lease)",

"search.filters.access_status.metadata.only": "Metadata only",

"search.filters.access_status.unknown": "Unknown",
Expand Down
8 changes: 8 additions & 0 deletions src/assets/i18n/es.json5
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,12 @@
"listelement.badge.access-status": "Access status:",

// "access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",
"access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",

// "access-status.metadata.only.listelement.badge": "Metadata only",
"access-status.metadata.only.listelement.badge": "Solo Metadatos",

Expand Down Expand Up @@ -11793,8 +11797,12 @@
"search.filters.access_status.restricted": "Acceso restringido",

// "search.filters.access_status.embargo": "Embargoed access",

"search.filters.access_status.lease": "Temporary access (lease)",
"search.filters.access_status.embargo": "Acceso embargado",

"search.filters.access_status.lease": "Temporary access (lease)",

// "search.filters.access_status.metadata.only": "Metadata only",
"search.filters.access_status.metadata.only": "Solo metadatos",

Expand Down
8 changes: 8 additions & 0 deletions src/assets/i18n/fa.json5
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,12 @@
"listelement.badge.access-status": "Access status:",

// "access-status.embargo.listelement.badge": "Embargo",

"access-status.lease.listelement.badge": "Lease until {{ date }}",
"access-status.embargo.listelement.badge": "مسدود",

"access-status.lease.listelement.badge": "Lease until {{ date }}",

// "access-status.metadata.only.listelement.badge": "Metadata only",
"access-status.metadata.only.listelement.badge": "فقط ابرداده",

Expand Down Expand Up @@ -14418,9 +14422,13 @@
"search.filters.access_status.restricted": "Restricted access",

// "search.filters.access_status.embargo": "Embargoed access",

"search.filters.access_status.lease": "Temporary access (lease)",
// TODO New key - Add a translation
"search.filters.access_status.embargo": "Embargoed access",

"search.filters.access_status.lease": "Temporary access (lease)",

// "search.filters.access_status.metadata.only": "Metadata only",
// TODO New key - Add a translation
"search.filters.access_status.metadata.only": "Metadata only",
Expand Down
Loading
Loading