Difference between revisions of "MediaWiki:Common.js"
From Conceptual Reconstructionism Project
Thaumasnot (talk | contribs) |
Thaumasnot (talk | contribs) |
||
Line 9: | Line 9: | ||
this.htmlElement = htmlElement; | this.htmlElement = htmlElement; | ||
} | } | ||
} | }; | ||
class PlaybackData { | class PlaybackData { | ||
Line 19: | Line 19: | ||
this.playingTrack = null; | this.playingTrack = null; | ||
} | } | ||
} | }; | ||
let playbackData = new PlaybackData(); | let playbackData = new PlaybackData(); |
Revision as of 22:49, 18 December 2021
/* Any JavaScript here will be loaded for all users on every page load. */ class TimeSegment { constructor(track, segmentStart, segmentEnd, htmlElement) { this.track = track; this.segmentStart = segmentStart; this.segmentEnd = segmentEnd; this.htmlElement = htmlElement; } }; class PlaybackData { constructor() { this.stopTime = null; this.timeSegments = []; this.tracks = []; this.playingSegments = []; this.playingTrack = null; } }; let playbackData = new PlaybackData(); $(document).ready(function() { // Create one audio player per declared track. $('*[data-track]').each(function() { $('<figure></figure>').append($('<figcaption></figcaption>').text($(this).attr('data-track-title'))).appendTo($(this)).append( $('<audio></audio>').prop('controls', true).attr('preload', 'auto').attr('src', $(this).attr('data-track')) ); }); // Create hyperlinks out of reconstruction markup. $('*[data-def]').click(function() { var url = location.href; location.href = "#" + $(this).attr('data-def'); history.replaceState(null, null, url); }); // Update timing data. $('*[data-segment]').each(function() { let m = /(?<track>\d+\/)?((?<minuteStart>\d+):)?(?<secondStart>\d+(.\d*)?)-((?<minuteEnd>\d+):)?(?<secondEnd>\d+(.\d*)?)/.exec($(this).attr('data-segment')); }); if (m) { playbackData.timeSegments.append(new TimeSegment(parseInt(m.groups.track), parseInt(m.groups.minuteStart) * 60 + parseFloat(m.groups.secondStart), parseInt(m.groups.minuteEnd) * 60 + parseFloat(m.groups.secondEnd), $(this) )); } else { $(this).append('Wrong time segment'); } });