Skip to content

Instantly share code, notes, and snippets.

@parmentf
Last active Aug 29, 2015
Embed
What would you like to do?
Fichiers de configuration pour castorjs

Introduction

Le fichier data.json doit se trouver au même niveau qu'un répertoire data si on utilise castor-cli pour démarrer castor.

Sinon, on peut simplement ignorer son nom en utilisant castor-admin.

Général

Le fichier data.json utilise le theme castor-theme-sbadmin, qui crée un tableau de bord à partir de données structurées.

Le contenu title deviendra le titre de la page d'accueil du Castor (concaténé à pages.index.title), donc "Étude INSU - Tableau de bord".

Les descriptions ne sont pas visibles sur le site, mais sont lisibles par les moteurs de recherche.

Si logFormat a une valeur dev, c'est pour rendre les logs visibles, sans s'encombrer d'informations de date, inutiles lors du développement, où le développeur est souvent seul à utiliser le castor (dans un cas normal, on n'a pas besoin de le préciser).

itemsPerPage précise le nombre de résultats à afficher par page (il influe aussi le nombre de résultats par défaut demandé à la base de données, donc s'il est trop grand, il peut ralentir l'application --à la fois du côté serveur et du côté client--).

pages permet de préciser, pour chaque page du thème (à la seule condition de fournir le début de l'URL: index pour /index.html) le titre à utiliser, et la description à fournir en métadonnées de la page HTML.

customFields

Il y a dans cette configuration deux sortes de customFields:

  1. ceux qui sont visibles (marqués comme tels par la clé visible), et donc constitue les colonnes du tableau des documents,
  2. ceux qui ont un separator et qui crée des champs où les valeurs d'un autre champ (indiqué par son path en notation pointée) sont séparées par separator.

dashboard

Sous la clé dashboard se trouve tout ce qui est spécifique au tableau de bord (ce qui est plus haut s'applique à n'importe quel thème de castor).

type

On précise ici les valeurs de quel champ on compte pour savoir combien il y a de types de documents (ici Pt: Publication Type).

path contient, comme pour les customFields, le chemin en notation pointée (dotted notation) vers le champ. En général, cela commence soit par content.json soit par fields (si c'est un champ généré par un customFields).

label modifie le libellé du nombre affiché dans le tableau de bord (après le nombre de documents). S'il est trop long, il risque de déborder de son emplacement.

charts

Ici, on configure les différents graphiques.

Ils sont affichés dans l'ordre du fichier.

Chacun doit avoir un identifiant unique.

La documentation des graphiques se trouve dans castor-theme-sbadmin.

{
"title" : "Étude INSU",
"description" : "Utilisation de SB Admin 2 pour Dashboard",
"collectionName" : "sbadmin",
"logFormat": "dev",
"theme": "castor-theme-sbadmin",
"itemsPerPage" : 2,
"pages" : {
"index" : {
"title" : "Tableau de bord",
"description" : "Tableau de bord de l'étude INSU"
},
"chart" : {
"title" : "Graphique",
"description" : "Détails de l'étude INSU"
},
"documents" : {
"title" : "Documents",
"description" : "Documents de l'étude INSU"
},
"fields" : {
"title" : "Champs",
"description" : "Champs de l'étude INSU"
}
},
"customFields" : {
"year" : {
"path" : "content.json.Py",
"label": "Année",
"visible": true,
"textizer": "ensureRight(' ')"
},
"title" : {
"path" : "content.json.Ti",
"label": "Titre",
"visible": true
},
"authors": {
"path" : "content.json.Af",
"label": "Auteurs",
"visible": true
},
"themes" : {
"path" : "content.json.DiscESI",
"label": "Thèmes",
"visible": true,
"textizer": "ensureRight(' ').toLowerCase()"
},
"Auteurs": {
"path" : "content.json.Af",
"label": "Auteurs séparés",
"separator": ";"
},
"Themes" : {
"path" : "content.json.DiscESI",
"label": "Thèmes séparés",
"separator" : ";"
},
"Type" : {
"path" : "content.json.Pt",
"label": "Types"
},
"Source" : {
"path" : "content.json.SourceCorrigee",
"label": "Source corrigée",
"separator" : ";"
},
"Pays" : {
"path" : "content.json.PaysFRERegroupe",
"label": "Pays",
"separator": ";"
},
"Section" : {
"path" : "content.json.SectionEtude",
"label": "Section INSU",
"separator" : ";"
}
},
"dashboard" : {
"type": {
"path": "content.json.Pt",
"label": "Types de doc."
},
"charts": {
"perSection": {
"field": "fields.Section",
"type": "pie",
"title": "Sections INSU (camembert)",
"legend": {
"position": "right"
},
"size": {
"height": 440,
"columns": 6
}
},
"horizontalThemes": {
"field": "fields.Themes",
"type": "horizontalbars",
"title": "Thèmes (barres)",
"size": {
"height": 440,
"columns": 5,
"offset": 1
}
},
"perYear": {
"field": "content.json.Py",
"type": "histogram",
"title": "Années",
"size": {
"height": 200
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment