Trends
Each election has a list of trends associated with it.
Trends, or story pages, contain an additional view on a specific facet of the election.
The trends for each election must be placed inside a trends
folder in the corresponding election folder inside data
in the af-election-api repo. (Eg: /data/2018-wolesi-jirga/trends
)
data/
├── 2014-presidential/
│ ├── trends/
│ ├── 0001-example.yml
│ └── 0002-example2.yml
└── 2018-wolesi-jirga/
└── trends/
├── 0001-exampleA.yml
└── 0002-exampleB.yml
A trend's file must be have a unique name, preferably starting with a numeric index to ensure order (Ex: 0001-example.yml
), and be written in YAML with the following properties:
Properties
id<String>
- Id of the trendround<String>
- Id of the trend if it is specific to a trend. If present should be the same as defined in the election configtitle<String>
- Title for the card of the trend pagecontent<String>
- Content for the card. Should be a paragraph with the highlights of the trend. Markdown is supportedlongTitle<String>
- Longer title for the bottom part of the overview page. Can be though of as a calloutlongContent<String>
- Body of the overview page. Markdown is supportedexcept<String>
- Small description on the trend to be displayed on the cardmapConfig<Object>
- Configuration for the map on the trend pagestyle<String>
- Mapbox stylelayers<Array[Object]>
- List of layers that are toggable by the userid<String>
- The id for this entry, can be anythinglabel<String>
- The label to show on the layer panellayer<String>
- The layer id from mapboxenabled<Boolean>
- Whether or not this layer is enabled by defaultlegend<Object>
- The legend definition for this layertype<String>
- The legend type. Can berange
orcategorical
. A range legend will be displayed as a gradient bar using the first and last values of thevalues
list. Defaults tocategorical
label<String>
- The legend titlevalues<Array[Object]>
- The color:label pairs for the legendcolor<String>
- The color of the legend itemlabel<String>
- The label of the legend item
Example
id: 0001-example
round: first
title: Example trend
content: |
This is an example trend. **Markdown supported**
longTitle: A libero nam dui proin leo odio porttitor id consequat
longContent: |
This is the content. **Markdown supported**
excerpt: Brief description
mapConfig:
style: mapbox://styles/ndi/cjux5wqyp0hqg1fqhcds5hxky
layers:
-
id: internal-layer-id
label: Example layer
layer: layer-id-mbx
enabled: true
legend:
type: categorical
label: The legend title
values:
-
color: '#b268b3'
label: High
-
color: '#c58bc5'
label: Medium
-
color: '#e6cde6'
label: Low
Api
The CLI tool will create the static api from the trends files. There will be 2 trends endpoints available for each election:
List of trends
/elections/[election-id]/trends.json
List of all the election trends
[
{
"id": "0001-example",
"title": "Example trend",
"excerpt": "Brief description"
},
"..."
]
Individual trends
/elections/[election-id]/trends/[trendId].json
{
"id": "0001-example",
"title": "Example trend",
"content": "This is an example trend. **Markdown supported**",
"longTitle": "A libero nam dui proin leo odio porttitor id consequat",
"longContent": "This is the content. **Markdown supported**",
"excerpt": "Brief description",
"mapConfig": {
"style": "mapbox://styles/ndi/cjux5wqyp0hqg1fqhcds5hxky",
"layers": [
{
"id": "internal-layer-id",
"label": "Example layer",
"layer": "layer-id-mbx",
"enabled": true,
"legend": {
"type": "categorical",
"label": "The legend title",
"values": [
{
"color": "#b268b3",
"label": "High",
},
{
"color": "#c58bc5",
"label": "Medium",
},
{
"color": "#e6cde6",
"label": "Low",
}
]
}
}
]
}
}