openactive-dataset_site 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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>