diff options
Diffstat (limited to 'public/assets/js/lesson-features.js')
| -rw-r--r-- | public/assets/js/lesson-features.js | 55 |
1 files changed, 45 insertions, 10 deletions
diff --git a/public/assets/js/lesson-features.js b/public/assets/js/lesson-features.js index 369c8f7..3634aa3 100644 --- a/public/assets/js/lesson-features.js +++ b/public/assets/js/lesson-features.js @@ -1,5 +1,8 @@ const valid_codeblocks = [ // supported sort-code keys - 'youtube' + 'youtube', + 'spotify', + 'spotify-track', + 'world-data' ]; @@ -16,17 +19,21 @@ const symbol_escapes = [ var youtube_template = ( id => { - return '<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/'+ id +'?rel=0&controls=0" title="YouTube video player" frameborder="0" allow="clipboard-write; encrypted-media; picture-in-picture; web-share" allowfullscreen></iframe>' + return '<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/'+ id +'?rel=0&controls=0" title="YouTube video player" frameborder="0" allow="clipboard-write; encrypted-media; picture-in-picture; web-share" allowfullscreen></iframe>'; }); -/* - - -<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/6EA-MIYY1bg?controls=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +var spotify_template = ( id => { + return '<iframe style="border-radius:12px" src="https://open.spotify.com/embed/episode/'+ id +'?utm_source=generator" width="100%" height="152" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>'; +}); +var spotify_track = ( id => { + return '<iframe style="border-radius:12px" src="https://open.spotify.com/embed/track/'+ id +'?utm_source=generator" width="100%" height="152" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>'; +}); -*/ +var owid_template = ( id => { // our world in data (explorer) + return '<iframe src="https://ourworldindata.org/explorers/'+ id +'?zoomToSelection=true&hideControls=true" loading="lazy" style="width: 100%; height: 480px; border: 0px none;"></iframe>' +}); /** inject_codeblocks @@ -51,6 +58,8 @@ function inject_codeblocks(code) { // console.log(matches); var output = code; // use a copy of (source) code + + console.log(matches); matches.forEach( match => { // parse (every) match @@ -59,15 +68,41 @@ function inject_codeblocks(code) { // match[0] : `{{youtube=6EA-MIYY1bg}}` // match[1] : `youtube=6EA-MIYY1bg` // match[3] : the (source) code string - let blockparts = unescaped_str( match[1] ).trim().split('='); + + // let blockparts = unescaped_str( match[1] ).trim().split('='); + let blockparts = match[1].trim().split('='); let target = blockparts[0].toLowerCase(); let id = blockparts[1]; // let label = escaped_str(blockparts[1]); if (valid_codeblocks.includes(target)) { - if (target == 'youtube') { - var codeblock = youtube_template(id); + var codeblock = ''; + + console.log(target, id); + + switch (target) { + + case 'youtube': + codeblock = youtube_template(id); + break; + + case 'spotify': + codeblock = spotify_template(id); + break; + + case 'spotify-track': + codeblock = spotify_track(id); + break; + + case 'world-data': + codeblock = owid_template(id); + break; + + default: + codeblock = id; + } + output = output.replaceAll(match[0], codeblock); } |
