From 79f67e82b0e3d48e518239f5b1cf1f3f90382220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillaume=20Perr=C3=A9al?= <guillaume.perreal@irstea.fr> Date: Mon, 26 Nov 2018 16:08:01 +0100 Subject: [PATCH] =?UTF-8?q?D=C3=A9finit=20des=20constants=20pour=20les=20p?= =?UTF-8?q?ropri=C3=A9t=C3=A9s=20int=C3=A9ressantes=20des=20collections.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Resources/views/common.ts.twig | 32 +++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/Resources/views/common.ts.twig b/src/Resources/views/common.ts.twig index 9ba8bef..cdec1d0 100644 --- a/src/Resources/views/common.ts.twig +++ b/src/Resources/views/common.ts.twig @@ -14,6 +14,16 @@ export const IRI_PROPERTY = '@id'; */ export const TYPE_PROPERTY = '@type'; +/** + * Nom de la propriété contenant les resource d'une collection. + */ +export const COLLECTION_MEMBERS = 'hydra:member'; + +/** + * Nom de la propriété contenant le nombre total d'objet d'une collection. + */ +export const COLLECTION_TOTAL_COUNT = 'hydra:totalItems'; + /** * IRI typé. * @@ -41,9 +51,25 @@ export interface Resource { /** * Collection représente une collection de respoucres JSON-LD pour un type T donné. */ -export interface Collection<R> { - 'hydra:member': R[]; - 'hydra:totalItems': number; +export interface Collection<R extends Resource> { + [COLLECTION_MEMBERS]: R[]; + [COLLECTION_TOTAL_COUNT]: number; + [property: string]: any; +} + +/** + * Retourne les membres d'une collection. + */ +export function getCollectionMembers<R extends Resource>(collection: Collection<R>): R[] { + return collection[COLLECTION_MEMBERS]; +} + +/** + * Retourne le nombre total d'items + * @param collection + */ +export function getCollectionTotalCount<R extends Resource>(collection: Collection<R>): number { + return collection[COLLECTION_TOTAL_COUNT]; } /** -- GitLab