hr-design-system-handlebars 1.70.3 → 1.70.5
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.
- package/CHANGELOG.md +24 -0
- package/dist/assets/index.css +12 -3
- package/dist/assets/js/components/externalService/externalServiceDs.feature.js +153 -1
- package/dist/views/components/social_sharing/social_sharing_compact.hbs +1 -1
- package/dist/views/components/social_sharing/social_sharing_compact_icons.hbs +6 -6
- package/dist/views_static/components/social_sharing/social_sharing_compact.hbs +1 -1
- package/dist/views_static/components/social_sharing/social_sharing_compact_icons.hbs +6 -6
- package/package.json +1 -1
- package/src/assets/fixtures/content/copytext/copytext_externalservice.json +15 -0
- package/src/assets/fixtures/external_service/external_service.inc.json +15 -0
- package/src/stories/views/components/content/copytext/fixtures/copytext_externalservice.json +1 -1
- package/src/stories/views/components/externalService/externalServiceDs.feature.js +153 -1
- package/src/stories/views/components/externalService/external_service.stories.js +12 -1
- package/src/stories/views/components/externalService/fixtures/external_service_with_datapolicy.json +15 -0
- package/src/stories/views/components/social_sharing/social_sharing_compact.hbs +1 -1
- package/src/stories/views/components/social_sharing/social_sharing_compact_icons.hbs +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
# v1.70.5 (Wed Jun 12 2024)
|
|
2
|
+
|
|
3
|
+
#### 🐛 Bug Fix
|
|
4
|
+
|
|
5
|
+
- Europawahl: Externen Dienst für Ergebnisse einrichten [#942](https://github.com/mumprod/hr-design-system-handlebars/pull/942) ([@vascoeduardo](https://github.com/vascoeduardo))
|
|
6
|
+
|
|
7
|
+
#### Authors: 1
|
|
8
|
+
|
|
9
|
+
- Vasco ([@vascoeduardo](https://github.com/vascoeduardo))
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# v1.70.4 (Wed Jun 12 2024)
|
|
14
|
+
|
|
15
|
+
#### 🐛 Bug Fix
|
|
16
|
+
|
|
17
|
+
- better positioning and handling of copymessage [#941](https://github.com/mumprod/hr-design-system-handlebars/pull/941) ([@StefanVesper](https://github.com/StefanVesper))
|
|
18
|
+
|
|
19
|
+
#### Authors: 1
|
|
20
|
+
|
|
21
|
+
- SonicSoulSurfer ([@StefanVesper](https://github.com/StefanVesper))
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
1
25
|
# v1.70.3 (Tue Jun 11 2024)
|
|
2
26
|
|
|
3
27
|
#### 🐛 Bug Fix
|
package/dist/assets/index.css
CHANGED
|
@@ -1317,6 +1317,9 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
1317
1317
|
.-mt-6 {
|
|
1318
1318
|
margin-top: -1.5rem;
|
|
1319
1319
|
}
|
|
1320
|
+
.-mt-8 {
|
|
1321
|
+
margin-top: -2rem;
|
|
1322
|
+
}
|
|
1320
1323
|
.-mt-\[18px\] {
|
|
1321
1324
|
margin-top: -18px;
|
|
1322
1325
|
}
|
|
@@ -1362,6 +1365,12 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
1362
1365
|
.mb-8 {
|
|
1363
1366
|
margin-bottom: 2rem;
|
|
1364
1367
|
}
|
|
1368
|
+
.ml-0 {
|
|
1369
|
+
margin-left: 0px;
|
|
1370
|
+
}
|
|
1371
|
+
.ml-0\.5 {
|
|
1372
|
+
margin-left: 0.125rem;
|
|
1373
|
+
}
|
|
1365
1374
|
.ml-1 {
|
|
1366
1375
|
margin-left: 0.25rem;
|
|
1367
1376
|
}
|
|
@@ -3350,7 +3359,7 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
3350
3359
|
border-bottom-color: var(--color-secondary-ds);
|
|
3351
3360
|
}
|
|
3352
3361
|
.counter-reset {
|
|
3353
|
-
counter-reset:
|
|
3362
|
+
counter-reset: cnt1718195046691;
|
|
3354
3363
|
}
|
|
3355
3364
|
.hyphens-auto {
|
|
3356
3365
|
-webkit-hyphens: auto;
|
|
@@ -3729,7 +3738,7 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
3729
3738
|
--tw-ring-color: rgba(255, 255, 255, 0.5);
|
|
3730
3739
|
}
|
|
3731
3740
|
.-ordered {
|
|
3732
|
-
counter-increment:
|
|
3741
|
+
counter-increment: cnt1718195046691 1;
|
|
3733
3742
|
}
|
|
3734
3743
|
.-ordered::before {
|
|
3735
3744
|
position: absolute;
|
|
@@ -3745,7 +3754,7 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
3745
3754
|
letter-spacing: .0125em;
|
|
3746
3755
|
--tw-text-opacity: 1;
|
|
3747
3756
|
color: rgba(0, 0, 0, var(--tw-text-opacity));
|
|
3748
|
-
content: counter(
|
|
3757
|
+
content: counter(cnt1718195046691);
|
|
3749
3758
|
}
|
|
3750
3759
|
/*! ****************************/
|
|
3751
3760
|
/*! DataPolicy stuff */
|
|
@@ -102,7 +102,10 @@ const ExternalService = function (context) {
|
|
|
102
102
|
break
|
|
103
103
|
case 'wahlomat':
|
|
104
104
|
createWahlOMatEmbed()
|
|
105
|
-
break
|
|
105
|
+
break
|
|
106
|
+
case 'wahl-gemeinde-ergebnis':
|
|
107
|
+
createWahlGemeindeErgebnis()
|
|
108
|
+
break
|
|
106
109
|
default:
|
|
107
110
|
console.error('No JS Config for external service ' + id)
|
|
108
111
|
break
|
|
@@ -112,7 +115,156 @@ const ExternalService = function (context) {
|
|
|
112
115
|
loadIframe() //für alle Dienste die nicht der DSGVO Datapolicy unterliegen
|
|
113
116
|
}
|
|
114
117
|
}
|
|
118
|
+
const createWahlGemeindeErgebnis = function () {
|
|
119
|
+
let embedCode = options.embedCode,
|
|
120
|
+
cleanUrl,
|
|
121
|
+
wahlKreisVersionJsonUrl,
|
|
122
|
+
wahlkreis,
|
|
123
|
+
wahlid,
|
|
124
|
+
jsonResponse,
|
|
125
|
+
iFrameElement,
|
|
126
|
+
iframeHeight = 300
|
|
115
127
|
|
|
128
|
+
const cleanVariables = function (variable) {
|
|
129
|
+
while (variable.charAt(0) === '&') {
|
|
130
|
+
variable = variable.substring(1)
|
|
131
|
+
}
|
|
132
|
+
return variable
|
|
133
|
+
}
|
|
134
|
+
const extractDataFromEmbedCode = function () {
|
|
135
|
+
const parts = embedCode.split('*')
|
|
136
|
+
if (parts.length === 4) {
|
|
137
|
+
cleanUrl = cleanVariables(decodeURIComponent(parts[0].trim()))
|
|
138
|
+
wahlkreis = cleanVariables(decodeURIComponent(parts[1].trim()))
|
|
139
|
+
wahlid = cleanVariables(decodeURIComponent(parts[2].trim()))
|
|
140
|
+
wahlKreisVersionJsonUrl = cleanVariables(decodeURIComponent(parts[3].trim()))
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const loadIframe = function (version, url, wahlkreis) {
|
|
144
|
+
if (version) {
|
|
145
|
+
let iframeUrl = url.replace('{version}', version)
|
|
146
|
+
let iframe = document.createElement('iframe')
|
|
147
|
+
iframe.className = ''
|
|
148
|
+
iframe.style.border = 'none'
|
|
149
|
+
iframe.style.height = iframeHeight + 'px'
|
|
150
|
+
iframe.style.width = '100%'
|
|
151
|
+
iframe.setAttribute('webkitallowfullscreen', '')
|
|
152
|
+
iframe.setAttribute('mozallowfullscreen', '')
|
|
153
|
+
iframe.setAttribute('allowfullscreen', '')
|
|
154
|
+
iframe.setAttribute('scrolling', 'no')
|
|
155
|
+
iframe.setAttribute('frameborder', '0')
|
|
156
|
+
iframe.src = iframeUrl
|
|
157
|
+
iframe.id = 'wahl-gemeinde-ergebnis-' + wahlkreis
|
|
158
|
+
rootElement.innerHTML = ''
|
|
159
|
+
rootElement.insertBefore(iframe, null)
|
|
160
|
+
iFrameElement = document.getElementById('wahl-gemeinde-ergebnis-' + wahlkreis)
|
|
161
|
+
} else {
|
|
162
|
+
loadNoDataDiv('Es liegen zur Zeit noch keine Ergebnisse vor', 5)
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const loadNoDataDiv = function (text, timeout) {
|
|
166
|
+
let div = document.createElement('div')
|
|
167
|
+
div.className =
|
|
168
|
+
'p-5 c-externalService__wahl-gemeinde-ergebnis-no-result rounded-tl-hr rounded-br-hr bg-highlight-1'
|
|
169
|
+
div.innerHTML =
|
|
170
|
+
'<div class="text-2xl text-clusterTeaserHeadline font-titleCluster mb-2">' +
|
|
171
|
+
text +
|
|
172
|
+
'</div>' +
|
|
173
|
+
'<div class="flex flex-row" >' +
|
|
174
|
+
' <div class="">' +
|
|
175
|
+
' <span>Dieser Inhalt wird automatisch aktualisiert in</span>' +
|
|
176
|
+
' <span data-minutes>' +
|
|
177
|
+
timeout +
|
|
178
|
+
' </span>' +
|
|
179
|
+
' <span>Min</span>' +
|
|
180
|
+
' <span data-seconds>0</span>' +
|
|
181
|
+
' <span>Sek</span>' +
|
|
182
|
+
' </div>' +
|
|
183
|
+
'</div>'
|
|
184
|
+
rootElement.innerHTML = ''
|
|
185
|
+
rootElement.insertBefore(div, null)
|
|
186
|
+
countdownMinutes(timeout, fetchJsonData)
|
|
187
|
+
}
|
|
188
|
+
const resizeIframe = function (newheight) {
|
|
189
|
+
if (newheight !== iframeHeight) {
|
|
190
|
+
iFrameElement.style.height = newheight + 'px'
|
|
191
|
+
iframeHeight = newheight
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const processMessage = function (evt) {
|
|
195
|
+
if (evt.origin !== 'https://www.tagesschau.de') {
|
|
196
|
+
console.log('message', evt.origin + ' ist nicht vertrauenswürdig')
|
|
197
|
+
} else {
|
|
198
|
+
resizeIframe(evt.data)
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const initMessageEventListener = function () {
|
|
202
|
+
if (window.addEventListener) {
|
|
203
|
+
// For standards-compliant web browsers
|
|
204
|
+
window.addEventListener('message', processMessage, false)
|
|
205
|
+
} else {
|
|
206
|
+
window.attachEvent('onmessage', processMessage)
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const fetchJsonData = function () {
|
|
210
|
+
fetch(wahlKreisVersionJsonUrl, {
|
|
211
|
+
method: 'GET',
|
|
212
|
+
headers: {
|
|
213
|
+
Accept: 'application/json',
|
|
214
|
+
},
|
|
215
|
+
})
|
|
216
|
+
.then((response) => response.json())
|
|
217
|
+
.then((jsonData) =>
|
|
218
|
+
loadIframe(
|
|
219
|
+
jsonData.hasOwnProperty(wahlkreis) && jsonData[wahlkreis].v
|
|
220
|
+
? jsonData[wahlkreis].v
|
|
221
|
+
: null,
|
|
222
|
+
cleanUrl,
|
|
223
|
+
wahlkreis,
|
|
224
|
+
),
|
|
225
|
+
)
|
|
226
|
+
.catch(function () {
|
|
227
|
+
loadNoDataDiv('Es liegen zur Zeit noch keine Ergebnisse vor', 5)
|
|
228
|
+
console.log('No JSON Data Loaded')
|
|
229
|
+
})
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
function countdownMinutes(minutesToCountdown, callbackFunction) {
|
|
233
|
+
const second = 1000,
|
|
234
|
+
minute = second * 60,
|
|
235
|
+
hour = minute * 60,
|
|
236
|
+
day = hour * 24,
|
|
237
|
+
minuteElement = document.querySelector('[data-minutes]'),
|
|
238
|
+
secondElement = document.querySelector('[data-seconds]')
|
|
239
|
+
|
|
240
|
+
function AddMinutesToDate(date, minutes) {
|
|
241
|
+
return new Date(date.getTime() + minutes * 60000)
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
let countDown = AddMinutesToDate(new Date(), minutesToCountdown),
|
|
245
|
+
x = setInterval(function () {
|
|
246
|
+
let now = new Date().getTime(),
|
|
247
|
+
distance = countDown - now
|
|
248
|
+
|
|
249
|
+
if (minuteElement != null) {
|
|
250
|
+
minuteElement.innerText = Math.floor((distance % hour) / minute)
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (secondElement != null) {
|
|
254
|
+
secondElement.innerText = Math.floor((distance % minute) / second)
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
if (distance < 1000) {
|
|
258
|
+
callbackFunction()
|
|
259
|
+
clearInterval(x)
|
|
260
|
+
}
|
|
261
|
+
}, second)
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
extractDataFromEmbedCode()
|
|
265
|
+
initMessageEventListener()
|
|
266
|
+
fetchJsonData()
|
|
267
|
+
}
|
|
116
268
|
const createWahlOMatEmbed = function () {
|
|
117
269
|
|
|
118
270
|
const divTag = document.createElement('div')
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<div :class="{ 'flex justify-start col-full sm:col-main relative': $store.sharingIsVisible == false }">
|
|
12
12
|
<div :style="($store.footerIsVisible && !$screen('lg')) && {bottom:$store.sharingBottomPos.current}"
|
|
13
13
|
:class="{ 'bottom-[19px] flex-col absolute mt-3 rounded-md': $store.sharingIsVisible == false && $store.footerIsVisible == false,
|
|
14
|
-
'flex-col absolute mt-3' : $store.footerIsVisible == true }"
|
|
14
|
+
'flex-col absolute mt-3' : !$screen('lg') && $store.footerIsVisible == true && window.innerHeight > document.querySelector('#content').offsetHeight + document.querySelector('.sb-main-navigation').offsetHeight + (window.innerHeight - document.querySelector('footer').offsetTop) - document.querySelector('footer').offsetHeight}"
|
|
15
15
|
class="flex self-center gap-3 bg-white left-5">
|
|
16
16
|
<button
|
|
17
17
|
class="order-2 p-2 text-white border border-button bg-button ds-button font-heading hover:bg-button--dark hover:border-button--dark active:bg-button--dark group"
|
|
@@ -70,17 +70,17 @@
|
|
|
70
70
|
>
|
|
71
71
|
{{~> components/base/image/icon _addClass="w-full h-full fill-link hover:scale-105" _icon="copy-ds" _iconmap="icons" ~}}
|
|
72
72
|
</a>
|
|
73
|
+
<div class="absolute flex flex-row items-center justify-start hidden w-auto h-8 -mt-8 ml-0.5 text-xs bg-white whitespace-nowrap js-copyMessage sm480:text-sm font-headingSerif dark:text-text-dark">
|
|
74
|
+
{{~> components/base/image/icon _addClass="w-7 h-7 text-green-600 mr-2" _icon="status-done" _iconmap="icons" ~}}
|
|
75
|
+
{{loca "share_copy_message" }}
|
|
76
|
+
</div>
|
|
73
77
|
</li>
|
|
74
|
-
<div class="absolute flex flex-row items-center justify-end hidden w-full h-8 text-xs bg-white js-copyMessage sm480:text-sm font-headingSerif dark:text-text-dark">
|
|
75
|
-
{{~> components/base/image/icon _addClass="w-6 h-6 text-green-600 mr-2" _icon="status-done" _iconmap="icons" ~}}
|
|
76
|
-
{{loca "share_copy_message" }}
|
|
77
|
-
</div>
|
|
78
|
-
|
|
79
78
|
<script>
|
|
80
79
|
function copyHandler(){
|
|
81
80
|
return {
|
|
82
81
|
copyToClipboard(event) {
|
|
83
|
-
const
|
|
82
|
+
const clickedContainer = event.currentTarget.parentNode
|
|
83
|
+
const messageDiv = clickedContainer.querySelector('.js-copyMessage')
|
|
84
84
|
const el = document.createElement('textarea')
|
|
85
85
|
el.value = window.location.href
|
|
86
86
|
el.setAttribute('readonly', '')
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<div :class="{ 'flex justify-start col-full sm:col-main relative': $store.sharingIsVisible == false }">
|
|
12
12
|
<div :style="($store.footerIsVisible && !$screen('lg')) && {bottom:$store.sharingBottomPos.current}"
|
|
13
13
|
:class="{ 'bottom-[19px] flex-col absolute mt-3 rounded-md': $store.sharingIsVisible == false && $store.footerIsVisible == false,
|
|
14
|
-
'flex-col absolute mt-3' : $store.footerIsVisible == true }"
|
|
14
|
+
'flex-col absolute mt-3' : !$screen('lg') && $store.footerIsVisible == true && window.innerHeight > document.querySelector('#content').offsetHeight + document.querySelector('.sb-main-navigation').offsetHeight + (window.innerHeight - document.querySelector('footer').offsetTop) - document.querySelector('footer').offsetHeight}"
|
|
15
15
|
class="flex self-center gap-3 bg-white left-5">
|
|
16
16
|
<button
|
|
17
17
|
class="order-2 p-2 text-white border border-button bg-button ds-button font-heading hover:bg-button--dark hover:border-button--dark active:bg-button--dark group"
|
|
@@ -70,17 +70,17 @@
|
|
|
70
70
|
>
|
|
71
71
|
{{~> components/base/image/icon _addClass="w-full h-full fill-link hover:scale-105" _icon="copy-ds" _iconmap="icons" ~}}
|
|
72
72
|
</a>
|
|
73
|
+
<div class="absolute flex flex-row items-center justify-start hidden w-auto h-8 -mt-8 ml-0.5 text-xs bg-white whitespace-nowrap js-copyMessage sm480:text-sm font-headingSerif dark:text-text-dark">
|
|
74
|
+
{{~> components/base/image/icon _addClass="w-7 h-7 text-green-600 mr-2" _icon="status-done" _iconmap="icons" ~}}
|
|
75
|
+
{{loca "share_copy_message" }}
|
|
76
|
+
</div>
|
|
73
77
|
</li>
|
|
74
|
-
<div class="absolute flex flex-row items-center justify-end hidden w-full h-8 text-xs bg-white js-copyMessage sm480:text-sm font-headingSerif dark:text-text-dark">
|
|
75
|
-
{{~> components/base/image/icon _addClass="w-6 h-6 text-green-600 mr-2" _icon="status-done" _iconmap="icons" ~}}
|
|
76
|
-
{{loca "share_copy_message" }}
|
|
77
|
-
</div>
|
|
78
|
-
|
|
79
78
|
<script>
|
|
80
79
|
function copyHandler(){
|
|
81
80
|
return {
|
|
82
81
|
copyToClipboard(event) {
|
|
83
|
-
const
|
|
82
|
+
const clickedContainer = event.currentTarget.parentNode
|
|
83
|
+
const messageDiv = clickedContainer.querySelector('.js-copyMessage')
|
|
84
84
|
const el = document.createElement('textarea')
|
|
85
85
|
el.value = window.location.href
|
|
86
86
|
el.setAttribute('readonly', '')
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"repository": "https://github.com/szuelch/hr-design-system-handlebars",
|
|
9
|
-
"version": "1.70.
|
|
9
|
+
"version": "1.70.5",
|
|
10
10
|
"scripts": {
|
|
11
11
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
12
12
|
"storybook": "storybook dev -p 6006 public",
|
|
@@ -4,6 +4,21 @@
|
|
|
4
4
|
"isHeadline": true,
|
|
5
5
|
"text": "Copytext mit externen Diensten"
|
|
6
6
|
},
|
|
7
|
+
{
|
|
8
|
+
"isHeadline": true,
|
|
9
|
+
"text": "Wahl Gemeinde Ergebnis"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"paragraphBoxItem": {
|
|
13
|
+
"isExternalService": true,
|
|
14
|
+
"toModel": {
|
|
15
|
+
"externalService": {
|
|
16
|
+
"@->jsoninclude": "external_service/external_service.inc.json",
|
|
17
|
+
"@->contentpath": "Wahl_Gemeinde_Ergebnis"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
7
22
|
{
|
|
8
23
|
"isHeadline": true,
|
|
9
24
|
"text": "360Grad"
|
|
@@ -245,5 +245,20 @@
|
|
|
245
245
|
"setResponsiveIframe": false,
|
|
246
246
|
"setTimedReloadIframe": false,
|
|
247
247
|
"setTimeForReload": ""
|
|
248
|
+
},
|
|
249
|
+
"Wahl_Gemeinde_Ergebnis": {
|
|
250
|
+
"externalServiceConfig": {
|
|
251
|
+
"makeConfigurable": false,
|
|
252
|
+
"embedAsIFrame": false,
|
|
253
|
+
"externalServiceId": "wahl-gemeinde-ergebnis",
|
|
254
|
+
"externalServiceEmbedType": "js",
|
|
255
|
+
"externalServiceName": "wahl-gemeinde-ergebnis"
|
|
256
|
+
},
|
|
257
|
+
"serviceUrl": "https://www.tagesschau.de/wahl/archiv/2024-06-09-EP-DE/charts/wahlkreis-detail/G06412000-{version}.shtml?externalEmbed*G06412000*&2024-06-09-EP-DE*&https%3A%2F%2Fwww.hessenschau.de%2Fpolitik%2Flandtagswahl%2Fkandidatencheck%2Fwk-versions.json",
|
|
258
|
+
"fixedHeight": "",
|
|
259
|
+
"aspectRatio": "",
|
|
260
|
+
"setResponsiveIframe": false,
|
|
261
|
+
"setTimedReloadIframe": false,
|
|
262
|
+
"setTimeForReload": ""
|
|
248
263
|
}
|
|
249
264
|
}
|
package/src/stories/views/components/content/copytext/fixtures/copytext_externalservice.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"copytextParagraph":[{"isHeadline":true,"text":"Copytext mit externen Diensten"},{"isHeadline":true,"text":"360Grad"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":true,"externalServiceId":"360grad","externalServiceEmbedType":"iFrame","externalServiceName":"360 Grad"},"serviceUrl":"https://static.hr.de/hessenschau/360/tour-altstadt/360Tour-altstadt-final1.html","aspectRatio":"100","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"ARD-Mediathek (Video)"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"ard_mediathek","externalServiceEmbedType":"iFrame","externalServiceName":"ARD Mediathek (Video)"},"serviceUrl":"https://www.ardmediathek.de/embed/Y3JpZDovL2Z1bmsubmV0LzExNzkwL3ZpZGVvLzE3NzQ2NzU?clientType=hr","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"ARTE Concert 2.0"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"arte_concert_new","externalServiceEmbedType":"iFrame","externalServiceName":"Arte Concert 2.0"},"serviceUrl":"https://www.arte.tv/player/v5/index.php?json_url=https%3A%2F%2Fapi.arte.tv%2Fapi%2Fplayer%2Fv2%2Fconfig%2Fde%2F116593-005-A&lang=de&autoplay=false&mute=0","aspectRatio":"16x9","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Bundesliga Audiostream"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":true,"externalServiceId":"bundesligaAudiostream","externalServiceEmbedType":"iFrame","externalServiceName":"Bundesliga Audiostream"},"serviceUrl":"https://livecenter.sportschau.de/iframe/spielplan-kompakt/co3/md11/////","aspectRatio":"9x16","fixedHeight":"600","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Datawrapper CDN"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":false,"externalServiceId":"datawrapper_cdn","externalServiceEmbedType":"js","externalServiceName":"Datawrapper (Datengrafik)"},"serviceUrl":"https://datawrapper.dwcdn.net/IC3Xn/1/","fixedHeight":"380","setResponsiveIframe":true,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Esri Karte"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"esri","externalServiceEmbedType":"iFrame","externalServiceName":"Esri (Notfallkarte)"},"serviceUrl":"https://arcg.is/1aW0au0","aspectRatio":"100","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":"","externalServiceCaption":"Notfallkarte"}}}},{"isHeadline":true,"text":"Facebook"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":false,"externalServiceId":"facebook-post","externalServiceEmbedType":"js","externalServiceName":"Facebook"},"serviceUrl":"https://www.facebook.com/ZooFFM/posts/1926440010874354","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Flourish"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"flourish","externalServiceEmbedType":"iFrame","externalServiceName":"Flourish (Datengrafik)"},"serviceUrl":"https://public.flourish.studio/story/18361/embed","fixedHeight":"550","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Giphy"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"giphy","externalServiceEmbedType":"iFrame","externalServiceName":"Giphy (animiertes GIF)"},"serviceUrl":"https://giphy.com/embed/ONxw4niC96zwk","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Instagram"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":false,"externalServiceId":"instagram","externalServiceEmbedType":"js","externalServiceName":"Instagram"},"serviceUrl":"https://www.instagram.com/p/CEjxNt8lW4K/","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"X"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":false,"externalServiceId":"twitter-post","externalServiceEmbedType":"js","externalServiceName":"X"},"serviceUrl":"https://twitter.com/tagesthemen/status/1578122540362465299","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Vimeo"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"vimeo","externalServiceEmbedType":"iFrame","externalServiceName":"Vimeo (Video)"},"serviceUrl":"https://player.vimeo.com/video/438111654","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Youtube"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"youtube","externalServiceEmbedType":"iFrame","externalServiceName":"YouTube (Video)"},"serviceUrl":"https://www.youtube-nocookie.com/embed/LMjXHYHZtrE?rel=0","aspectRatio":"16x9","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Youtube 360°"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"youtube360","externalServiceEmbedType":"iFrame","externalServiceName":"YouTube 360 (360° Video)"},"serviceUrl":"https://www.youtube-nocookie.com/embed/yT1pyf9oXGk","aspectRatio":"16x9","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":"","externalServiceCaption":"Eine Demo der Virtual Reality-Inszenierung '2049: Zeitreise Mobilität'"}}}},{"isHeadline":true,"text":"Statischer Dienst"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":true,"externalServiceId":"staticService","externalServiceEmbedType":"iFrame","externalServiceName":"Statischer Dienst"},"serviceUrl":"https://static.hr.de/hessenschau/btw21/linientool/unternehmensgruendung","fixedHeight":"1000","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Wahlmonitor"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":false,"externalServiceId":"wahlmonitor","externalServiceEmbedType":"js","externalServiceName":"Wahlmonitor"},"serviceUrl":"https://www.tagesschau.de/wahl/monitor-15/4e1_monitor_embed.js*data-externalembed=true data-electionid=2023-10-08-LT-DE-HE data-ratio=43 data-arrows=1 data-hideLinkContainer=1 data-lra=hr data-tagesschau=1","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Wahlkreiskarte"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":false,"externalServiceId":"wahlkreiskarte","externalServiceEmbedType":"js","externalServiceName":"Wahlkreiskarte"},"serviceUrl":"https://www.tagesschau.de/wahl/karte21/current/4e1_karte_embed.js*data-electionid=2023-10-08-LT-DE-HE data-y= data-a=K data-k= data-p= data-elements= data-site= data-q=","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Koalitionsrechner"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":true,"externalServiceId":"koalitionsrechner","externalServiceEmbedType":"iFrame","externalServiceName":"Koalitionsrechner"},"serviceUrl":"https://www.tagesschau.de/wahl/koalitionsrechner/2023-10-08-LT-DE-HE-koalitionsrechner_embed.shtml","fixedHeight":"550","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}}],"dataPolicy":{"serviceList":[{"key":"ard_mediathek","value":"ARD Mediathek (Video)"},{"key":"arte_concert","value":"Arte Concert"},{"key":"arte_concert_new","value":"Arte Concert 2.0"},{"key":"datawrapper_cdn","value":"Datawrapper (Datengrafik)"},{"key":"esri","value":"Esri (Notfallkarte)"},{"key":"facebook-post","value":"Facebook"},{"key":"flourish","value":"Flourish (Datengrafik)"},{"key":"giphy","value":"Giphy (animiertes GIF)"},{"key":"instagram","value":"Instagram"},{"key":"twitter-post","value":"Twitter"},{"key":"vimeo","value":"Vimeo (Video)"},{"key":"youtube","value":"YouTube (Video)"},{"key":"youtube360","value":"YouTube 360 (360° Video)"}]}}
|
|
1
|
+
{"copytextParagraph":[{"isHeadline":true,"text":"Copytext mit externen Diensten"},{"isHeadline":true,"text":"Wahl Gemeinde Ergebnis"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":false,"externalServiceId":"wahl-gemeinde-ergebnis","externalServiceEmbedType":"js","externalServiceName":"wahl-gemeinde-ergebnis"},"serviceUrl":"https://www.tagesschau.de/wahl/archiv/2024-06-09-EP-DE/charts/wahlkreis-detail/G06412000-{version}.shtml?externalEmbed*G06412000*&2024-06-09-EP-DE*&https%3A%2F%2Fwww.hessenschau.de%2Fpolitik%2Flandtagswahl%2Fkandidatencheck%2Fwk-versions.json","fixedHeight":"","aspectRatio":"","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"360Grad"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":true,"externalServiceId":"360grad","externalServiceEmbedType":"iFrame","externalServiceName":"360 Grad"},"serviceUrl":"https://static.hr.de/hessenschau/360/tour-altstadt/360Tour-altstadt-final1.html","aspectRatio":"100","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"ARD-Mediathek (Video)"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"ard_mediathek","externalServiceEmbedType":"iFrame","externalServiceName":"ARD Mediathek (Video)"},"serviceUrl":"https://www.ardmediathek.de/embed/Y3JpZDovL2Z1bmsubmV0LzExNzkwL3ZpZGVvLzE3NzQ2NzU?clientType=hr","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"ARTE Concert 2.0"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"arte_concert_new","externalServiceEmbedType":"iFrame","externalServiceName":"Arte Concert 2.0"},"serviceUrl":"https://www.arte.tv/player/v5/index.php?json_url=https%3A%2F%2Fapi.arte.tv%2Fapi%2Fplayer%2Fv2%2Fconfig%2Fde%2F116593-005-A&lang=de&autoplay=false&mute=0","aspectRatio":"16x9","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Bundesliga Audiostream"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":true,"externalServiceId":"bundesligaAudiostream","externalServiceEmbedType":"iFrame","externalServiceName":"Bundesliga Audiostream"},"serviceUrl":"https://livecenter.sportschau.de/iframe/spielplan-kompakt/co3/md11/////","aspectRatio":"9x16","fixedHeight":"600","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Datawrapper CDN"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":false,"externalServiceId":"datawrapper_cdn","externalServiceEmbedType":"js","externalServiceName":"Datawrapper (Datengrafik)"},"serviceUrl":"https://datawrapper.dwcdn.net/IC3Xn/1/","fixedHeight":"380","setResponsiveIframe":true,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Esri Karte"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"esri","externalServiceEmbedType":"iFrame","externalServiceName":"Esri (Notfallkarte)"},"serviceUrl":"https://arcg.is/1aW0au0","aspectRatio":"100","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":"","externalServiceCaption":"Notfallkarte"}}}},{"isHeadline":true,"text":"Facebook"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":false,"externalServiceId":"facebook-post","externalServiceEmbedType":"js","externalServiceName":"Facebook"},"serviceUrl":"https://www.facebook.com/ZooFFM/posts/1926440010874354","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Flourish"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"flourish","externalServiceEmbedType":"iFrame","externalServiceName":"Flourish (Datengrafik)"},"serviceUrl":"https://public.flourish.studio/story/18361/embed","fixedHeight":"550","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Giphy"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"giphy","externalServiceEmbedType":"iFrame","externalServiceName":"Giphy (animiertes GIF)"},"serviceUrl":"https://giphy.com/embed/ONxw4niC96zwk","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Instagram"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":false,"externalServiceId":"instagram","externalServiceEmbedType":"js","externalServiceName":"Instagram"},"serviceUrl":"https://www.instagram.com/p/CEjxNt8lW4K/","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"X"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":false,"externalServiceId":"twitter-post","externalServiceEmbedType":"js","externalServiceName":"X"},"serviceUrl":"https://twitter.com/tagesthemen/status/1578122540362465299","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Vimeo"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"vimeo","externalServiceEmbedType":"iFrame","externalServiceName":"Vimeo (Video)"},"serviceUrl":"https://player.vimeo.com/video/438111654","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Youtube"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"youtube","externalServiceEmbedType":"iFrame","externalServiceName":"YouTube (Video)"},"serviceUrl":"https://www.youtube-nocookie.com/embed/LMjXHYHZtrE?rel=0","aspectRatio":"16x9","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Youtube 360°"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":true,"embedAsIFrame":true,"externalServiceId":"youtube360","externalServiceEmbedType":"iFrame","externalServiceName":"YouTube 360 (360° Video)"},"serviceUrl":"https://www.youtube-nocookie.com/embed/yT1pyf9oXGk","aspectRatio":"16x9","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":"","externalServiceCaption":"Eine Demo der Virtual Reality-Inszenierung '2049: Zeitreise Mobilität'"}}}},{"isHeadline":true,"text":"Statischer Dienst"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":true,"externalServiceId":"staticService","externalServiceEmbedType":"iFrame","externalServiceName":"Statischer Dienst"},"serviceUrl":"https://static.hr.de/hessenschau/btw21/linientool/unternehmensgruendung","fixedHeight":"1000","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Wahlmonitor"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":false,"externalServiceId":"wahlmonitor","externalServiceEmbedType":"js","externalServiceName":"Wahlmonitor"},"serviceUrl":"https://www.tagesschau.de/wahl/monitor-15/4e1_monitor_embed.js*data-externalembed=true data-electionid=2023-10-08-LT-DE-HE data-ratio=43 data-arrows=1 data-hideLinkContainer=1 data-lra=hr data-tagesschau=1","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Wahlkreiskarte"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":false,"externalServiceId":"wahlkreiskarte","externalServiceEmbedType":"js","externalServiceName":"Wahlkreiskarte"},"serviceUrl":"https://www.tagesschau.de/wahl/karte21/current/4e1_karte_embed.js*data-electionid=2023-10-08-LT-DE-HE data-y= data-a=K data-k= data-p= data-elements= data-site= data-q=","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}},{"isHeadline":true,"text":"Koalitionsrechner"},{"paragraphBoxItem":{"isExternalService":true,"toModel":{"externalService":{"externalServiceConfig":{"makeConfigurable":false,"embedAsIFrame":true,"externalServiceId":"koalitionsrechner","externalServiceEmbedType":"iFrame","externalServiceName":"Koalitionsrechner"},"serviceUrl":"https://www.tagesschau.de/wahl/koalitionsrechner/2023-10-08-LT-DE-HE-koalitionsrechner_embed.shtml","fixedHeight":"550","setResponsiveIframe":false,"setTimedReloadIframe":false,"setTimeForReload":""}}}}],"dataPolicy":{"serviceList":[{"key":"ard_mediathek","value":"ARD Mediathek (Video)"},{"key":"arte_concert","value":"Arte Concert"},{"key":"arte_concert_new","value":"Arte Concert 2.0"},{"key":"datawrapper_cdn","value":"Datawrapper (Datengrafik)"},{"key":"esri","value":"Esri (Notfallkarte)"},{"key":"facebook-post","value":"Facebook"},{"key":"flourish","value":"Flourish (Datengrafik)"},{"key":"giphy","value":"Giphy (animiertes GIF)"},{"key":"instagram","value":"Instagram"},{"key":"twitter-post","value":"Twitter"},{"key":"vimeo","value":"Vimeo (Video)"},{"key":"youtube","value":"YouTube (Video)"},{"key":"youtube360","value":"YouTube 360 (360° Video)"}]}}
|
|
@@ -102,7 +102,10 @@ const ExternalService = function (context) {
|
|
|
102
102
|
break
|
|
103
103
|
case 'wahlomat':
|
|
104
104
|
createWahlOMatEmbed()
|
|
105
|
-
break
|
|
105
|
+
break
|
|
106
|
+
case 'wahl-gemeinde-ergebnis':
|
|
107
|
+
createWahlGemeindeErgebnis()
|
|
108
|
+
break
|
|
106
109
|
default:
|
|
107
110
|
console.error('No JS Config for external service ' + id)
|
|
108
111
|
break
|
|
@@ -112,7 +115,156 @@ const ExternalService = function (context) {
|
|
|
112
115
|
loadIframe() //für alle Dienste die nicht der DSGVO Datapolicy unterliegen
|
|
113
116
|
}
|
|
114
117
|
}
|
|
118
|
+
const createWahlGemeindeErgebnis = function () {
|
|
119
|
+
let embedCode = options.embedCode,
|
|
120
|
+
cleanUrl,
|
|
121
|
+
wahlKreisVersionJsonUrl,
|
|
122
|
+
wahlkreis,
|
|
123
|
+
wahlid,
|
|
124
|
+
jsonResponse,
|
|
125
|
+
iFrameElement,
|
|
126
|
+
iframeHeight = 300
|
|
115
127
|
|
|
128
|
+
const cleanVariables = function (variable) {
|
|
129
|
+
while (variable.charAt(0) === '&') {
|
|
130
|
+
variable = variable.substring(1)
|
|
131
|
+
}
|
|
132
|
+
return variable
|
|
133
|
+
}
|
|
134
|
+
const extractDataFromEmbedCode = function () {
|
|
135
|
+
const parts = embedCode.split('*')
|
|
136
|
+
if (parts.length === 4) {
|
|
137
|
+
cleanUrl = cleanVariables(decodeURIComponent(parts[0].trim()))
|
|
138
|
+
wahlkreis = cleanVariables(decodeURIComponent(parts[1].trim()))
|
|
139
|
+
wahlid = cleanVariables(decodeURIComponent(parts[2].trim()))
|
|
140
|
+
wahlKreisVersionJsonUrl = cleanVariables(decodeURIComponent(parts[3].trim()))
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const loadIframe = function (version, url, wahlkreis) {
|
|
144
|
+
if (version) {
|
|
145
|
+
let iframeUrl = url.replace('{version}', version)
|
|
146
|
+
let iframe = document.createElement('iframe')
|
|
147
|
+
iframe.className = ''
|
|
148
|
+
iframe.style.border = 'none'
|
|
149
|
+
iframe.style.height = iframeHeight + 'px'
|
|
150
|
+
iframe.style.width = '100%'
|
|
151
|
+
iframe.setAttribute('webkitallowfullscreen', '')
|
|
152
|
+
iframe.setAttribute('mozallowfullscreen', '')
|
|
153
|
+
iframe.setAttribute('allowfullscreen', '')
|
|
154
|
+
iframe.setAttribute('scrolling', 'no')
|
|
155
|
+
iframe.setAttribute('frameborder', '0')
|
|
156
|
+
iframe.src = iframeUrl
|
|
157
|
+
iframe.id = 'wahl-gemeinde-ergebnis-' + wahlkreis
|
|
158
|
+
rootElement.innerHTML = ''
|
|
159
|
+
rootElement.insertBefore(iframe, null)
|
|
160
|
+
iFrameElement = document.getElementById('wahl-gemeinde-ergebnis-' + wahlkreis)
|
|
161
|
+
} else {
|
|
162
|
+
loadNoDataDiv('Es liegen zur Zeit noch keine Ergebnisse vor', 5)
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const loadNoDataDiv = function (text, timeout) {
|
|
166
|
+
let div = document.createElement('div')
|
|
167
|
+
div.className =
|
|
168
|
+
'p-5 c-externalService__wahl-gemeinde-ergebnis-no-result rounded-tl-hr rounded-br-hr bg-highlight-1'
|
|
169
|
+
div.innerHTML =
|
|
170
|
+
'<div class="text-2xl text-clusterTeaserHeadline font-titleCluster mb-2">' +
|
|
171
|
+
text +
|
|
172
|
+
'</div>' +
|
|
173
|
+
'<div class="flex flex-row" >' +
|
|
174
|
+
' <div class="">' +
|
|
175
|
+
' <span>Dieser Inhalt wird automatisch aktualisiert in</span>' +
|
|
176
|
+
' <span data-minutes>' +
|
|
177
|
+
timeout +
|
|
178
|
+
' </span>' +
|
|
179
|
+
' <span>Min</span>' +
|
|
180
|
+
' <span data-seconds>0</span>' +
|
|
181
|
+
' <span>Sek</span>' +
|
|
182
|
+
' </div>' +
|
|
183
|
+
'</div>'
|
|
184
|
+
rootElement.innerHTML = ''
|
|
185
|
+
rootElement.insertBefore(div, null)
|
|
186
|
+
countdownMinutes(timeout, fetchJsonData)
|
|
187
|
+
}
|
|
188
|
+
const resizeIframe = function (newheight) {
|
|
189
|
+
if (newheight !== iframeHeight) {
|
|
190
|
+
iFrameElement.style.height = newheight + 'px'
|
|
191
|
+
iframeHeight = newheight
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const processMessage = function (evt) {
|
|
195
|
+
if (evt.origin !== 'https://www.tagesschau.de') {
|
|
196
|
+
console.log('message', evt.origin + ' ist nicht vertrauenswürdig')
|
|
197
|
+
} else {
|
|
198
|
+
resizeIframe(evt.data)
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const initMessageEventListener = function () {
|
|
202
|
+
if (window.addEventListener) {
|
|
203
|
+
// For standards-compliant web browsers
|
|
204
|
+
window.addEventListener('message', processMessage, false)
|
|
205
|
+
} else {
|
|
206
|
+
window.attachEvent('onmessage', processMessage)
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const fetchJsonData = function () {
|
|
210
|
+
fetch(wahlKreisVersionJsonUrl, {
|
|
211
|
+
method: 'GET',
|
|
212
|
+
headers: {
|
|
213
|
+
Accept: 'application/json',
|
|
214
|
+
},
|
|
215
|
+
})
|
|
216
|
+
.then((response) => response.json())
|
|
217
|
+
.then((jsonData) =>
|
|
218
|
+
loadIframe(
|
|
219
|
+
jsonData.hasOwnProperty(wahlkreis) && jsonData[wahlkreis].v
|
|
220
|
+
? jsonData[wahlkreis].v
|
|
221
|
+
: null,
|
|
222
|
+
cleanUrl,
|
|
223
|
+
wahlkreis,
|
|
224
|
+
),
|
|
225
|
+
)
|
|
226
|
+
.catch(function () {
|
|
227
|
+
loadNoDataDiv('Es liegen zur Zeit noch keine Ergebnisse vor', 5)
|
|
228
|
+
console.log('No JSON Data Loaded')
|
|
229
|
+
})
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
function countdownMinutes(minutesToCountdown, callbackFunction) {
|
|
233
|
+
const second = 1000,
|
|
234
|
+
minute = second * 60,
|
|
235
|
+
hour = minute * 60,
|
|
236
|
+
day = hour * 24,
|
|
237
|
+
minuteElement = document.querySelector('[data-minutes]'),
|
|
238
|
+
secondElement = document.querySelector('[data-seconds]')
|
|
239
|
+
|
|
240
|
+
function AddMinutesToDate(date, minutes) {
|
|
241
|
+
return new Date(date.getTime() + minutes * 60000)
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
let countDown = AddMinutesToDate(new Date(), minutesToCountdown),
|
|
245
|
+
x = setInterval(function () {
|
|
246
|
+
let now = new Date().getTime(),
|
|
247
|
+
distance = countDown - now
|
|
248
|
+
|
|
249
|
+
if (minuteElement != null) {
|
|
250
|
+
minuteElement.innerText = Math.floor((distance % hour) / minute)
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (secondElement != null) {
|
|
254
|
+
secondElement.innerText = Math.floor((distance % minute) / second)
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
if (distance < 1000) {
|
|
258
|
+
callbackFunction()
|
|
259
|
+
clearInterval(x)
|
|
260
|
+
}
|
|
261
|
+
}, second)
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
extractDataFromEmbedCode()
|
|
265
|
+
initMessageEventListener()
|
|
266
|
+
fetchJsonData()
|
|
267
|
+
}
|
|
116
268
|
const createWahlOMatEmbed = function () {
|
|
117
269
|
|
|
118
270
|
const divTag = document.createElement('div')
|
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
ExternalServiceContent
|
|
3
3
|
} from './external_service.data.js'
|
|
4
4
|
import externalService from './external_service_with_datapolicy_check.hbs'
|
|
5
|
+
import externalServiceNoDatapolicyCheck from './external_service.hbs'
|
|
5
6
|
|
|
6
7
|
const TemplatePageExternalService = (args, { globals: { theme } }) => {
|
|
7
8
|
// You can either use a function to create DOM elements or use a plain html string!
|
|
@@ -9,7 +10,12 @@ const TemplatePageExternalService = (args, { globals: { theme } }) => {
|
|
|
9
10
|
let brand = undefined !== theme ? theme : 'hessenschau'
|
|
10
11
|
return externalService({ brand, ...args })
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
+
const TemplatePageExternalServiceNoDatapolicyCheck = (args, { globals: { theme } }) => {
|
|
14
|
+
// You can either use a function to create DOM elements or use a plain html string!
|
|
15
|
+
// return `<div>${label}</div>`;
|
|
16
|
+
let brand = undefined !== theme ? theme : 'hessenschau'
|
|
17
|
+
return externalServiceNoDatapolicyCheck({ brand, ...args })
|
|
18
|
+
}
|
|
13
19
|
export default {
|
|
14
20
|
title: 'Komponenten/Externe Dienste',
|
|
15
21
|
argTypes: {},
|
|
@@ -53,4 +59,9 @@ export const ExterneDiensteDatawrapperContentRefresher = {
|
|
|
53
59
|
name: 'Externe Dienste Datawrapper mit ContentRefresher',
|
|
54
60
|
args: ExternalServiceContent.Datawrapper_CDN_NoResponsiveFixedHeightReload,
|
|
55
61
|
}
|
|
62
|
+
export const WahlGemeindeErgebnis = {
|
|
63
|
+
render: TemplatePageExternalServiceNoDatapolicyCheck.bind({}),
|
|
64
|
+
name: 'Externe Dienste Wahl Gemeinde Ergebnis',
|
|
65
|
+
args: ExternalServiceContent.Wahl_Gemeinde_Ergebnis,
|
|
66
|
+
}
|
|
56
67
|
|
package/src/stories/views/components/externalService/fixtures/external_service_with_datapolicy.json
CHANGED
|
@@ -208,5 +208,20 @@
|
|
|
208
208
|
"setTimedReloadIframe": false,
|
|
209
209
|
"setTimeForReload": "",
|
|
210
210
|
"externalServiceCaption": "Eine Demo der Virtual Reality-Inszenierung '2049: Zeitreise Mobilität'"
|
|
211
|
+
},
|
|
212
|
+
"Wahl_Gemeinde_Ergebnis": {
|
|
213
|
+
"externalServiceConfig": {
|
|
214
|
+
"makeConfigurable": false,
|
|
215
|
+
"embedAsIFrame": false,
|
|
216
|
+
"externalServiceId": "wahl-gemeinde-ergebnis",
|
|
217
|
+
"externalServiceEmbedType": "js",
|
|
218
|
+
"externalServiceName": "wahl-gemeinde-ergebnis"
|
|
219
|
+
},
|
|
220
|
+
"serviceUrl": "https://www.tagesschau.de/wahl/archiv/2024-06-09-EP-DE/charts/wahlkreis-detail/G06412000-{version}.shtml?externalEmbed*G06412000*&2024-06-09-EP-DE*&https%3A%2F%2Fwww.hessenschau.de%2Fpolitik%2Flandtagswahl%2Fkandidatencheck%2Fwk-versions.json",
|
|
221
|
+
"fixedHeight": "",
|
|
222
|
+
"aspectRatio": "",
|
|
223
|
+
"setResponsiveIframe": false,
|
|
224
|
+
"setTimedReloadIframe": false,
|
|
225
|
+
"setTimeForReload": ""
|
|
211
226
|
}
|
|
212
227
|
}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<div :class="{ 'flex justify-start col-full sm:col-main relative': $store.sharingIsVisible == false }">
|
|
12
12
|
<div :style="($store.footerIsVisible && !$screen('lg')) && {bottom:$store.sharingBottomPos.current}"
|
|
13
13
|
:class="{ 'bottom-[19px] flex-col absolute mt-3 rounded-md': $store.sharingIsVisible == false && $store.footerIsVisible == false,
|
|
14
|
-
'flex-col absolute mt-3' : $store.footerIsVisible == true }"
|
|
14
|
+
'flex-col absolute mt-3' : !$screen('lg') && $store.footerIsVisible == true && window.innerHeight > document.querySelector('#content').offsetHeight + document.querySelector('.sb-main-navigation').offsetHeight + (window.innerHeight - document.querySelector('footer').offsetTop) - document.querySelector('footer').offsetHeight}"
|
|
15
15
|
class="flex self-center gap-3 bg-white left-5">
|
|
16
16
|
<button
|
|
17
17
|
class="order-2 p-2 text-white border border-button bg-button ds-button font-heading hover:bg-button--dark hover:border-button--dark active:bg-button--dark group"
|
|
@@ -70,17 +70,17 @@
|
|
|
70
70
|
>
|
|
71
71
|
{{~> components/base/image/icon _addClass="w-full h-full fill-link hover:scale-105" _icon="copy-ds" _iconmap="icons" ~}}
|
|
72
72
|
</a>
|
|
73
|
+
<div class="absolute flex flex-row items-center justify-start hidden w-auto h-8 -mt-8 ml-0.5 text-xs bg-white whitespace-nowrap js-copyMessage sm480:text-sm font-headingSerif dark:text-text-dark">
|
|
74
|
+
{{~> components/base/image/icon _addClass="w-7 h-7 text-green-600 mr-2" _icon="status-done" _iconmap="icons" ~}}
|
|
75
|
+
{{loca "share_copy_message" }}
|
|
76
|
+
</div>
|
|
73
77
|
</li>
|
|
74
|
-
<div class="absolute flex flex-row items-center justify-end hidden w-full h-8 text-xs bg-white js-copyMessage sm480:text-sm font-headingSerif dark:text-text-dark">
|
|
75
|
-
{{~> components/base/image/icon _addClass="w-6 h-6 text-green-600 mr-2" _icon="status-done" _iconmap="icons" ~}}
|
|
76
|
-
{{loca "share_copy_message" }}
|
|
77
|
-
</div>
|
|
78
|
-
|
|
79
78
|
<script>
|
|
80
79
|
function copyHandler(){
|
|
81
80
|
return {
|
|
82
81
|
copyToClipboard(event) {
|
|
83
|
-
const
|
|
82
|
+
const clickedContainer = event.currentTarget.parentNode
|
|
83
|
+
const messageDiv = clickedContainer.querySelector('.js-copyMessage')
|
|
84
84
|
const el = document.createElement('textarea')
|
|
85
85
|
el.value = window.location.href
|
|
86
86
|
el.setAttribute('readonly', '')
|