mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-13 13:03:04 +00:00
100 lines
1.9 KiB
TypeScript
100 lines
1.9 KiB
TypeScript
import { autoserialize, autoserializeAs, deserialize } from 'cerialize';
|
|
import { hasValue } from '../../shared/empty.util';
|
|
import { HALLink } from './hal-link.model';
|
|
import { HALResource } from './hal-resource.model';
|
|
|
|
/**
|
|
* Represents the state of a paginated response
|
|
*/
|
|
export class PageInfo implements HALResource {
|
|
|
|
/**
|
|
* The number of elements on a page
|
|
*/
|
|
@autoserializeAs(Number, 'size')
|
|
elementsPerPage: number;
|
|
|
|
/**
|
|
* The total number of elements in the entire set
|
|
*/
|
|
@autoserialize
|
|
totalElements: number;
|
|
|
|
/**
|
|
* The total number of pages
|
|
*/
|
|
@autoserialize
|
|
totalPages: number;
|
|
|
|
/**
|
|
* The number of the current page, zero-based
|
|
*/
|
|
@autoserializeAs(Number, 'number')
|
|
currentPage: number;
|
|
|
|
/**
|
|
* The HALLinks for this PageInfo
|
|
*/
|
|
@deserialize
|
|
_links: {
|
|
first: HALLink;
|
|
prev: HALLink;
|
|
next: HALLink;
|
|
last: HALLink;
|
|
self: HALLink;
|
|
};
|
|
|
|
constructor(
|
|
options?: {
|
|
elementsPerPage: number,
|
|
totalElements: number,
|
|
totalPages: number,
|
|
currentPage: number
|
|
}
|
|
) {
|
|
if (hasValue(options)) {
|
|
this.elementsPerPage = options.elementsPerPage;
|
|
this.totalElements = options.totalElements;
|
|
this.totalPages = options.totalPages;
|
|
this.currentPage = options.currentPage;
|
|
}
|
|
}
|
|
|
|
get self() {
|
|
return this._links.self.href;
|
|
}
|
|
|
|
get last(): string {
|
|
if (hasValue(this._links.last)) {
|
|
return this._links.last.href;
|
|
} else {
|
|
return undefined;
|
|
}
|
|
}
|
|
|
|
get next(): string {
|
|
if (hasValue(this._links.next)) {
|
|
return this._links.next.href;
|
|
} else {
|
|
return undefined;
|
|
}
|
|
}
|
|
|
|
get prev(): string {
|
|
if (hasValue(this._links.prev)) {
|
|
return this._links.prev.href;
|
|
} else {
|
|
return undefined;
|
|
}
|
|
}
|
|
|
|
get first(): string {
|
|
if (hasValue(this._links.first)) {
|
|
return this._links.first.href;
|
|
} else {
|
|
return undefined;
|
|
}
|
|
}
|
|
|
|
}
|