123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- 'use strict';
- // Create an instance
- var wavesurfer;
- // Init & load
- document.addEventListener('DOMContentLoaded', function () {
- var options = {
- container : '#waveform',
- waveColor : 'violet',
- progressColor : 'purple',
- loaderColor : 'purple',
- cursorColor : 'navy',
- selectionColor: '#d0e9c6',
- loopSelection : false,
- plugins: [
- WaveSurfer.elan.create({
- url: 'transcripts/001z.xml',
- container: '#annotations',
- tiers: {
- Text: true,
- Comments: true
- }
- }),
- WaveSurfer.regions.create()
- ]
- };
- if (location.search.match('scroll')) {
- options.minPxPerSec = 100;
- options.scrollParent = true;
- }
- if (location.search.match('normalize')) {
- options.normalize = true;
- }
- // Init wavesurfer
- wavesurfer = WaveSurfer.create(options);
- /* Progress bar */
- (function () {
- var progressDiv = document.querySelector('#progress-bar');
- var progressBar = progressDiv.querySelector('.progress-bar');
- var showProgress = function (percent) {
- progressDiv.style.display = 'block';
- progressBar.style.width = percent + '%';
- };
- var hideProgress = function () {
- progressDiv.style.display = 'none';
- };
- wavesurfer.on('loading', showProgress);
- wavesurfer.on('ready', hideProgress);
- wavesurfer.on('destroy', hideProgress);
- wavesurfer.on('error', hideProgress);
- }());
- wavesurfer.elan.on('ready', function (data) {
- wavesurfer.load('transcripts/' + data.media.url);
- });
- wavesurfer.elan.on('select', function (start, end) {
- wavesurfer.backend.play(start, end);
- });
- wavesurfer.elan.on('ready', function () {
- var classList = wavesurfer.elan.container.querySelector('table').classList;
- [ 'table', 'table-striped', 'table-hover' ].forEach(function (cl) {
- classList.add(cl);
- });
- });
- var prevAnnotation, prevRow, region;
- var onProgress = function (time) {
- var annotation = wavesurfer.elan.getRenderedAnnotation(time);
- if (prevAnnotation != annotation) {
- prevAnnotation = annotation;
- region && region.remove();
- region = null;
- if (annotation) {
- // Highlight annotation table row
- var row = wavesurfer.elan.getAnnotationNode(annotation);
- prevRow && prevRow.classList.remove('success');
- prevRow = row;
- row.classList.add('success');
- var before = row.previousSibling;
- if (before) {
- wavesurfer.elan.container.scrollTop = before.offsetTop;
- }
- // Region
- region = wavesurfer.addRegion({
- start: annotation.start,
- end: annotation.end,
- resize: false,
- color: 'rgba(223, 240, 216, 0.7)'
- });
- }
- }
- };
- wavesurfer.on('audioprocess', onProgress);
- });
|