Difference between revisions of "MediaWiki:Common.js"
From Conceptual Reconstructionism Project
Thaumasnot (talk | contribs) |
Thaumasnot (talk | contribs) |
||
| Line 2: | Line 2: | ||
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'); | |||
} | |||
}); | }); | ||
Revision as of 22:48, 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');
}
});