jekyll-open-sdg-plugins 1.3.0.pre.beta1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/jekyll-open-sdg-plugins.rb +1 -0
- data/lib/jekyll-open-sdg-plugins/create_indicators.rb +127 -20
- data/lib/jekyll-open-sdg-plugins/create_pages.rb +20 -5
- data/lib/jekyll-open-sdg-plugins/fetch_remote_data.rb +3 -2
- data/lib/jekyll-open-sdg-plugins/metadata_schema_to_config.rb +72 -0
- data/lib/jekyll-open-sdg-plugins/schema-indicator-config.json +181 -152
- data/lib/jekyll-open-sdg-plugins/schema-site-config.json +197 -31
- data/lib/jekyll-open-sdg-plugins/sdg_variables.rb +35 -3
- data/lib/jekyll-open-sdg-plugins/site_configuration.rb +9 -0
- data/lib/jekyll-open-sdg-plugins/translate_date.rb +25 -1
- data/lib/jekyll-open-sdg-plugins/version.rb +1 -1
- data/tests/_config.yml +10 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f535300e051b6be3aae0ab0fc136f5fdda75d2453dd832388f3408ff8d8370d2
|
4
|
+
data.tar.gz: bcd82b1a845f92ed56c49b92f175d778bd9bfc91c1276d32dcc244b29821d685
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: edbdfc568479a3eb1e6c39a26a9e81d97e8edf9d082c32cd62448ecc6b14802b7f007afcb9076fb08671647abb56e91317604f10031cb6a312fef98cc295c4bd
|
7
|
+
data.tar.gz: '02282d6323e8b8224d8d1b7404753d6bd3ae7e075dcbc3183b11a01e113927e60c7a8058e33afb2918d9759df84ab547d0cf80a2a6858f8e2ee9f502b0cd8c1d'
|
@@ -11,6 +11,7 @@ require_relative "jekyll-open-sdg-plugins/create_pages"
|
|
11
11
|
require_relative "jekyll-open-sdg-plugins/sdg_variables"
|
12
12
|
require_relative "jekyll-open-sdg-plugins/search_index"
|
13
13
|
require_relative "jekyll-open-sdg-plugins/validate_indicator_config"
|
14
|
+
require_relative "jekyll-open-sdg-plugins/metadata_schema_to_config"
|
14
15
|
|
15
16
|
module JekyllOpenSdgPlugins
|
16
17
|
end
|
@@ -7,17 +7,52 @@ module JekyllOpenSdgPlugins
|
|
7
7
|
priority :normal
|
8
8
|
|
9
9
|
def generate(site)
|
10
|
+
# Some references to clean up the code below.
|
11
|
+
language_config = site.config['languages']
|
12
|
+
indicator_config = site.config['create_indicators']
|
13
|
+
form_settings_config = site.config['indicator_config_form']
|
14
|
+
form_settings_meta = site.config['indicator_metadata_form']
|
15
|
+
form_settings_data = site.config['indicator_data_form']
|
16
|
+
|
17
|
+
# Special treatment of repository_link settings: prefix them
|
18
|
+
# with the repository_url_data site config if needed.
|
19
|
+
repo_url = site.config['repository_url_data']
|
20
|
+
if repo_url && repo_url != '' && repo_url.start_with?('http')
|
21
|
+
if form_settings_config != nil && form_settings_config && form_settings_config['enabled']
|
22
|
+
if form_settings_config['repository_link'] && form_settings_config['repository_link'] != ''
|
23
|
+
unless form_settings_config['repository_link'].start_with?('http')
|
24
|
+
form_settings_config['repository_link'] = repo_url + form_settings_config['repository_link']
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
if form_settings_meta != nil && form_settings_meta && form_settings_meta['enabled']
|
29
|
+
if form_settings_meta['repository_link'] && form_settings_meta['repository_link'] != ''
|
30
|
+
unless form_settings_meta['repository_link'].start_with?('http')
|
31
|
+
form_settings_meta['repository_link'] = repo_url + form_settings_meta['repository_link']
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
if form_settings_data != nil && form_settings_data && form_settings_data['enabled']
|
36
|
+
if form_settings_data['repository_link'] && form_settings_data['repository_link'] != ''
|
37
|
+
unless form_settings_data['repository_link'].start_with?('http')
|
38
|
+
form_settings_data['repository_link'] = repo_url + form_settings_data['repository_link']
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
translations = site.data['translations']
|
10
45
|
# If site.create_indicators is set, create indicators per the metadata.
|
11
|
-
if
|
46
|
+
if (language_config and indicator_config and indicator_config.key?('layout') and indicator_config['layout'] != '')
|
12
47
|
# Decide what layout to use for the indicator pages.
|
13
|
-
layout =
|
48
|
+
layout = indicator_config['layout']
|
14
49
|
# See if we need to "map" any language codes.
|
15
50
|
languages_public = Hash.new
|
16
51
|
if site.config['languages_public']
|
17
52
|
languages_public = opensdg_languages_public(site)
|
18
53
|
end
|
19
54
|
# Loop through the languages.
|
20
|
-
|
55
|
+
language_config.each_with_index do |language, index|
|
21
56
|
# Get the "public language" (for URLs) which may be different.
|
22
57
|
language_public = language
|
23
58
|
if languages_public[language]
|
@@ -35,7 +70,7 @@ module JekyllOpenSdgPlugins
|
|
35
70
|
# Loop through the indicators (using metadata as a list).
|
36
71
|
metadata.each do |inid, meta|
|
37
72
|
permalink = inid
|
38
|
-
if meta.has_key?('permalink') and meta['permalink'] != ''
|
73
|
+
if (meta.has_key?('permalink') and meta['permalink'] != '')
|
39
74
|
permalink = meta['permalink']
|
40
75
|
end
|
41
76
|
# Add the language subfolder for all except the default (first) language.
|
@@ -45,24 +80,53 @@ module JekyllOpenSdgPlugins
|
|
45
80
|
site.collections['indicators'].docs << IndicatorPage.new(site, site.source, dir, inid, language, layout)
|
46
81
|
end
|
47
82
|
end
|
48
|
-
# Create the indicator configuration pages.
|
49
|
-
|
83
|
+
# Create the indicator settings configuration/metadata/data pages.
|
84
|
+
do_indicator_config_forms = form_settings_config && form_settings_config['enabled']
|
85
|
+
do_indicator_meta_forms = form_settings_meta && form_settings_meta['enabled']
|
86
|
+
do_indicator_data_forms = form_settings_data && form_settings_data['enabled']
|
87
|
+
use_translated_metadata = form_settings_meta && form_settings_meta['translated']
|
88
|
+
if do_indicator_config_forms || do_indicator_meta_forms || do_indicator_data_forms
|
89
|
+
|
50
90
|
metadata = {}
|
51
|
-
layout = site.config['create_config_forms']['layout']
|
52
91
|
if opensdg_translated_builds(site)
|
53
92
|
if site.data.has_key?('untranslated')
|
54
93
|
metadata = site.data['untranslated']['meta']
|
55
94
|
else
|
56
|
-
default_language =
|
95
|
+
default_language = language_config[0]
|
57
96
|
metadata = site.data[default_language]['meta']
|
58
97
|
end
|
59
98
|
else
|
60
99
|
metadata = site.data['meta']
|
61
100
|
end
|
101
|
+
|
102
|
+
metadata_by_language = {}
|
103
|
+
language_config.each do |language|
|
104
|
+
if opensdg_translated_builds(site)
|
105
|
+
metadata_by_language[language] = site.data[language]['meta']
|
106
|
+
else
|
107
|
+
metadata_by_language[language] = site.data['meta']
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
# Because we have config forms for indicator config or meta/data, we
|
112
|
+
# take over the meta/data_edit_url and configuration_edit_url settings
|
113
|
+
# here with simple relative links.
|
114
|
+
if do_indicator_config_forms
|
115
|
+
site.config['configuration_edit_url'] = 'config'
|
116
|
+
end
|
117
|
+
|
118
|
+
if do_indicator_meta_forms
|
119
|
+
site.config['metadata_edit_url'] = 'metadata'
|
120
|
+
end
|
121
|
+
|
122
|
+
if do_indicator_data_forms
|
123
|
+
site.config['data_edit_url'] = 'data'
|
124
|
+
end
|
125
|
+
|
62
126
|
# Loop through the indicators (using metadata as a list).
|
63
127
|
if !metadata.empty?
|
64
128
|
# Loop through the languages.
|
65
|
-
|
129
|
+
language_config.each_with_index do |language, index|
|
66
130
|
# Get the "public language" (for URLs) which may be different.
|
67
131
|
language_public = language
|
68
132
|
if languages_public[language]
|
@@ -70,14 +134,37 @@ module JekyllOpenSdgPlugins
|
|
70
134
|
end
|
71
135
|
metadata.each do |inid, meta|
|
72
136
|
permalink = inid
|
73
|
-
if meta.has_key?('permalink') and meta['permalink'] != ''
|
137
|
+
if (meta.has_key?('permalink') and meta['permalink'] != '')
|
74
138
|
permalink = meta['permalink']
|
75
139
|
end
|
76
|
-
|
140
|
+
dir_base = File.join(permalink)
|
77
141
|
if index != 0
|
78
|
-
|
142
|
+
dir_base = File.join(language_public, permalink)
|
143
|
+
end
|
144
|
+
|
145
|
+
if do_indicator_config_forms
|
146
|
+
dir = File.join(dir_base, 'config')
|
147
|
+
title = opensdg_translate_key('indicator.edit_configuration', translations, language)
|
148
|
+
config_type = 'indicator'
|
149
|
+
site.collections['pages'].docs << IndicatorConfigPage.new(site, site.source, dir, inid, language, meta, title, config_type, form_settings_config)
|
150
|
+
end
|
151
|
+
|
152
|
+
if do_indicator_meta_forms
|
153
|
+
metadata_to_use = meta
|
154
|
+
if use_translated_metadata
|
155
|
+
metadata_to_use = metadata_by_language[language][inid]
|
156
|
+
end
|
157
|
+
dir = File.join(dir_base, 'metadata')
|
158
|
+
title = opensdg_translate_key('indicator.edit_metadata', translations, language)
|
159
|
+
config_type = 'metadata'
|
160
|
+
site.collections['pages'].docs << IndicatorConfigPage.new(site, site.source, dir, inid, language, metadata_to_use, title, config_type, form_settings_meta)
|
161
|
+
end
|
162
|
+
|
163
|
+
if do_indicator_data_forms
|
164
|
+
dir = File.join(dir_base, 'data')
|
165
|
+
title = opensdg_translate_key('indicator.edit_data', translations, language)
|
166
|
+
site.collections['pages'].docs << IndicatorDataPage.new(site, site.source, dir, inid, language, title, form_settings_data)
|
79
167
|
end
|
80
|
-
site.collections['pages'].docs << IndicatorConfigPage.new(site, site.source, dir, inid, language, meta, layout)
|
81
168
|
end
|
82
169
|
end
|
83
170
|
end
|
@@ -86,7 +173,7 @@ module JekyllOpenSdgPlugins
|
|
86
173
|
end
|
87
174
|
end
|
88
175
|
|
89
|
-
# A Page subclass used in the `CreateIndicators` class.
|
176
|
+
# A Page subclass used in the `CreateIndicators` class for the indicators.
|
90
177
|
class IndicatorPage < Jekyll::Page
|
91
178
|
def initialize(site, base, dir, inid, language, layout)
|
92
179
|
@site = site
|
@@ -104,9 +191,9 @@ module JekyllOpenSdgPlugins
|
|
104
191
|
end
|
105
192
|
end
|
106
193
|
|
107
|
-
# A Page subclass used in the `CreateIndicators` class.
|
194
|
+
# A Page subclass used in the `CreateIndicators` class for the indicator config forms.
|
108
195
|
class IndicatorConfigPage < Jekyll::Page
|
109
|
-
def initialize(site, base, dir, inid, language, meta,
|
196
|
+
def initialize(site, base, dir, inid, language, meta, title, config_type, form_settings)
|
110
197
|
@site = site
|
111
198
|
@base = base
|
112
199
|
@dir = dir
|
@@ -115,12 +202,32 @@ module JekyllOpenSdgPlugins
|
|
115
202
|
self.process(@name)
|
116
203
|
self.data = {}
|
117
204
|
self.data['language'] = language
|
118
|
-
self.data['indicator_number'] = inid
|
119
|
-
self.data['config_type'] =
|
120
|
-
self.data['layout'] =
|
205
|
+
self.data['indicator_number'] = inid
|
206
|
+
self.data['config_type'] = config_type
|
207
|
+
self.data['layout'] = 'config-builder'
|
121
208
|
self.data['meta'] = meta
|
122
|
-
self.data['title'] =
|
209
|
+
self.data['title'] = title + ': ' + inid.gsub('-', '.')
|
123
210
|
self.data['config_filename'] = inid + '.yml'
|
211
|
+
self.data['form_settings'] = form_settings
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
# A Page subclass used in the `CreateIndicators` class for the indicator data forms.
|
216
|
+
class IndicatorDataPage < Jekyll::Page
|
217
|
+
def initialize(site, base, dir, inid, language, title, form_settings)
|
218
|
+
@site = site
|
219
|
+
@base = base
|
220
|
+
@dir = dir
|
221
|
+
@name = 'index.html'
|
222
|
+
|
223
|
+
self.process(@name)
|
224
|
+
self.data = {}
|
225
|
+
self.data['language'] = language
|
226
|
+
self.data['indicator_number'] = inid
|
227
|
+
self.data['layout'] = 'data-editor'
|
228
|
+
self.data['title'] = title + ': ' + inid.gsub('-', '.')
|
229
|
+
self.data['config_filename'] = 'indicator_' + inid
|
230
|
+
self.data['form_settings'] = form_settings
|
124
231
|
end
|
125
232
|
end
|
126
233
|
end
|
@@ -30,7 +30,7 @@ module JekyllOpenSdgPlugins
|
|
30
30
|
# To use the default 4 pages, simply put:
|
31
31
|
#
|
32
32
|
# create_pages: true
|
33
|
-
if site.config['languages'] and site.config['create_pages']
|
33
|
+
if (site.config['languages'] and site.config['create_pages'])
|
34
34
|
|
35
35
|
default_pages = [
|
36
36
|
{
|
@@ -54,7 +54,7 @@ module JekyllOpenSdgPlugins
|
|
54
54
|
}
|
55
55
|
]
|
56
56
|
pages = default_pages
|
57
|
-
if site.config['create_pages'].is_a?(Hash) and site.config['create_pages'].key?('pages')
|
57
|
+
if (site.config['create_pages'].is_a?(Hash) and site.config['create_pages'].key?('pages'))
|
58
58
|
# Backwards compatability to support the deprecated "pages" key.
|
59
59
|
pages = site.config['create_pages']['pages']
|
60
60
|
elsif site.config['create_pages'].is_a?(Array)
|
@@ -65,18 +65,33 @@ module JekyllOpenSdgPlugins
|
|
65
65
|
pages = pages.clone
|
66
66
|
|
67
67
|
# Hardcode the site configuration page if it's not already there.
|
68
|
+
form_settings = site.config['site_config_form']
|
68
69
|
config_page = pages.find { |page| page['layout'] == 'config-builder' }
|
69
70
|
if config_page == nil
|
70
|
-
if
|
71
|
+
if form_settings && form_settings['enabled']
|
71
72
|
pages.push({
|
72
73
|
'folder' => '/config',
|
73
|
-
'layout' =>
|
74
|
+
'layout' => 'config-builder',
|
74
75
|
'title' => 'Open SDG site configuration',
|
75
76
|
'config_type' => 'site',
|
76
|
-
'config_filename' => 'site_config.yml'
|
77
|
+
'config_filename' => 'site_config.yml',
|
77
78
|
})
|
78
79
|
end
|
79
80
|
end
|
81
|
+
# Make sure the form settings are set.
|
82
|
+
config_page = pages.find { |page| page['layout'] == 'config-builder' }
|
83
|
+
if config_page != nil && form_settings && form_settings['enabled']
|
84
|
+
# Special treatment of repository_link.
|
85
|
+
if form_settings['repository_link'] && form_settings['repository_link'] != ''
|
86
|
+
unless form_settings['repository_link'].start_with?('http')
|
87
|
+
repo_url = site.config['repository_url_site']
|
88
|
+
if repo_url && repo_url != '' && repo_url.start_with?('http')
|
89
|
+
form_settings['repository_link'] = repo_url + form_settings['repository_link']
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
config_page['form_settings'] = form_settings
|
94
|
+
end
|
80
95
|
|
81
96
|
# See if we need to "map" any language codes.
|
82
97
|
languages_public = Hash.new
|
@@ -25,7 +25,8 @@ module JekyllOpenSdgPlugins
|
|
25
25
|
'disaggregation' => 'stats/disaggregation.json',
|
26
26
|
'translations' => 'translations/translations.json',
|
27
27
|
'zip' => 'zip/all_indicators.json',
|
28
|
-
'indicator_downloads' => 'downloads/indicator-downloads.json'
|
28
|
+
'indicator_downloads' => 'downloads/indicator-downloads.json',
|
29
|
+
'data_packages' => 'data-packages/all.json',
|
29
30
|
}
|
30
31
|
end
|
31
32
|
|
@@ -43,7 +44,7 @@ module JekyllOpenSdgPlugins
|
|
43
44
|
rescue StandardError => e
|
44
45
|
# For backwards compatibility, forego the exception in some cases.
|
45
46
|
abort_build = true
|
46
|
-
if ['translations', 'indicator_downloads', 'disaggregation'].include? key
|
47
|
+
if ['translations', 'indicator_downloads', 'disaggregation', 'data_packages'].include? key
|
47
48
|
abort_build = false
|
48
49
|
elsif endpoint.include? '/untranslated/'
|
49
50
|
abort_build = false
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require "jekyll"
|
2
|
+
require_relative "helpers"
|
3
|
+
|
4
|
+
module JekyllOpenSdgPlugins
|
5
|
+
class MetadataSchemaToConfig < Jekyll::Generator
|
6
|
+
safe true
|
7
|
+
priority :lowest
|
8
|
+
|
9
|
+
def generate(site)
|
10
|
+
|
11
|
+
# Convert the metadata schema from the internal format into JSONSchema so
|
12
|
+
# it can be used to create config forms.
|
13
|
+
|
14
|
+
language_config = site.config['languages']
|
15
|
+
form_settings = site.config['indicator_metadata_form']
|
16
|
+
t = site.data['translations']
|
17
|
+
lang = language_config[0]
|
18
|
+
|
19
|
+
if form_settings && form_settings['enabled']
|
20
|
+
scopes = ['national', 'global']
|
21
|
+
if form_settings && form_settings.has_key?('scopes')
|
22
|
+
if form_settings['scopes'].kind_of?(Array) && form_settings['scopes'].length() > 0
|
23
|
+
scopes = form_settings['scopes']
|
24
|
+
end
|
25
|
+
end
|
26
|
+
exclude_fields = []
|
27
|
+
if form_settings && form_settings.has_key?('exclude_fields')
|
28
|
+
if form_settings['exclude_fields'].kind_of?(Array) && form_settings['exclude_fields'].length() > 0
|
29
|
+
exclude_fields = form_settings['exclude_fields']
|
30
|
+
end
|
31
|
+
end
|
32
|
+
if form_settings && form_settings.has_key?('language') && form_settings['language'] != ''
|
33
|
+
lang = form_settings['language']
|
34
|
+
end
|
35
|
+
|
36
|
+
schema = {
|
37
|
+
"type" => "object",
|
38
|
+
"title" => opensdg_translate_key('indicator.edit_metadata', t, lang),
|
39
|
+
"properties" => {},
|
40
|
+
}
|
41
|
+
|
42
|
+
site.data['schema'].each do |field|
|
43
|
+
field_name = field['name']
|
44
|
+
field_scope = field['field']['scope']
|
45
|
+
next unless scopes.include?(field_scope)
|
46
|
+
next if exclude_fields.include?(field_name)
|
47
|
+
|
48
|
+
to_translate = field_name
|
49
|
+
if field['field'].has_key?('translation_key')
|
50
|
+
to_translate = field['field']['translation_key']
|
51
|
+
elsif t[lang].has_key?('metadata_fields') && t[lang]['metadata_fields'].has_key?(field_name)
|
52
|
+
to_translate = 'metadata_fields.' + field_name
|
53
|
+
elsif field['field'].has_key?('label')
|
54
|
+
to_translate = field['field']['label']
|
55
|
+
end
|
56
|
+
field_label = opensdg_translate_key(to_translate, t, lang)
|
57
|
+
|
58
|
+
schema['properties'][field_name] = {
|
59
|
+
"type" => "string",
|
60
|
+
"format" => "markdown",
|
61
|
+
"title" => field_label,
|
62
|
+
"description" => 'Scope: ' + field_scope + ', Field: ' + field_name,
|
63
|
+
}
|
64
|
+
schema['additionalProperties'] = true
|
65
|
+
end
|
66
|
+
|
67
|
+
# Regardless place the schema in site data so it can be used in Jekyll templates.
|
68
|
+
site.data['schema-indicator-metadata'] = schema
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -218,142 +218,131 @@
|
|
218
218
|
"items": {
|
219
219
|
"type": "object",
|
220
220
|
"title": "Graph annotation",
|
221
|
-
"
|
222
|
-
"
|
223
|
-
|
224
|
-
"title": "Preset",
|
225
|
-
"enum": ["target_line"],
|
226
|
-
"description": "A preset bundle of configurations."
|
227
|
-
},
|
228
|
-
"value": {
|
229
|
-
"type": "number",
|
230
|
-
"minimum": 0,
|
231
|
-
"title": "Value",
|
232
|
-
"description": "The value at which to draw the line. For horizontal lines, this number corresponds to your actual data. For vertical lines, this number should be between 0 (the left side of the chart) and the number of years minus 1 (the right side of the chart)."
|
233
|
-
},
|
234
|
-
"endValue": {
|
235
|
-
"type": "number",
|
236
|
-
"title": "End value",
|
237
|
-
"description": "Optionally add a different ending value for the line."
|
238
|
-
},
|
239
|
-
"description": {
|
240
|
-
"type": "string",
|
241
|
-
"title": "Description",
|
242
|
-
"description": "A description of the annotation to be read by screenreaders."
|
243
|
-
},
|
244
|
-
"unit": {
|
245
|
-
"type": "string",
|
246
|
-
"title": "Unit",
|
247
|
-
"description": "The unit of measurement the annotation displays on."
|
248
|
-
},
|
249
|
-
"series": {
|
250
|
-
"type": "string",
|
251
|
-
"title": "Series",
|
252
|
-
"description": "The series the annotation displays on."
|
253
|
-
},
|
254
|
-
"mode": {
|
255
|
-
"type": "string",
|
256
|
-
"title": "Mode",
|
257
|
-
"description": "Whether the line will be vertical or horizontal.",
|
258
|
-
"enum": ["horizontal", "vertical"]
|
259
|
-
},
|
260
|
-
"borderColor": {
|
261
|
-
"type": "string",
|
262
|
-
"format": "color",
|
263
|
-
"title": "Line color",
|
264
|
-
"description": "The color of the line.",
|
265
|
-
"links": [
|
266
|
-
{
|
267
|
-
"rel": "More information on the border color setting",
|
268
|
-
"href": "https://github.com/chartjs/chartjs-plugin-annotation/blob/master/README.md"
|
269
|
-
}
|
270
|
-
]
|
271
|
-
},
|
272
|
-
"borderDash": {
|
273
|
-
"type": "string",
|
274
|
-
"title": "Line dash type",
|
275
|
-
"description": "The type of line dash.",
|
276
|
-
"links": [
|
277
|
-
{
|
278
|
-
"rel": "More information on the line dash setting",
|
279
|
-
"href": "https://github.com/chartjs/chartjs-plugin-annotation/blob/master/README.md"
|
280
|
-
}
|
281
|
-
]
|
282
|
-
},
|
283
|
-
"label": {
|
284
|
-
"type": "object",
|
285
|
-
"title": "Label",
|
286
|
-
"description": "A text label for the annotation.",
|
221
|
+
"allOf": [
|
222
|
+
{ "$ref": "#/definitions/series_unit_constraint" },
|
223
|
+
{
|
287
224
|
"properties": {
|
288
|
-
"
|
289
|
-
"type": "
|
290
|
-
"
|
291
|
-
"
|
292
|
-
"
|
293
|
-
"top",
|
294
|
-
"bottom",
|
295
|
-
"left",
|
296
|
-
"right",
|
297
|
-
"center"
|
298
|
-
]
|
225
|
+
"value": {
|
226
|
+
"type": "number",
|
227
|
+
"minimum": 0,
|
228
|
+
"title": "Value",
|
229
|
+
"description": "The value at which to draw the line. For horizontal lines, this number corresponds to your actual data. For vertical lines, this number should be between 0 (the left side of the chart) and the number of years minus 1 (the right side of the chart)."
|
299
230
|
},
|
300
|
-
"
|
301
|
-
"type": "
|
302
|
-
"
|
303
|
-
"
|
304
|
-
"description": "Text of the line label."
|
231
|
+
"endValue": {
|
232
|
+
"type": "number",
|
233
|
+
"title": "End value",
|
234
|
+
"description": "Optionally add a different ending value for the line."
|
305
235
|
},
|
306
|
-
"
|
236
|
+
"description": {
|
307
237
|
"type": "string",
|
308
|
-
"
|
309
|
-
"
|
310
|
-
"description": "Color for the label text."
|
238
|
+
"title": "Description",
|
239
|
+
"description": "A description of the annotation to be read by screenreaders."
|
311
240
|
},
|
312
|
-
"
|
241
|
+
"mode": {
|
313
242
|
"type": "string",
|
314
|
-
"
|
315
|
-
"
|
316
|
-
"
|
317
|
-
|
318
|
-
}
|
319
|
-
}
|
320
|
-
},
|
321
|
-
"highContrast": {
|
322
|
-
"type": "object",
|
323
|
-
"title": "High contrast options",
|
324
|
-
"description": "High-contrast overrides of certain color.",
|
325
|
-
"properties": {
|
243
|
+
"title": "Mode",
|
244
|
+
"description": "Whether the line will be vertical or horizontal.",
|
245
|
+
"enum": ["horizontal", "vertical"]
|
246
|
+
},
|
326
247
|
"borderColor": {
|
327
248
|
"type": "string",
|
328
249
|
"format": "color",
|
329
|
-
"
|
330
|
-
"
|
331
|
-
"
|
250
|
+
"title": "Line color",
|
251
|
+
"description": "The color of the line.",
|
252
|
+
"links": [
|
253
|
+
{
|
254
|
+
"rel": "More information on the border color setting",
|
255
|
+
"href": "https://github.com/chartjs/chartjs-plugin-annotation/blob/master/README.md"
|
256
|
+
}
|
257
|
+
]
|
258
|
+
},
|
259
|
+
"borderDash": {
|
260
|
+
"type": "string",
|
261
|
+
"title": "Line dash type",
|
262
|
+
"description": "The type of line dash.",
|
263
|
+
"links": [
|
264
|
+
{
|
265
|
+
"rel": "More information on the line dash setting",
|
266
|
+
"href": "https://github.com/chartjs/chartjs-plugin-annotation/blob/master/README.md"
|
267
|
+
}
|
268
|
+
]
|
332
269
|
},
|
333
270
|
"label": {
|
334
271
|
"type": "object",
|
335
|
-
"title": "
|
336
|
-
"description": "
|
272
|
+
"title": "Label",
|
273
|
+
"description": "A text label for the annotation.",
|
337
274
|
"properties": {
|
275
|
+
"position": {
|
276
|
+
"type": "string",
|
277
|
+
"title": "Position",
|
278
|
+
"description": "Placement of the label along the line.",
|
279
|
+
"enum": [
|
280
|
+
"top",
|
281
|
+
"bottom",
|
282
|
+
"left",
|
283
|
+
"right",
|
284
|
+
"center"
|
285
|
+
]
|
286
|
+
},
|
287
|
+
"content": {
|
288
|
+
"type": "string",
|
289
|
+
"minLength": 1,
|
290
|
+
"title": "Content",
|
291
|
+
"description": "Text of the line label."
|
292
|
+
},
|
338
293
|
"fontColor": {
|
339
294
|
"type": "string",
|
340
295
|
"format": "color",
|
341
|
-
"
|
342
|
-
"
|
343
|
-
"description": "Color for the label text in high-contrast mode."
|
296
|
+
"title": "Label color",
|
297
|
+
"description": "Color for the label text."
|
344
298
|
},
|
345
299
|
"backgroundColor": {
|
346
300
|
"type": "string",
|
347
301
|
"format": "color",
|
348
|
-
"default": "#
|
349
|
-
"title": "
|
350
|
-
"description": "Background color for the label text
|
302
|
+
"default": "#FFFFFFF",
|
303
|
+
"title": "Background color",
|
304
|
+
"description": "Background color for the label text."
|
305
|
+
}
|
306
|
+
}
|
307
|
+
},
|
308
|
+
"highContrast": {
|
309
|
+
"type": "object",
|
310
|
+
"title": "High contrast options",
|
311
|
+
"description": "High-contrast overrides of certain color.",
|
312
|
+
"properties": {
|
313
|
+
"borderColor": {
|
314
|
+
"type": "string",
|
315
|
+
"format": "color",
|
316
|
+
"default": "#FFFFFF",
|
317
|
+
"title": "High-contrast line color",
|
318
|
+
"description": "The color of the line in high-contrast mode."
|
319
|
+
},
|
320
|
+
"label": {
|
321
|
+
"type": "object",
|
322
|
+
"title": "High contrast label",
|
323
|
+
"description": "High-contrast version of the label.",
|
324
|
+
"properties": {
|
325
|
+
"fontColor": {
|
326
|
+
"type": "string",
|
327
|
+
"format": "color",
|
328
|
+
"default": "#FFFFFF",
|
329
|
+
"title": "High-contrast label color",
|
330
|
+
"description": "Color for the label text in high-contrast mode."
|
331
|
+
},
|
332
|
+
"backgroundColor": {
|
333
|
+
"type": "string",
|
334
|
+
"format": "color",
|
335
|
+
"default": "#000000",
|
336
|
+
"title": "High-contrast background color",
|
337
|
+
"description": "Background color for the label text in high-contrast mode."
|
338
|
+
}
|
339
|
+
}
|
351
340
|
}
|
352
341
|
}
|
353
342
|
}
|
354
343
|
}
|
355
344
|
}
|
356
|
-
|
345
|
+
]
|
357
346
|
},
|
358
347
|
"links": [
|
359
348
|
{
|
@@ -370,30 +359,25 @@
|
|
370
359
|
"items": {
|
371
360
|
"type": "object",
|
372
361
|
"title": "Graph limit",
|
373
|
-
"
|
374
|
-
"
|
375
|
-
|
376
|
-
"
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
},
|
391
|
-
"series": {
|
392
|
-
"type": "string",
|
393
|
-
"title": "Series",
|
394
|
-
"description": "The series the limits apply to."
|
362
|
+
"allOf": [
|
363
|
+
{ "$ref": "#/definitions/series_unit_constraint" },
|
364
|
+
{
|
365
|
+
"properties": {
|
366
|
+
"minimum": {
|
367
|
+
"type": "number",
|
368
|
+
"minimum": 0,
|
369
|
+
"title": "Minimum",
|
370
|
+
"description": "Minimum value for the y axis."
|
371
|
+
},
|
372
|
+
"maximum": {
|
373
|
+
"type": "number",
|
374
|
+
"minimum": 0,
|
375
|
+
"title": "Maximum",
|
376
|
+
"description": "Maximum value for the y axis."
|
377
|
+
}
|
378
|
+
}
|
395
379
|
}
|
396
|
-
|
380
|
+
]
|
397
381
|
},
|
398
382
|
"links": [
|
399
383
|
{
|
@@ -432,24 +416,19 @@
|
|
432
416
|
"items": {
|
433
417
|
"type": "object",
|
434
418
|
"title": "Graph title",
|
435
|
-
"
|
436
|
-
"
|
437
|
-
|
438
|
-
"
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
},
|
447
|
-
"series": {
|
448
|
-
"type": "string",
|
449
|
-
"title": "Series",
|
450
|
-
"description": "The series the title applies to."
|
419
|
+
"allOf": [
|
420
|
+
{ "$ref": "#/definitions/series_unit_constraint" },
|
421
|
+
{
|
422
|
+
"properties": {
|
423
|
+
"title": {
|
424
|
+
"type": "string",
|
425
|
+
"minLength": 1,
|
426
|
+
"title": "Title",
|
427
|
+
"description": "The graph title."
|
428
|
+
}
|
429
|
+
}
|
451
430
|
}
|
452
|
-
|
431
|
+
]
|
453
432
|
}
|
454
433
|
},
|
455
434
|
"graph_type": {
|
@@ -464,6 +443,17 @@
|
|
464
443
|
}
|
465
444
|
]
|
466
445
|
},
|
446
|
+
"indicator_available": {
|
447
|
+
"type": "string",
|
448
|
+
"title": "Indicator available",
|
449
|
+
"description": "An optional sub-title for the indicator, which displays below the indicator name. Intended for cases where the available data is slightly different than the indicator name.",
|
450
|
+
"links": [
|
451
|
+
{
|
452
|
+
"rel": "More information on the indicator available setting",
|
453
|
+
"href": "https://open-sdg.readthedocs.io/en/latest/metadata-format/#recommended-special-fields"
|
454
|
+
}
|
455
|
+
]
|
456
|
+
},
|
467
457
|
"indicator_name": {
|
468
458
|
"type": "string",
|
469
459
|
"title": "Indicator name",
|
@@ -514,6 +504,28 @@
|
|
514
504
|
}
|
515
505
|
]
|
516
506
|
},
|
507
|
+
"precision": {
|
508
|
+
"options": {"collapsed": true},
|
509
|
+
"type": "array",
|
510
|
+
"title": "Precision rules",
|
511
|
+
"description": "Control the number of decimal places for data in this indicator.",
|
512
|
+
"items": {
|
513
|
+
"type": "object",
|
514
|
+
"title": "Precision rule",
|
515
|
+
"allOf": [
|
516
|
+
{ "$ref": "#/definitions/series_unit_constraint" },
|
517
|
+
{
|
518
|
+
"properties": {
|
519
|
+
"decimals": {
|
520
|
+
"type": "number",
|
521
|
+
"title": "Decimals",
|
522
|
+
"description": "The number of decimal places"
|
523
|
+
}
|
524
|
+
}
|
525
|
+
}
|
526
|
+
]
|
527
|
+
}
|
528
|
+
},
|
517
529
|
"reporting_status": {
|
518
530
|
"type": "string",
|
519
531
|
"title": "Reporting status",
|
@@ -566,5 +578,22 @@
|
|
566
578
|
]
|
567
579
|
}
|
568
580
|
},
|
569
|
-
"additionalProperties": true
|
581
|
+
"additionalProperties": true,
|
582
|
+
"definitions": {
|
583
|
+
"series_unit_constraint": {
|
584
|
+
"type": "object",
|
585
|
+
"properties": {
|
586
|
+
"series": {
|
587
|
+
"type": "string",
|
588
|
+
"title": "Series",
|
589
|
+
"description": "Limit to this particular series"
|
590
|
+
},
|
591
|
+
"unit": {
|
592
|
+
"type": "string",
|
593
|
+
"title": "Unit",
|
594
|
+
"description": "Limit to this particular unit"
|
595
|
+
}
|
596
|
+
}
|
597
|
+
}
|
598
|
+
}
|
570
599
|
}
|
@@ -87,6 +87,25 @@
|
|
87
87
|
}
|
88
88
|
]
|
89
89
|
},
|
90
|
+
"contrast_type": {
|
91
|
+
"type": "string",
|
92
|
+
"title": "Contrast type",
|
93
|
+
"description": "The type of high-contrast toggle to use.",
|
94
|
+
"enum": ["default", "single", "long"],
|
95
|
+
"options": {
|
96
|
+
"enum_titles": [
|
97
|
+
"Default - two 'A' buttons side-by-side",
|
98
|
+
"Single - one 'A' button which toggles on/off",
|
99
|
+
"Long - text toggling between 'High contrast' and 'Default contrast'"
|
100
|
+
]
|
101
|
+
},
|
102
|
+
"links": [
|
103
|
+
{
|
104
|
+
"rel": "More information on the contrast type setting",
|
105
|
+
"href": "https://open-sdg.readthedocs.io/en/latest/configuration/#contrast_type"
|
106
|
+
}
|
107
|
+
]
|
108
|
+
},
|
90
109
|
"country": {
|
91
110
|
"options": {"collapsed": true},
|
92
111
|
"type": "object",
|
@@ -113,35 +132,6 @@
|
|
113
132
|
}
|
114
133
|
]
|
115
134
|
},
|
116
|
-
"create_config_forms": {
|
117
|
-
"options": {"collapsed": true},
|
118
|
-
"type": "object",
|
119
|
-
"title": "Create configuration forms",
|
120
|
-
"description": "This setting can be used to automatically create the configuration form pages.",
|
121
|
-
"properties": {
|
122
|
-
"layout": {
|
123
|
-
"type": "string",
|
124
|
-
"title": "Layout",
|
125
|
-
"enum": [
|
126
|
-
"",
|
127
|
-
"config-builder"
|
128
|
-
],
|
129
|
-
"options": {
|
130
|
-
"enum_titles": [
|
131
|
-
"Do not automatically create config forms",
|
132
|
-
"config-builder"
|
133
|
-
]
|
134
|
-
},
|
135
|
-
"description": "The layout to use for the configuration form pages."
|
136
|
-
}
|
137
|
-
},
|
138
|
-
"links": [
|
139
|
-
{
|
140
|
-
"rel": "More information on the create config forms setting",
|
141
|
-
"href": "https://open-sdg.readthedocs.io/en/latest/configuration/#create_config_forms"
|
142
|
-
}
|
143
|
-
]
|
144
|
-
},
|
145
135
|
"create_goals": {
|
146
136
|
"options": {"collapsed": true},
|
147
137
|
"type": "object",
|
@@ -611,6 +601,34 @@
|
|
611
601
|
}
|
612
602
|
]
|
613
603
|
},
|
604
|
+
"graph_color_headline": {
|
605
|
+
"type": "string",
|
606
|
+
"format": "color",
|
607
|
+
"title": "Graph color for headline",
|
608
|
+
"default": "#004466",
|
609
|
+
"description": "This setting can be used to customize the color used in the chart 'headlines'.",
|
610
|
+
"examples": [],
|
611
|
+
"links": [
|
612
|
+
{
|
613
|
+
"rel": "More information on the graph color headline setting",
|
614
|
+
"href": "https://open-sdg.readthedocs.io/en/latest/configuration/#graph_color_headline"
|
615
|
+
}
|
616
|
+
]
|
617
|
+
},
|
618
|
+
"graph_color_headline_high_contrast": {
|
619
|
+
"type": "string",
|
620
|
+
"format": "color",
|
621
|
+
"title": "Graph color for headline - high-contrast",
|
622
|
+
"default": "#55a6e5",
|
623
|
+
"description": "This setting can be used to customize the color used in the chart 'headlines' in high-contrast mode.",
|
624
|
+
"examples": [],
|
625
|
+
"links": [
|
626
|
+
{
|
627
|
+
"rel": "More information on the graph color headline high-contrast setting",
|
628
|
+
"href": "https://open-sdg.readthedocs.io/en/latest/configuration/#graph_color_headline_high_contrast"
|
629
|
+
}
|
630
|
+
]
|
631
|
+
},
|
614
632
|
"graph_color_set": {
|
615
633
|
"type": "string",
|
616
634
|
"title": "Graph color set",
|
@@ -653,6 +671,18 @@
|
|
653
671
|
}
|
654
672
|
]
|
655
673
|
},
|
674
|
+
"graph_title_from_series": {
|
675
|
+
"title": "Graph title from series",
|
676
|
+
"type": "boolean",
|
677
|
+
"description": "This setting can be set to `true` to use the selected series for the graph title, whenever possible.",
|
678
|
+
"format": "checkbox",
|
679
|
+
"links": [
|
680
|
+
{
|
681
|
+
"rel": "More information on the graph title from series setting",
|
682
|
+
"href": "https://open-sdg.readthedocs.io/en/latest/configuration/#graph_title_from_series"
|
683
|
+
}
|
684
|
+
]
|
685
|
+
},
|
656
686
|
"header": {
|
657
687
|
"options": {"collapsed": true},
|
658
688
|
"type": "object",
|
@@ -713,6 +743,69 @@
|
|
713
743
|
"description": "Configuration of the indicator configuration form.",
|
714
744
|
"$ref": "#/definitions/config_form_options"
|
715
745
|
},
|
746
|
+
"indicator_data_form": {
|
747
|
+
"options": {"collapsed": true},
|
748
|
+
"type": "object",
|
749
|
+
"title": "Indicator data form",
|
750
|
+
"description": "Configuration of the indicator data form.",
|
751
|
+
"properties": {
|
752
|
+
"enabled": {
|
753
|
+
"type": "boolean",
|
754
|
+
"title": "Enable this type of form",
|
755
|
+
"description": "If enabled, the indicator data form will be available.",
|
756
|
+
"format": "checkbox"
|
757
|
+
},
|
758
|
+
"repository_link": {
|
759
|
+
"type": "string",
|
760
|
+
"title": "Repository link",
|
761
|
+
"description": "The URL pattern of the 'Go to repository' link on the configuration page."
|
762
|
+
}
|
763
|
+
}
|
764
|
+
},
|
765
|
+
"indicator_metadata_form": {
|
766
|
+
"options": {"collapsed": true},
|
767
|
+
"type": "object",
|
768
|
+
"title": "Indicator metadata form",
|
769
|
+
"description": "Configuration of the indicator metadata form.",
|
770
|
+
"allOf": [
|
771
|
+
{ "$ref": "#/definitions/config_form_options" },
|
772
|
+
{
|
773
|
+
"properties": {
|
774
|
+
"language": {
|
775
|
+
"type": "string",
|
776
|
+
"title": "Language for editing",
|
777
|
+
"description": "Choose the language you prefer when editing metadata. This is used to translate the labels of the metadata fields."
|
778
|
+
},
|
779
|
+
"scopes": {
|
780
|
+
"options": {"collapsed": true},
|
781
|
+
"type": "array",
|
782
|
+
"title": "Metadata scopes",
|
783
|
+
"description": "Specify the 'scopes' of metadata to include on the form. Eg: 'national' or 'global'.",
|
784
|
+
"items": {
|
785
|
+
"type": "string",
|
786
|
+
"title": "Scope"
|
787
|
+
}
|
788
|
+
},
|
789
|
+
"exclude_fields": {
|
790
|
+
"options": {"collapsed": true},
|
791
|
+
"type": "array",
|
792
|
+
"title": "Exclude fields",
|
793
|
+
"description": "Specify any fields you would like to exclude from the form.",
|
794
|
+
"items": {
|
795
|
+
"type": "string",
|
796
|
+
"title": "Field"
|
797
|
+
}
|
798
|
+
},
|
799
|
+
"translated": {
|
800
|
+
"type": "boolean",
|
801
|
+
"title": "Display translated contents in the form",
|
802
|
+
"description": "This should only be enabled if you are using the 'subfolder' approach for your metadata.",
|
803
|
+
"format": "checkbox"
|
804
|
+
}
|
805
|
+
}
|
806
|
+
}
|
807
|
+
]
|
808
|
+
},
|
716
809
|
"languages": {
|
717
810
|
"options": {"collapsed": true},
|
718
811
|
"type": "array",
|
@@ -761,6 +854,41 @@
|
|
761
854
|
}
|
762
855
|
]
|
763
856
|
},
|
857
|
+
"logos": {
|
858
|
+
"options": {"collapsed": true},
|
859
|
+
"type": "array",
|
860
|
+
"title": "Logos",
|
861
|
+
"description": "This setting can be used to control the main logo (or logos).",
|
862
|
+
"items": {
|
863
|
+
"type": "object",
|
864
|
+
"title": "Logo",
|
865
|
+
"properties": {
|
866
|
+
"language": {
|
867
|
+
"type": "string",
|
868
|
+
"title": "Language",
|
869
|
+
"description": "The language on which this logo displays. Leave blank to show on all."
|
870
|
+
},
|
871
|
+
"src": {
|
872
|
+
"type": "string",
|
873
|
+
"minLength": 1,
|
874
|
+
"title": "Image file",
|
875
|
+
"description": "The image file (path or URL) for this logo"
|
876
|
+
},
|
877
|
+
"alt": {
|
878
|
+
"type": "string",
|
879
|
+
"minLength": 1,
|
880
|
+
"title": "Alt text",
|
881
|
+
"description": "The alt text for this logo"
|
882
|
+
}
|
883
|
+
}
|
884
|
+
},
|
885
|
+
"links": [
|
886
|
+
{
|
887
|
+
"rel": "More information on the logos setting",
|
888
|
+
"href": "https://open-sdg.readthedocs.io/en/latest/configuration/#logos"
|
889
|
+
}
|
890
|
+
]
|
891
|
+
},
|
764
892
|
"map_layers": {
|
765
893
|
"options": {"collapsed": true},
|
766
894
|
"type": "array",
|
@@ -1027,8 +1155,8 @@
|
|
1027
1155
|
"remote_data_prefix": {
|
1028
1156
|
"type": "string",
|
1029
1157
|
"minLength": 1,
|
1030
|
-
"title": "Remote data
|
1031
|
-
"description": "Specify the URL of your
|
1158
|
+
"title": "Remote data prefix",
|
1159
|
+
"description": "Specify the URL of the 'data service' that is generated from your data repository.",
|
1032
1160
|
"links": [
|
1033
1161
|
{
|
1034
1162
|
"rel": "More information on the remote data prefix setting",
|
@@ -1061,6 +1189,28 @@
|
|
1061
1189
|
}
|
1062
1190
|
]
|
1063
1191
|
},
|
1192
|
+
"repository_url_data": {
|
1193
|
+
"type": "string",
|
1194
|
+
"title": "Repository URL - Data",
|
1195
|
+
"description": "The URL of your data repository, eg: https://github.com/my-github-org/data",
|
1196
|
+
"links": [
|
1197
|
+
{
|
1198
|
+
"rel": "More information on the data repository URL setting",
|
1199
|
+
"href": "https://open-sdg.readthedocs.io/en/latest/configuration/#repository_url_data"
|
1200
|
+
}
|
1201
|
+
]
|
1202
|
+
},
|
1203
|
+
"repository_url_site": {
|
1204
|
+
"type": "string",
|
1205
|
+
"title": "Repository URL - Site",
|
1206
|
+
"description": "The URL of your site repository, eg: https://github.com/my-github-org/site",
|
1207
|
+
"links": [
|
1208
|
+
{
|
1209
|
+
"rel": "More information on the site repository URL setting",
|
1210
|
+
"href": "https://open-sdg.readthedocs.io/en/latest/configuration/#repository_url_site"
|
1211
|
+
}
|
1212
|
+
]
|
1213
|
+
},
|
1064
1214
|
"search_index_boost": {
|
1065
1215
|
"options": {"collapsed": true},
|
1066
1216
|
"type": "array",
|
@@ -1247,6 +1397,12 @@
|
|
1247
1397
|
"config_form_options": {
|
1248
1398
|
"type": "object",
|
1249
1399
|
"properties": {
|
1400
|
+
"enabled": {
|
1401
|
+
"type": "boolean",
|
1402
|
+
"title": "Enable this type of form",
|
1403
|
+
"description": "If enabled, this type of configuration form will be available.",
|
1404
|
+
"format": "checkbox"
|
1405
|
+
},
|
1250
1406
|
"dropdowns": {
|
1251
1407
|
"type": "array",
|
1252
1408
|
"title": "Dropdown lists",
|
@@ -1280,6 +1436,16 @@
|
|
1280
1436
|
}
|
1281
1437
|
}
|
1282
1438
|
}
|
1439
|
+
},
|
1440
|
+
"repository_link": {
|
1441
|
+
"type": "string",
|
1442
|
+
"title": "Repository link",
|
1443
|
+
"description": "The URL pattern of the 'Go to repository' link on the configuration page."
|
1444
|
+
},
|
1445
|
+
"translation_link": {
|
1446
|
+
"type": "string",
|
1447
|
+
"title": "Translation link",
|
1448
|
+
"description": "The URL pattern for all 'Go to translation' links on the configuration page."
|
1283
1449
|
}
|
1284
1450
|
}
|
1285
1451
|
}
|
@@ -15,7 +15,11 @@ module JekyllOpenSdgPlugins
|
|
15
15
|
# Get a target number from an indicator number.
|
16
16
|
def get_target_number(indicator_number)
|
17
17
|
parts = indicator_number.split('.')
|
18
|
-
parts
|
18
|
+
if parts.length() < 2
|
19
|
+
indicator_number
|
20
|
+
else
|
21
|
+
parts[0] + '.' + parts[1]
|
22
|
+
end
|
19
23
|
end
|
20
24
|
|
21
25
|
# Is this string numeric?
|
@@ -64,7 +68,7 @@ module JekyllOpenSdgPlugins
|
|
64
68
|
# The Jekyll baseurl is user-configured, and can be inconsistent. This
|
65
69
|
# ensure it is consistent in whether it starts/ends with a slash.
|
66
70
|
def normalize_baseurl(baseurl)
|
67
|
-
if baseurl == ''
|
71
|
+
if baseurl == '' || baseurl.nil?
|
68
72
|
baseurl = '/'
|
69
73
|
end
|
70
74
|
if !baseurl.start_with? '/'
|
@@ -272,7 +276,7 @@ module JekyllOpenSdgPlugins
|
|
272
276
|
end
|
273
277
|
end
|
274
278
|
|
275
|
-
is_standalone = meta.has_key?('standalone') and meta['standalone']
|
279
|
+
is_standalone = (meta.has_key?('standalone') and meta['standalone'])
|
276
280
|
|
277
281
|
# Set the goal for this language, once only.
|
278
282
|
if !is_standalone && already_added[language].index(goal_number) == nil
|
@@ -383,8 +387,36 @@ module JekyllOpenSdgPlugins
|
|
383
387
|
doc.data['remote_data_prefix'] = normalize_baseurl(baseurl)
|
384
388
|
end
|
385
389
|
if opensdg_translated_builds(site)
|
390
|
+
doc.data['remote_data_prefix_untranslated'] = File.join(doc.data['remote_data_prefix'], 'untranslated')
|
386
391
|
doc.data['remote_data_prefix'] = File.join(doc.data['remote_data_prefix'], language)
|
392
|
+
else
|
393
|
+
doc.data['remote_data_prefix_untranslated'] = doc.data['remote_data_prefix']
|
394
|
+
end
|
395
|
+
|
396
|
+
# Set the logo for this page.
|
397
|
+
logo = {}
|
398
|
+
match = false
|
399
|
+
if site.config.has_key?('logos') && site.config['logos'].length > 0
|
400
|
+
match = site.config['logos'].find{ |item| item['language'] == language }
|
401
|
+
unless match
|
402
|
+
match = site.config['logos'].find{ |item| item.fetch('language', '') == '' }
|
403
|
+
end
|
404
|
+
end
|
405
|
+
if match
|
406
|
+
src = match['src']
|
407
|
+
unless src.start_with?('http')
|
408
|
+
src = normalize_baseurl(baseurl) + src
|
409
|
+
end
|
410
|
+
logo['src'] = src
|
411
|
+
logo['alt'] = opensdg_translate_key(match['alt'], translations, language)
|
412
|
+
else
|
413
|
+
logo['src'] = normalize_baseurl(baseurl) + 'assets/img/SDG_logo.png'
|
414
|
+
alt_text = opensdg_translate_key('general.sdg', translations, language)
|
415
|
+
alt_text += ' - '
|
416
|
+
alt_text += opensdg_translate_key('header.tag_line', translations, language)
|
417
|
+
logo['alt'] = alt_text
|
387
418
|
end
|
419
|
+
doc.data['logo'] = logo
|
388
420
|
|
389
421
|
if collection == 'indicators'
|
390
422
|
# For indicators we also set the current indicator/target/goal.
|
@@ -31,6 +31,15 @@ module JekyllOpenSdgPlugins
|
|
31
31
|
hash_to_hash(site.data['site_config_prod'], site.config)
|
32
32
|
end
|
33
33
|
|
34
|
+
# Look for environment variables for some settings.
|
35
|
+
env_settings = [
|
36
|
+
'REPOSITORY_URL_SITE',
|
37
|
+
]
|
38
|
+
env_settings.each do |setting|
|
39
|
+
if ENV.has_key?(setting)
|
40
|
+
site.config[setting.downcase] = ENV[setting]
|
41
|
+
end
|
42
|
+
end
|
34
43
|
end
|
35
44
|
|
36
45
|
# Copy properties from a hash onto another hash.
|
@@ -8,6 +8,8 @@ module Jekyll
|
|
8
8
|
# language of the current page and a date format given.
|
9
9
|
def t_date(date, format_type)
|
10
10
|
|
11
|
+
original = date
|
12
|
+
|
11
13
|
# Determine the language of the current page.
|
12
14
|
config = @context.registers[:site].config
|
13
15
|
translations = @context.registers[:site].data['translations']
|
@@ -57,7 +59,29 @@ module Jekyll
|
|
57
59
|
|
58
60
|
# Support timestamps.
|
59
61
|
if date.is_a? Integer
|
60
|
-
|
62
|
+
# Convert milliseconds to seconds if necessary.
|
63
|
+
if date > 9000000000
|
64
|
+
date = date / 1000
|
65
|
+
end
|
66
|
+
begin
|
67
|
+
date = Time.at(date).utc
|
68
|
+
rescue => err
|
69
|
+
return original
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# Support other strings.
|
74
|
+
if date.is_a? String
|
75
|
+
begin
|
76
|
+
date = Time.parse(date).utc
|
77
|
+
rescue => err
|
78
|
+
return original
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# Avoid nil errors.
|
83
|
+
unless date.is_a? Time
|
84
|
+
return original
|
61
85
|
end
|
62
86
|
|
63
87
|
# Convert the date into English.
|
data/tests/_config.yml
CHANGED
@@ -9,6 +9,7 @@ data_edit_url: http://prose.io/#open-sdg/open-sdg-data-starter/edit/develop/data
|
|
9
9
|
metadata_edit_url: http://prose.io/#open-sdg/open-sdg-data-starter/edit/develop/meta/[id].md
|
10
10
|
languages:
|
11
11
|
- en
|
12
|
+
- es
|
12
13
|
|
13
14
|
title: Indicators For The Sustainable Development Goals
|
14
15
|
url: ""
|
@@ -145,3 +146,12 @@ exclude:
|
|
145
146
|
# max_zoom: 10
|
146
147
|
# subfolder: my-geojson-subfolder
|
147
148
|
# label: My map layer label (can be a translation key)
|
149
|
+
|
150
|
+
site_config_form:
|
151
|
+
repository_link: https://github.com/open-sdg/open-sdg-site-starter
|
152
|
+
indicator_config_form:
|
153
|
+
repository_link: https://github.com/open-sdg/open-sdg-data-starter/tree/develop/meta
|
154
|
+
indicator_metadata_form:
|
155
|
+
repository_link: https://github.com/open-sdg/open-sdg-data-starter/tree/develop/meta
|
156
|
+
scopes:
|
157
|
+
- national
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-open-sdg-plugins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brock Fanning
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- lib/jekyll-open-sdg-plugins/create_pages.rb
|
73
73
|
- lib/jekyll-open-sdg-plugins/fetch_remote_data.rb
|
74
74
|
- lib/jekyll-open-sdg-plugins/helpers.rb
|
75
|
+
- lib/jekyll-open-sdg-plugins/metadata_schema_to_config.rb
|
75
76
|
- lib/jekyll-open-sdg-plugins/schema-indicator-config.json
|
76
77
|
- lib/jekyll-open-sdg-plugins/schema-site-config.json
|
77
78
|
- lib/jekyll-open-sdg-plugins/sdg_variables.rb
|
@@ -100,9 +101,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
100
101
|
version: '0'
|
101
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
103
|
requirements:
|
103
|
-
- - "
|
104
|
+
- - ">="
|
104
105
|
- !ruby/object:Gem::Version
|
105
|
-
version:
|
106
|
+
version: '0'
|
106
107
|
requirements: []
|
107
108
|
rubygems_version: 3.1.4
|
108
109
|
signing_key:
|