openactive-dataset_site 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 06c3edb6feeae3a16036a6cc50150d5b7da364b0
4
+ data.tar.gz: c01bacae3dc20e6fdd5103e4e9549add20d648ac
5
+ SHA512:
6
+ metadata.gz: c5b93fe8bf15a3e9e8557905e802c19a5e995466710ba5913a278a1c4650cd95f3973e7c5027bcde087af04bf6d19fe07387bd9aed3ffafebf737eccc9c0ddb2
7
+ data.tar.gz: 49aeee97614d863c02fed3340d802819a8ba746e500ea7c6c6f409d114c319a7c72098985ac5ca139e32adf1785551750ec8c82cb9485ea0a9fd9dd5abcd6762
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ .ruby-version
10
+ Gemfile.lock
11
+
12
+
13
+ # rspec failure tracking
14
+ .rspec_status
data/.rubocop.yml ADDED
@@ -0,0 +1,98 @@
1
+ require:
2
+ - rubocop-rspec
3
+
4
+ Layout/SpaceInsideHashLiteralBraces:
5
+ Enabled: false
6
+
7
+ Lint/ScriptPermission:
8
+ Enabled: false
9
+ Metrics/AbcSize:
10
+ Enabled: false
11
+ Metrics/BlockLength:
12
+ Enabled: false
13
+ Metrics/MethodLength:
14
+ Enabled: true
15
+ Max: 20
16
+ Exclude:
17
+ - 'db/**/*.rb'
18
+
19
+ Bundler/OrderedGems:
20
+ Enabled: false
21
+ RSpec/ExampleWording:
22
+ Enabled: false
23
+ RSpec/MultipleExpectations:
24
+ Enabled: false
25
+ Style/Documentation:
26
+ Enabled: false
27
+ Style/EmptyCaseCondition:
28
+ Enabled: false
29
+ Style/FrozenStringLiteralComment:
30
+ Enabled: false
31
+ Style/StringLiterals:
32
+ Enabled: false
33
+ # check this against SW styleguide
34
+ Style/TrailingCommaInArrayLiteral:
35
+ Enabled: false
36
+ EnforcedStyleForMultiline: comma
37
+ Style/TrailingCommaInArguments:
38
+ Enabled: true
39
+ EnforcedStyleForMultiline: comma
40
+ # check this against SW styleguide
41
+ Style/TrailingCommaInHashLiteral:
42
+ Enabled: false
43
+ EnforcedStyleForMultiline: comma
44
+ Style/SymbolArray:
45
+ EnforcedStyle: brackets
46
+ Style/WordArray:
47
+ EnforcedStyle: brackets
48
+ RSpec/ExampleLength:
49
+ Max: 15
50
+ Exclude:
51
+ - 'spec/features/**/*.rb' # feature specs are just naturally long
52
+ Style/ClassAndModuleChildren:
53
+ AutoCorrect: true
54
+ RSpec/NestedGroups:
55
+ Max: 5
56
+ Style/AsciiComments:
57
+ Enabled: false
58
+
59
+ Naming/UncommunicativeMethodParamName:
60
+ AllowedNames:
61
+ - as
62
+ - id
63
+
64
+ Metrics/LineLength:
65
+ Enabled: true
66
+ Max: 120
67
+ Exclude:
68
+ - 'lib/openactive/models/**/*.rb'
69
+ - 'lib/openactive/enums/**/*.rb'
70
+ - 'openactive.gemspec'
71
+ Naming/PredicateName:
72
+ Exclude:
73
+ - 'lib/openactive/models/**/*.rb'
74
+ - 'lib/openactive/enums/**/*.rb'
75
+ Style/TrivialAccessors:
76
+ Exclude:
77
+ - 'lib/openactive/models/**/*.rb'
78
+ - 'lib/openactive/enums/**/*.rb'
79
+ Metrics/ClassLength:
80
+ Exclude:
81
+ - 'lib/openactive/models/**/*.rb'
82
+ - 'lib/openactive/enums/**/*.rb'
83
+ Layout/SpaceInsideArrayLiteralBrackets:
84
+ Exclude:
85
+ - 'lib/openactive/models/**/*.rb'
86
+
87
+ # Specs aren't being used in an entirely typical way, so these rules clash
88
+ RSpec/DescribeClass:
89
+ Enabled: false
90
+ RSpec/FilePath:
91
+ Enabled: false
92
+
93
+ # While these do great at indicating code smell, the code is inheritantly complicated and would need major refactoring
94
+ # (which would further obfuscate what it's doing!)
95
+ Metrics/CyclomaticComplexity:
96
+ Enabled: false
97
+ Metrics/PerceivedComplexity:
98
+ Enabled: false
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ gem "openactive", github: "openactive/models-ruby"
6
+ # Override this for local dev with:
7
+ # bundle config disable_local_branch_check true
8
+ # bundle config local.openactive /path/to/gem
9
+
10
+ # Specify your gem's dependencies in openactive-dataset.gemspec
11
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2019 OpenActive
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/Makefile ADDED
@@ -0,0 +1,11 @@
1
+ .PHONY :
2
+
3
+ lint_rb:
4
+ bundle exec rubocop
5
+
6
+ fix_rb:
7
+ bundle exec rubocop -a
8
+
9
+ lint: lint_rb
10
+
11
+ fix: fix_rb
data/README.md ADDED
@@ -0,0 +1,117 @@
1
+ # dataset-site-template-ruby
2
+ Ruby classes and resources supporting dataset site creation
3
+
4
+ Tools intended to simplify creation of dataset sites using templates.
5
+
6
+ For comparison, see the [.NET](https://github.com/openactive/dataset-site-template-example-dotnet) and [PHP](https://github.com/openactive/dataset-site-template-php) implementations.
7
+
8
+ ## Installation
9
+
10
+ Add this line to your application's Gemfile:
11
+
12
+ ```ruby
13
+ gem 'openactive-dataset_site'
14
+ ```
15
+
16
+ And then execute:
17
+
18
+ $ bundle
19
+
20
+ Or install it yourself as:
21
+
22
+ $ gem install openactive-dataset_site
23
+
24
+
25
+ ## Usage
26
+
27
+ If you are developing this package, go to the [Contribution](#contribution) section.
28
+
29
+ Wherever you want to render your Dataset page, include the following instructions:
30
+ ```ruby
31
+
32
+ # Render compiled template with data
33
+ renderer = OpenActive::DatasetSite::TemplateRenderer.new(settings)
34
+ puts renderer.render
35
+ ```
36
+
37
+ Where `settings` could be defined like the following (as an example):
38
+ ```ruby
39
+ settings = OpenActive::DatasetSite::Settings.new(
40
+ open_data_feed_base_url: "https://customer.example.com/feed/",
41
+ dataset_site_url: "https://halo-odi.legendonlineservices.co.uk/openactive/",
42
+ dataset_discussion_url: "https://github.com/gll-better/opendata",
43
+ dataset_documentation_url: "https://docs.acmebooker.example.com/",
44
+ dataset_languages: ["en-GB"],
45
+ organisation_name: "Better",
46
+ organisation_url: "https://www.better.org.uk/",
47
+ organisation_legal_entity: "GLL",
48
+ organisation_plain_text_description: "Established in 1993, GLL is the largest UK-based charitable social enterprise delivering leisure, health and community services. Under the consumer facing brand Better, we operate 258 public Sports and Leisure facilities, 88 libraries, 10 children’s centres and 5 adventure playgrounds in partnership with 50 local councils, public agencies and sporting organisations. Better leisure facilities enjoy 46 million visitors a year and have more than 650,000 members.",
49
+ organisation_logo_url: "http://data.better.org.uk/images/logo.png",
50
+ organisation_email: "info@better.org.uk",
51
+ platform_name: "AcmeBooker",
52
+ platform_url: "https://acmebooker.example.com/",
53
+ platform_software_version: "2.0",
54
+ background_image_url: "https://data.better.org.uk/images/bg.jpg",
55
+ date_first_published: "2019-10-28",
56
+ data_feed_types: [
57
+ OpenActive::DatasetSite::FeedType::FACILITY_USE,
58
+ OpenActive::DatasetSite::FeedType::SCHEDULED_SESSION,
59
+ OpenActive::DatasetSite::FeedType::SESSION_SERIES,
60
+ OpenActive::DatasetSite::FeedType::SLOT,
61
+ ],
62
+ )
63
+ ```
64
+
65
+ ### API
66
+
67
+ #### OpenActive::DatasetSite::Settings
68
+ Accepts a config hash containing the following keys:
69
+
70
+ ##### Settings
71
+
72
+ | Key | Type | Description |
73
+ | --------------------------------------- | ----------- | ----------- |
74
+ | `open_data_feed_base_url` | `string` | The the base URL for the open data feeds |
75
+ | `dataset_site_url` | `string` | The URL where this dataset site is displayed (the page's own URL) |
76
+ | `dataset_discussion_url` | `string` | The GitHub issues page for the dataset |
77
+ | `dataset_documentation_url` | `string` | Any documentation specific to the dataset. Defaults to https://developer.openactive.io/ if not provided, which should be used if no documentation is available. |
78
+ | `dataset_languages` | `string[]` | The languages available in the dataset, following the IETF BCP 47 standard. Defaults to `array("en-GB")`. |
79
+ | `organisation_name` | `string` | The publishing organisation's name |
80
+ | `organisation_url` | `string` | The publishing organisation's URL |
81
+ | `organisation_legal_entity` | `string` | The legal name of the publishing organisation of this dataset |
82
+ | `organisation_plain_text_description` | `string` | A plain text description of this organisation |
83
+ | `organisation_logo_url` | `string` | An image URL of the publishing organisation's logo, ideally in PNG format |
84
+ | `organisation_email` | `string` | The contact email of the publishing organisation of this dataset |
85
+ | `platform_name` | `string` | The software platform's name. Only set this if different from the publishing organisation, otherwise leave as null to exclude platform metadata. |
86
+ | `platform_url` | `string` | The software platform's website |
87
+ | `platform_software_version` | `string` | The software platform's software version |
88
+ | `background_image_url` | `string` | The background image to show on the Dataset Site page |
89
+ | `date_first_published` | `string` | The date the dataset was first published |
90
+ | `data_feed_types` | `FeedType[]`| A list of supported DataFeed types |
91
+
92
+ And `data_feed_types` must be an array of `FeedType` constants, which auto-generates the metadata associated which each feed using best-practice values. See [available types](#feedtype)
93
+
94
+ #### OpenActive::DatasetSite::TemplateRenderer.new(settings)
95
+
96
+ Accepts a settings or a DataSet object. This is a Mustache engine.
97
+
98
+ ##### .render
99
+
100
+ Returns a string corresponding to the compiled HTML, based on the `datasetsite.mustache`, the provided [`settings`](#settings)
101
+
102
+ #### `FeedType`
103
+
104
+ A class containing the supported distribution types:
105
+
106
+ | Constant | Name |
107
+ | ------------------------- | ----------------------- |
108
+ | `COURSE` | `Course` |
109
+ | `COURSE_INSTANCE` | `CourseInstance` |
110
+ | `EVENT` | `Event` |
111
+ | `EVENT_SERIES` | `EventSeries` |
112
+ | `FACILITY_USE` | `FacilityUse` |
113
+ | `HEADLINE_EVENT` | `HeadlineEvent` |
114
+ | `INDIVIDUAL_FACILITY_USE` | `IndividualFacilityUse` |
115
+ | `SCHEDULED_SESSION` | `ScheduledSession` |
116
+ | `SESSION_SERIES` | `SessionSeries` |
117
+ | `SLOT` | `Slot` |
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "openactive/dataset_site"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,33 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require "openactive/dataset_site"
5
+
6
+ feed_types = [
7
+ OpenActive::DatasetSite::FeedType::FACILITY_USE,
8
+ OpenActive::DatasetSite::FeedType::SCHEDULED_SESSION,
9
+ OpenActive::DatasetSite::FeedType::SESSION_SERIES,
10
+ OpenActive::DatasetSite::FeedType::SLOT,
11
+ ]
12
+
13
+ settings = OpenActive::DatasetSite::Settings.new(
14
+ open_data_feed_base_url: "http://example.com/feed/",
15
+ dataset_site_url: "http://example.com/dataset/",
16
+ dataset_discussion_url: "https://github.com/simpleweb/sw-oa-php-test-site",
17
+ dataset_documentation_url: "https://developer.openactive.io/",
18
+ dataset_languages: ["en-GB"],
19
+ organisation_name: "Simpleweb",
20
+ organisation_url: "https://www.simpleweb.co.uk/",
21
+ organisation_legal_entity: "Simpleweb Ltd",
22
+ organisation_plain_text_description: "Simpleweb is a purpose driven software company that specialises in new "\
23
+ "technologies, product development, and human interaction.",
24
+ organisation_logo_url: "https://simpleweb.co.uk/wp-content/uploads/2015/07/facebook-default.png",
25
+ organisation_email: "spam@simpleweb.co.uk",
26
+ background_image_url: "https://simpleweb.co.uk/wp-content/uploads/2017/06/IMG_8994-500x500-c-default.jpg",
27
+ date_first_published: "2019-11-05", # remember, remember the fifth of November...
28
+ data_feed_types: feed_types,
29
+ )
30
+
31
+ renderer = OpenActive::DatasetSite::TemplateRenderer.new(settings)
32
+
33
+ puts renderer.render
@@ -0,0 +1,12 @@
1
+ require "openactive"
2
+ require "openactive/dataset_site/version"
3
+
4
+ require "openactive/dataset_site/feed_type"
5
+ require "openactive/dataset_site/meta"
6
+ require "openactive/dataset_site/settings"
7
+ require "openactive/dataset_site/template_renderer"
8
+
9
+ module OpenActive
10
+ module DatasetSite
11
+ end
12
+ end
@@ -0,0 +1,1021 @@
1
+ <!DOCTYPE HTML>
2
+ <!--
3
+ Design: Identity by HTML5 UP
4
+ html5up.net | @ajlkn
5
+ Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
6
+
7
+ DCAT Template: Nick Evans / imin
8
+ imin.co | @nickevans / @_imin_
9
+ For openactive.io
10
+ Free for personal and commercial use under the CC-BY v4.0 license (https://creativecommons.org/licenses/by/4.0/)
11
+ -->
12
+ <html prefix="dct: http://purl.org/dc/terms/
13
+ rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
14
+ dcat: http://www.w3.org/ns/dcat#
15
+ foaf: http://xmlns.com/foaf/0.1/"
16
+ lang="en">
17
+ <head>
18
+ <title>{{name}} - Open Data</title>
19
+
20
+ <meta name="title" content="{{name}} - Open Data" />
21
+ <meta name="identifier" content="{{url}}" />
22
+ <meta name="Keywords" content="{{#keywords}}{{.}},{{/keywords}}Open Data" />
23
+ <meta name="Description" content="{{description}}" />
24
+ <meta name="language" content="English" />
25
+
26
+ <meta property="og:title" content="{{name}} - Open Data" />
27
+ <meta property="og:description" content="{{description}}" />
28
+ <meta property="og:locale" content="en_GB" />
29
+ <meta property="og:url" content="{{url}}" />
30
+ <meta property="og:image" content="{{publisher.logo.url}}" />
31
+
32
+ <meta charset="utf-8" />
33
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
34
+ <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300" rel="stylesheet">
35
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css" crossorigin="anonymous">
36
+ <style>
37
+ /*
38
+ Identity by HTML5 UP
39
+ html5up.net | @ajlkn
40
+ Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
41
+ */
42
+
43
+ /* Reset */
44
+
45
+ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
46
+ margin: 0;
47
+ padding: 0;
48
+ border: 0;
49
+ font-size: 100%;
50
+ font: inherit;
51
+ vertical-align: baseline;
52
+ }
53
+
54
+ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
55
+ display: block;
56
+ }
57
+
58
+ body {
59
+ line-height: 1;
60
+ }
61
+
62
+ ol, ul {
63
+ list-style: none;
64
+ }
65
+
66
+ blockquote, q {
67
+ quotes: none;
68
+ }
69
+
70
+ blockquote:before, blockquote:after, q:before, q:after {
71
+ content: '';
72
+ content: none;
73
+ }
74
+
75
+ table {
76
+ border-collapse: collapse;
77
+ border-spacing: 0;
78
+ }
79
+
80
+ body {
81
+ -webkit-text-size-adjust: none;
82
+ }
83
+
84
+ /* Box Model */
85
+
86
+ *, *:before, *:after {
87
+ -moz-box-sizing: border-box;
88
+ -webkit-box-sizing: border-box;
89
+ box-sizing: border-box;
90
+ }
91
+
92
+ /* Basic */
93
+
94
+ @media screen and (max-width: 480px) {
95
+
96
+ html, body {
97
+ min-width: 320px;
98
+ }
99
+
100
+ }
101
+
102
+ body.is-loading *, body.is-loading *:before, body.is-loading *:after {
103
+ -moz-animation: none !important;
104
+ -webkit-animation: none !important;
105
+ -ms-animation: none !important;
106
+ animation: none !important;
107
+ -moz-transition: none !important;
108
+ -webkit-transition: none !important;
109
+ -ms-transition: none !important;
110
+ transition: none !important;
111
+ }
112
+
113
+ html {
114
+ height: 100%;
115
+ }
116
+
117
+ body {
118
+ height: 100%;
119
+ background-color: #ffffff;
120
+ background-repeat: repeat, no-repeat, no-repeat;
121
+ background-size: 100px 100px, cover, cover;
122
+ background-position: top left, center center, bottom center;
123
+ background-attachment: fixed, fixed, fixed;
124
+ }
125
+
126
+ body:after {
127
+ content: '';
128
+ display: block;
129
+ position: fixed;
130
+ top: 0;
131
+ left: 0;
132
+ width: 100%;
133
+ height: inherit;
134
+ opacity: 0;
135
+ z-index: 1;
136
+ background-color: #ffffff;
137
+ background-image: url(data:image/png;base64,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), linear-gradient(60deg, rgba(255, 165, 150, 0.5) 5%, rgba(0, 228, 255, 0.35));
138
+ background-repeat: repeat, no-repeat;
139
+ background-size: 100px 100px, cover;
140
+ background-position: top left, center center;
141
+ -moz-transition: opacity 1.75s ease-out;
142
+ -webkit-transition: opacity 1.75s ease-out;
143
+ -ms-transition: opacity 1.75s ease-out;
144
+ transition: opacity 1.75s ease-out;
145
+ }
146
+
147
+ body.is-loading:after {
148
+ opacity: 1;
149
+ }
150
+
151
+ /* Type */
152
+
153
+ body, input, select, textarea {
154
+ color: #414f57;
155
+ font-family: "Source Sans Pro", Helvetica, sans-serif;
156
+ font-size: 14pt;
157
+ font-weight: 300;
158
+ line-height: 2;
159
+ letter-spacing: 0.2em;
160
+ text-transform: uppercase;
161
+ }
162
+
163
+ @media screen and (max-width: 1680px) {
164
+
165
+ body, input, select, textarea {
166
+ font-size: 11pt;
167
+ }
168
+
169
+ }
170
+
171
+ @media screen and (max-width: 480px) {
172
+
173
+ body, input, select, textarea {
174
+ font-size: 10pt;
175
+ line-height: 1.75;
176
+ }
177
+
178
+ }
179
+
180
+ a {
181
+ -moz-transition: color 0.2s ease, border-color 0.2s ease;
182
+ -webkit-transition: color 0.2s ease, border-color 0.2s ease;
183
+ -ms-transition: color 0.2s ease, border-color 0.2s ease;
184
+ transition: color 0.2s ease, border-color 0.2s ease;
185
+ color: #0082f3;
186
+ text-decoration: none;
187
+ }
188
+
189
+ a:before {
190
+ -moz-transition: color 0.2s ease, text-shadow 0.2s ease;
191
+ -webkit-transition: color 0.2s ease, text-shadow 0.2s ease;
192
+ -ms-transition: color 0.2s ease, text-shadow 0.2s ease;
193
+ transition: color 0.2s ease, text-shadow 0.2s ease;
194
+ }
195
+
196
+ a:hover {
197
+ color: #ff7496;
198
+ }
199
+
200
+ strong, b {
201
+ color: #313f47;
202
+ }
203
+
204
+ em, i {
205
+ font-style: italic;
206
+ }
207
+
208
+ p {
209
+ margin: 0 0 1.5em 0;
210
+ }
211
+
212
+ h1, h2, h3, h4, h5, h6 {
213
+ color: #313f47;
214
+ line-height: 1.5;
215
+ margin: 0 0 0.75em 0;
216
+ }
217
+
218
+ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
219
+ color: inherit;
220
+ text-decoration: none;
221
+ }
222
+
223
+ h1 {
224
+ font-size: 1.85em;
225
+ letter-spacing: 0.22em;
226
+ margin: 0 0 0.525em 0;
227
+ }
228
+
229
+ h2 {
230
+ font-size: 1em;
231
+ line-height: inherit;
232
+ margin: 0 0 1.5em 0;
233
+ }
234
+
235
+ h3 {
236
+ font-size: 1em;
237
+ }
238
+
239
+ h4 {
240
+ font-size: 1em;
241
+ }
242
+
243
+ h5 {
244
+ font-size: 1em;
245
+ }
246
+
247
+ h6 {
248
+ font-size: 1em;
249
+ }
250
+
251
+ @media screen and (max-width: 480px) {
252
+
253
+ h1 {
254
+ font-size: 1.65em;
255
+ }
256
+
257
+ }
258
+
259
+ sub {
260
+ font-size: 0.8em;
261
+ position: relative;
262
+ top: 0.5em;
263
+ }
264
+
265
+ sup {
266
+ font-size: 0.8em;
267
+ position: relative;
268
+ top: -0.5em;
269
+ }
270
+
271
+ hr {
272
+ border: 0;
273
+ border-bottom: solid 1px #c8cccf;
274
+ margin: 3em 0;
275
+ }
276
+
277
+ /* Form */
278
+
279
+ form {
280
+ margin: 0 0 1.5em 0;
281
+ }
282
+
283
+ form > .field {
284
+ margin: 0 0 1.5em 0;
285
+ }
286
+
287
+ form > .field > :last-child {
288
+ margin-bottom: 0;
289
+ }
290
+
291
+ label {
292
+ color: #313f47;
293
+ display: block;
294
+ font-size: 0.9em;
295
+ margin: 0 0 0.75em 0;
296
+ }
297
+
298
+ input[type="text"],
299
+ input[type="password"],
300
+ input[type="email"],
301
+ input[type="tel"],
302
+ select,
303
+ textarea {
304
+ -moz-appearance: none;
305
+ -webkit-appearance: none;
306
+ -ms-appearance: none;
307
+ appearance: none;
308
+ border-radius: 4px;
309
+ border: solid 1px #c8cccf;
310
+ color: inherit;
311
+ display: block;
312
+ outline: 0;
313
+ padding: 0 1em;
314
+ text-decoration: none;
315
+ width: 100%;
316
+ }
317
+
318
+ input[type="text"]:invalid,
319
+ input[type="password"]:invalid,
320
+ input[type="email"]:invalid,
321
+ input[type="tel"]:invalid,
322
+ select:invalid,
323
+ textarea:invalid {
324
+ box-shadow: none;
325
+ }
326
+
327
+ input[type="text"]:focus,
328
+ input[type="password"]:focus,
329
+ input[type="email"]:focus,
330
+ input[type="tel"]:focus,
331
+ select:focus,
332
+ textarea:focus {
333
+ border-color: #ff7496;
334
+ }
335
+
336
+ .select-wrapper {
337
+ text-decoration: none;
338
+ display: block;
339
+ position: relative;
340
+ }
341
+
342
+ .select-wrapper:before {
343
+ content: "";
344
+ -moz-osx-font-smoothing: grayscale;
345
+ -webkit-font-smoothing: antialiased;
346
+ font-family: FontAwesome;
347
+ font-style: normal;
348
+ font-weight: normal;
349
+ text-transform: none !important;
350
+ }
351
+
352
+ .select-wrapper:before {
353
+ color: #c8cccf;
354
+ display: block;
355
+ height: 2.75em;
356
+ line-height: 2.75em;
357
+ pointer-events: none;
358
+ position: absolute;
359
+ right: 0;
360
+ text-align: center;
361
+ top: 0;
362
+ width: 2.75em;
363
+ }
364
+
365
+ .select-wrapper select::-ms-expand {
366
+ display: none;
367
+ }
368
+
369
+ input[type="text"],
370
+ input[type="password"],
371
+ input[type="email"],
372
+ select {
373
+ height: 2.75em;
374
+ }
375
+
376
+ textarea {
377
+ padding: 0.75em 1em;
378
+ }
379
+
380
+ input[type="checkbox"],
381
+ input[type="radio"] {
382
+ -moz-appearance: none;
383
+ -webkit-appearance: none;
384
+ -ms-appearance: none;
385
+ appearance: none;
386
+ display: block;
387
+ float: left;
388
+ margin-right: -2em;
389
+ opacity: 0;
390
+ width: 1em;
391
+ z-index: -1;
392
+ }
393
+
394
+ input[type="checkbox"] + label,
395
+ input[type="radio"] + label {
396
+ text-decoration: none;
397
+ color: #414f57;
398
+ cursor: pointer;
399
+ display: inline-block;
400
+ font-size: 1em;
401
+ font-weight: 300;
402
+ padding-left: 2.4em;
403
+ padding-right: 0.75em;
404
+ position: relative;
405
+ }
406
+
407
+ input[type="checkbox"] + label:before,
408
+ input[type="radio"] + label:before {
409
+ -moz-osx-font-smoothing: grayscale;
410
+ -webkit-font-smoothing: antialiased;
411
+ font-family: FontAwesome;
412
+ font-style: normal;
413
+ font-weight: normal;
414
+ text-transform: none !important;
415
+ }
416
+
417
+ input[type="checkbox"] + label:before,
418
+ input[type="radio"] + label:before {
419
+ border-radius: 4px;
420
+ border: solid 1px #c8cccf;
421
+ content: '';
422
+ display: inline-block;
423
+ height: 1.65em;
424
+ left: 0;
425
+ line-height: 1.58125em;
426
+ position: absolute;
427
+ text-align: center;
428
+ top: 0.15em;
429
+ width: 1.65em;
430
+ }
431
+
432
+ input[type="checkbox"]:checked + label:before,
433
+ input[type="radio"]:checked + label:before {
434
+ color: #ff7496;
435
+ content: '\f00c';
436
+ }
437
+
438
+ input[type="checkbox"]:focus + label:before,
439
+ input[type="radio"]:focus + label:before {
440
+ border-color: #ff7496;
441
+ }
442
+
443
+ input[type="checkbox"] + label:before {
444
+ border-radius: 4px;
445
+ }
446
+
447
+ input[type="radio"] + label:before {
448
+ border-radius: 100%;
449
+ }
450
+
451
+ ::-webkit-input-placeholder {
452
+ color: #616f77 !important;
453
+ opacity: 1.0;
454
+ }
455
+
456
+ :-moz-placeholder {
457
+ color: #616f77 !important;
458
+ opacity: 1.0;
459
+ }
460
+
461
+ ::-moz-placeholder {
462
+ color: #616f77 !important;
463
+ opacity: 1.0;
464
+ }
465
+
466
+ :-ms-input-placeholder {
467
+ color: #616f77 !important;
468
+ opacity: 1.0;
469
+ }
470
+
471
+ .formerize-placeholder {
472
+ color: #616f77 !important;
473
+ opacity: 1.0;
474
+ }
475
+
476
+ /* Icon */
477
+
478
+ .icon {
479
+ text-decoration: none;
480
+ position: relative;
481
+ border-bottom: none;
482
+ }
483
+
484
+ .icon:before {
485
+ -moz-osx-font-smoothing: grayscale;
486
+ -webkit-font-smoothing: antialiased;
487
+ font-family: FontAwesome;
488
+ font-style: normal;
489
+ font-weight: normal;
490
+ text-transform: none !important;
491
+ }
492
+
493
+ .icon > .label {
494
+ display: none;
495
+ }
496
+
497
+
498
+ /* List */
499
+
500
+ ul.download {
501
+ cursor: default;
502
+ list-style: none;
503
+ padding-left: 0;
504
+ margin-top: -0.675em;
505
+ }
506
+
507
+ ul.download li {
508
+ padding: 0.375em 0.5em;
509
+ text-align: center;
510
+ line-height: 1.5em;
511
+ }
512
+
513
+
514
+ ol {
515
+ list-style: decimal;
516
+ margin: 0 0 1.5em 0;
517
+ padding-left: 1.25em;
518
+ }
519
+
520
+ ol li {
521
+ padding-left: 0.25em;
522
+ }
523
+
524
+ ul {
525
+ list-style: disc;
526
+ margin: 0 0 1.5em 0;
527
+ padding-left: 1em;
528
+ }
529
+
530
+ ul li {
531
+ padding-left: 0.5em;
532
+ }
533
+
534
+ ul.alt {
535
+ list-style: none;
536
+ padding-left: 0;
537
+ }
538
+
539
+ ul.alt li {
540
+ border-top: solid 1px #c8cccf;
541
+ padding: 0.5em 0;
542
+ }
543
+
544
+ ul.alt li:first-child {
545
+ border-top: 0;
546
+ padding-top: 0;
547
+ }
548
+
549
+ ul.icons {
550
+ cursor: default;
551
+ list-style: none;
552
+ padding-left: 0;
553
+ margin-top: -1.5em;
554
+ }
555
+
556
+ ul.icons li {
557
+ display: inline-block;
558
+ padding: 0.675em 0.5em;
559
+ text-align: center;
560
+ line-height: 1.5em;
561
+ }
562
+
563
+ ul.icons li a {
564
+ text-decoration: none;
565
+ position: relative;
566
+ display: inline-block;
567
+ width: 3.75em;
568
+ height: 3.75em;
569
+ border-radius: 100%;
570
+ border: solid 1px #c8cccf;
571
+ line-height: 3.75em;
572
+ overflow: hidden;
573
+ text-align: center;
574
+ text-indent: 3.75em;
575
+ white-space: nowrap;
576
+ }
577
+
578
+ ul.icons li a:before {
579
+ -moz-osx-font-smoothing: grayscale;
580
+ -webkit-font-smoothing: antialiased;
581
+ font-family: FontAwesome;
582
+ font-style: normal;
583
+ font-weight: normal;
584
+ text-transform: none !important;
585
+ }
586
+
587
+ ul.icons li span {
588
+ font-size: 0.7em;
589
+ padding: 0;
590
+ margin: 0;
591
+ }
592
+
593
+ ul.icons li a:before {
594
+ color: #ffffff;
595
+ text-shadow: 1.25px 0px 0px #c8cccf, -1.25px 0px 0px #c8cccf, 0px 1.25px 0px #c8cccf, 0px -1.25px 0px #c8cccf;
596
+ }
597
+
598
+ ul.icons li a:hover:before {
599
+ text-shadow: 1.25px 0px 0px #ff7496, -1.25px 0px 0px #ff7496, 0px 1.25px 0px #ff7496, 0px -1.25px 0px #ff7496;
600
+ }
601
+
602
+ ul.icons li a:before {
603
+ position: absolute;
604
+ top: 0;
605
+ left: 0;
606
+ width: inherit;
607
+ height: inherit;
608
+ font-size: 1.85rem;
609
+ line-height: inherit;
610
+ text-align: center;
611
+ text-indent: 0;
612
+ }
613
+
614
+ ul.icons li a:hover {
615
+ border-color: #ff7496;
616
+ }
617
+
618
+ @media screen and (max-width: 480px) {
619
+
620
+ ul.icons li a:before {
621
+ font-size: 1.5rem;
622
+ }
623
+
624
+ }
625
+
626
+ ul.actions {
627
+ cursor: default;
628
+ list-style: none;
629
+ padding-left: 0;
630
+ }
631
+
632
+ ul.actions li {
633
+ display: inline-block;
634
+ padding: 0 0.75em 0 0;
635
+ vertical-align: middle;
636
+ }
637
+
638
+ ul.actions li:last-child {
639
+ padding-right: 0;
640
+ }
641
+
642
+ dl {
643
+ margin: 0 0 1.5em 0;
644
+ }
645
+
646
+ dl dt {
647
+ display: block;
648
+ margin: 0 0 0.75em 0;
649
+ }
650
+
651
+ dl dd {
652
+ margin-left: 1.5em;
653
+ }
654
+
655
+ /* Button */
656
+
657
+ input[type="submit"],
658
+ input[type="reset"],
659
+ input[type="button"],
660
+ button,
661
+ .button {
662
+ -moz-appearance: none;
663
+ -webkit-appearance: none;
664
+ -ms-appearance: none;
665
+ appearance: none;
666
+ -moz-transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.2s ease-in-out;
667
+ -webkit-transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.2s ease-in-out;
668
+ -ms-transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.2s ease-in-out;
669
+ transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.2s ease-in-out;
670
+ display: inline-block;
671
+ height: 2.75em;
672
+ line-height: 2.75em;
673
+ padding: 0 1.5em;
674
+ background-color: transparent;
675
+ border-radius: 4px;
676
+ border: solid 1px #c8cccf;
677
+ color: #414f57 !important;
678
+ cursor: pointer;
679
+ text-align: center;
680
+ text-decoration: none;
681
+ white-space: nowrap;
682
+ }
683
+
684
+ input[type="submit"]:hover,
685
+ input[type="reset"]:hover,
686
+ input[type="button"]:hover,
687
+ button:hover,
688
+ .button:hover {
689
+ border-color: #ff7496;
690
+ color: #ff7496 !important;
691
+ }
692
+
693
+ input[type="submit"].icon,
694
+ input[type="reset"].icon,
695
+ input[type="button"].icon,
696
+ button.icon,
697
+ .button.icon {
698
+ padding-left: 1.35em;
699
+ }
700
+
701
+ input[type="submit"].icon:before,
702
+ input[type="reset"].icon:before,
703
+ input[type="button"].icon:before,
704
+ button.icon:before,
705
+ .button.icon:before {
706
+ margin-right: 0.5em;
707
+ }
708
+
709
+ input[type="submit"].fit,
710
+ input[type="reset"].fit,
711
+ input[type="button"].fit,
712
+ button.fit,
713
+ .button.fit {
714
+ display: block;
715
+ width: 100%;
716
+ margin: 0 0 0.75em 0;
717
+ }
718
+
719
+ input[type="submit"].small,
720
+ input[type="reset"].small,
721
+ input[type="button"].small,
722
+ button.small,
723
+ .button.small {
724
+ font-size: 0.8em;
725
+ }
726
+
727
+ input[type="submit"].big,
728
+ input[type="reset"].big,
729
+ input[type="button"].big,
730
+ button.big,
731
+ .button.big {
732
+ font-size: 1.35em;
733
+ }
734
+
735
+ input[type="submit"].disabled, input[type="submit"]:disabled,
736
+ input[type="reset"].disabled,
737
+ input[type="reset"]:disabled,
738
+ input[type="button"].disabled,
739
+ input[type="button"]:disabled,
740
+ button.disabled,
741
+ button:disabled,
742
+ .button.disabled,
743
+ .button:disabled {
744
+ -moz-pointer-events: none;
745
+ -webkit-pointer-events: none;
746
+ -ms-pointer-events: none;
747
+ pointer-events: none;
748
+ opacity: 0.5;
749
+ }
750
+
751
+ /* Main */
752
+
753
+ #main {
754
+ position: relative;
755
+ max-width: 100%;
756
+ min-width: 27em;
757
+ padding: 4.5em 3em 3em 3em ;
758
+ background: #ffffff;
759
+ border-radius: 4px;
760
+ cursor: default;
761
+ opacity: 0.95;
762
+ text-align: center;
763
+ -moz-transform-origin: 50% 50%;
764
+ -webkit-transform-origin: 50% 50%;
765
+ -ms-transform-origin: 50% 50%;
766
+ transform-origin: 50% 50%;
767
+ -moz-transform: rotateX(0deg);
768
+ -webkit-transform: rotateX(0deg);
769
+ -ms-transform: rotateX(0deg);
770
+ transform: rotateX(0deg);
771
+ -moz-transition: opacity 1s ease, -moz-transform 1s ease;
772
+ -webkit-transition: opacity 1s ease, -webkit-transform 1s ease;
773
+ -ms-transition: opacity 1s ease, -ms-transform 1s ease;
774
+ transition: opacity 1s ease, transform 1s ease;
775
+ }
776
+
777
+ #main .avatar {
778
+ position: relative;
779
+ display: block;
780
+ margin-bottom: 1.5em;
781
+ }
782
+
783
+ #main .avatar img {
784
+ display: block;
785
+ margin: 0 auto;
786
+ box-shadow: 0 0 0 1.5em #ffffff;
787
+ background-color: white;
788
+ }
789
+
790
+ #main .avatar:before {
791
+ content: '';
792
+ display: block;
793
+ position: absolute;
794
+ top: 50%;
795
+ left: -3em;
796
+ width: calc(100% + 6em);
797
+ height: 1px;
798
+ z-index: -1;
799
+ background: #c8cccf;
800
+ }
801
+
802
+ @media screen and (max-width: 480px) {
803
+
804
+ #main {
805
+ min-width: 0;
806
+ width: 100%;
807
+ padding: 4em 2em 2.5em 2em ;
808
+ }
809
+
810
+ #main .avatar:before {
811
+ left: -2em;
812
+ width: calc(100% + 4em);
813
+ }
814
+
815
+ }
816
+
817
+ body.is-loading #main {
818
+ opacity: 0;
819
+ -moz-transform: rotateX(15deg);
820
+ -webkit-transform: rotateX(15deg);
821
+ -ms-transform: rotateX(15deg);
822
+ transform: rotateX(15deg);
823
+ }
824
+
825
+ /* Footer */
826
+
827
+ #footer {
828
+ -moz-align-self: -moz-flex-end;
829
+ -webkit-align-self: -webkit-flex-end;
830
+ -ms-align-self: -ms-flex-end;
831
+ align-self: flex-end;
832
+ width: 100%;
833
+ padding: 1.5em 0 0 0;
834
+ color: rgba(255, 255, 255, 0.75);
835
+ cursor: default;
836
+ text-align: center;
837
+ }
838
+
839
+ #footer .copyright {
840
+ margin: 0;
841
+ padding: 0;
842
+ font-size: 0.7em;
843
+ list-style: none;
844
+ }
845
+
846
+ #footer .copyright li {
847
+ display: inline-block;
848
+ margin: 0 0 0 0.45em;
849
+ padding: 0 0 0 0.85em;
850
+ border-left: solid 1px rgba(255, 255, 255, 0.5);
851
+ line-height: 1;
852
+ }
853
+
854
+ #footer .copyright li:first-child {
855
+ border-left: 0;
856
+ }
857
+
858
+ /* Wrapper */
859
+
860
+ body {
861
+ text-align: center;
862
+ }
863
+
864
+ #wrapper {
865
+ display: inline-block;
866
+ align-items: center;
867
+ perspective: 1000px;
868
+ position: relative;
869
+ min-height: 100%;
870
+ padding: 1.5em;
871
+ z-index: 2;
872
+ }
873
+
874
+ #wrapper > * {
875
+ z-index: 1;
876
+ }
877
+
878
+ #wrapper:before {
879
+ content: '';
880
+ display: block;
881
+ }
882
+
883
+ @media screen and (max-width: 360px) {
884
+
885
+ #wrapper {
886
+ padding: 0.75em;
887
+ }
888
+
889
+ }
890
+
891
+ body.is-ie #wrapper {
892
+ height: 100%;
893
+ }
894
+
895
+
896
+
897
+ .metadata {
898
+ display: none;
899
+ }
900
+
901
+ .license, .description {
902
+ font-size: 0.8em;
903
+ max-width: 400px;
904
+ display: inline-block;
905
+ }
906
+
907
+ .warning {
908
+ font-size: 0.8em;
909
+ max-width: 400px;
910
+ display: inline-block;
911
+ font-weight: bolder;
912
+ color: red;
913
+ margin-top: -50px;
914
+ font-family: sans-serif;
915
+ }
916
+
917
+ .logo {
918
+ max-width: 230px;
919
+ max-height: 80px;
920
+ }
921
+
922
+ .badge {
923
+ background-size: contain;
924
+ background-repeat: no-repeat;
925
+ background-position: center;
926
+ border-radius: initial !important;
927
+ border: none !important;
928
+ opacity: 0.5;
929
+ }
930
+
931
+ .badge:hover {
932
+ opacity: 1;
933
+ }
934
+ </style>
935
+ <style>
936
+ body {
937
+ background-image: url(data:image/png;base64,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), linear-gradient(60deg, rgba(255, 165, 150, 0.5) 5%, rgba(0, 228, 255, 0.35)), url("{{{backgroundImage.url}}}");
938
+ }
939
+ </style>
940
+
941
+ <!-- JSON-LD conforming to Google Structured Data specification. -->
942
+ <script type="application/ld+json">
943
+ {{{json}}}
944
+ </script>
945
+ </head>
946
+ <body class="is-loading">
947
+
948
+ <!-- Wrapper -->
949
+ <div id="wrapper" typeof="dcat:Dataset" resource="{{url}}">
950
+
951
+ <!-- Main -->
952
+ <section id="main">
953
+ <header>
954
+ <div>
955
+ <a href="{{publisher.url}}" about="{{publisher.url}}" property="foaf:homepage">
956
+ <span class="avatar" property="foaf:name" content="{{publisher.name}}"><img class="logo" src="{{publisher.logo.url}}" alt="" /></span>
957
+ </a>
958
+ </div>
959
+
960
+ <h1>Open Data</h1>
961
+
962
+ <h2 property="dct:title">{{name}}</h2>
963
+
964
+ <p class="description">{{description}}, published using <a href='https://www.openactive.io/'>OpenActive</a> <a href='https://www.openactive.io/realtime-paged-data-exchange/1.0/'>RPDE 1.0</a> and <a href='{{schemaVersion}}'>Model 2.0</a>.</p>
965
+ <p class="metadata" property="dct:description">{{description}}.</p>
966
+ <p class="metadata" property="dct:created" content='{{datePublished}}' datatype='xsd:dateTime'></p>
967
+ {{#keywords}}
968
+ <p class="metadata" property="dcat:keyword">{{.}}</p>
969
+ {{/keywords}}
970
+ <a class="metadata" href="http://purl.org/linked-data/sdmx/2009/code#freq-N" property="dct:accrualPeriodicity">Every minute</a>
971
+ <ul class="icons">
972
+ <li><a href="{{documentation}}" class="fa-info">Documentation</a><br /><span>Documentation</span></li>
973
+ <li><a href="{{discussionUrl}}" class="fa-comments">Discussion</a><br /><span>Discussion</span></li>
974
+ </ul>
975
+ </header>
976
+
977
+ <ul class="download">
978
+ {{#distribution}}
979
+ <li>
980
+ <a property='dcat:distribution' typeof='dcat:Distribution' href='{{contentUrl}}'>
981
+ <i class="fa fa-cloud-download"></i>
982
+ <span property="dct:title">{{name}}</span>
983
+ <span class="metadata" content='{{encodingFormat}}' property='dcat:mediaType'>OpenActive RPDE v1.0 Endpoints conforming to Modelling Specification 2.0.</span>
984
+ </a>
985
+ </li>
986
+ {{/distribution}}
987
+ </ul>
988
+
989
+ <footer>
990
+ <div class="license">
991
+ <span property="dct:license" resource="{{license}}">
992
+ This data is owned by <a property="dct:publisher" href="{{publisher.url}}">{{publisher.legalName}}</a> and is licensed under the
993
+ <a href="{{license}}"><span property="dct:title">Creative Commons Attribution Licence (CC-BY v4.0)</span></a>
994
+ for anyone to access, use and share;
995
+ </span>
996
+ <span property="dct:rights" resource="#rights" typeof="odrs:RightsStatement">
997
+ <span class="metadata" property="rdfs:label">Rights Statement</span>
998
+ <a class="metadata" href="{{license}}" property="odrs:dataLicense">Creative Commons Attribution Licence (CC-BY v4.0)</a>
999
+ <a class="metadata" href="{{license}}" property="odrs:contentLicense">Creative Commons Attribution Licence (CC-BY v4.0)</a>
1000
+ using attribution
1001
+ "<a href="{{url}}" property="odrs:attributionURL"><span property="odrs:attributionText">{{publisher.name}}</span></a>".
1002
+ </span>
1003
+ </div>
1004
+ <p></p>
1005
+ <span class="avatar"><a href="https://www.openactive.io/"><img src="https://www.openactive.io/assets/openactive-logo-small.png" width="100" alt="OpenActive" /></a></span>
1006
+ </footer>
1007
+ </section>
1008
+
1009
+ <!-- Footer -->
1010
+ <footer id="footer">
1011
+ <ul class="copyright">
1012
+ <li>{{#bookingService}}Platform: <a href="{{url}}">{{name}} {{softwareVersion}}</a>. {{/bookingService}}Design: <a href="http://html5up.net">HTML5 UP</a>.</li>
1013
+ </ul>
1014
+ </footer>
1015
+
1016
+ </div>
1017
+
1018
+ <!-- Scripts -->
1019
+ <script>if ('addEventListener' in window) { window.addEventListener('load', function () { document.body.className = document.body.className.replace(/\bis-loading\b/, ''); }); document.body.className += (navigator.userAgent.match(/(MSIE|rv:11\.0)/) ? ' is-ie' : ''); }</script>
1020
+ </body>
1021
+ </html>