Widget:Pinyin chart scripts
Revision as of 02:35, 8 June 2015 by Mscottmoore (talk | contribs) (Moving pinyin chart scripts to widget)
<script> var audioEndedListener = function() {
var $audioDiv = $('.pinyin-table-audio-container'); if ($audioDiv.children().length>1) { $audioDiv.children().get(1).play(); } $(this).remove(); if ($audioDiv.children().length>1) { $audioDiv.children().get(1).pause(); $audioDiv.children().get(1).load(); } else { $('.playing-audio').removeClass('playing-audio'); }
}; var audioCanPlayListener = function() {
if (this===$('.pinyin-table-audio-container audio:last-child').get(0)) { console.log('Removing loading-audio class'); $('.pinyin-table').removeClass('loading-audio'); }
};
/* Add tone marks */ var vowelAddTone = function(vowel,number) {
var tones = ['āēīōūǖ', 'áéíóúǘ', 'ǎěǐǒǔǚ', 'àèìòùǜ'][number-1] return tones['aeiouü'.indexOf(vowel)]
}; var syllableAddTone = function(syllable,number) {
if (syllable.indexOf("a")!==-1) { return syllable.substr(0,syllable.indexOf("a")) + vowelAddTone('a',number) + syllable.substr(syllable.indexOf("a")+1,syllable.length); } else if (syllable.indexOf("e")!==-1) { return syllable.substr(0,syllable.indexOf("e")) + vowelAddTone('e',number) + syllable.substr(syllable.indexOf("e")+1,syllable.length); } else if (syllable.indexOf("ou")!==-1) { return syllable.substr(0,syllable.indexOf("o")) + vowelAddTone('e',number) + syllable.substr(syllable.indexOf("o")+1,syllable.length); } else { var vowels = 'aeiouü'; var vowelCount = 0 for (var i=0; i<syllable.length; i++) { if (vowels.indexOf(syllable[i])!==-1) { vowelCount++; } } if (vowelCount===1) { for (var i=0; i<vowels.length; i++) { if (syllable.indexOf(vowels[i])!==-1) { return syllable.substr(0,syllable.indexOf(vowels[i])) + vowelAddTone(syllable[syllable.indexOf(vowels[i])],number) + syllable.substr(syllable.indexOf(vowels[i])+1,syllable.length); } } } else { var first_vowel_index = 1000; for (var i=0; i<vowels.length; i++) { if (syllable.indexOf(vowels[i])!==-1 && syllable.indexOf(vowels[i])<first_vowel_index) { first_vowel_index = syllable.indexOf(vowels[i]) } } return syllable.substr(0,first_vowel_index+1) + vowelAddTone(syllable[first_vowel_index+1],number) + syllable.substr(first_vowel_index+2,syllable.length); } }
};
/*pinyin table scripts*/ $(document).ready( function() {
$('.table-link').hide(); $('.table-ipa').hide(); $('.table-zhuyin').hide(); $('.table-wade-giles').hide(); $('.col-placeholder').hide();
$('#pinyin-chart-settings .additional-settings').hide();
//Toggle additional settings $('#pinyin-chart-settings #additional-settings-collapse').click( function(e) { e.preventDefault(); if ($(this).text()==="Show more Settings") { $(this).text("Show less Settings"); $('#pinyin-chart-settings .additional-settings').slideDown(); } else { $(this).text("Show more Settings"); $('#pinyin-chart-settings .additional-settings').slideUp(); } });
//highlight row and col of hovered cell $('#pinyin-table td').hover( function() { if ($(this).children('div.table-pinyin').length && $('input[name="chart-mode"]:checked').val()==="audio") { $(this).addClass('table-extra-highlight'); $(this).siblings().addClass('table-highlight'); var rowIndex = $(this).prevAll().length+1; $('#pinyin-table tr :nth-child('+rowIndex+')').addClass('table-highlight'); }; }, function() { $(this).removeClass('table-extra-highlight') $('.table-highlight').removeClass('table-highlight'); }).click( function() { if ($(this).children('div.table-pinyin').length && $('input[name="chart-mode"]:checked').val()==="audio") { var tones=$('input[name=\'tone\']:checked').val(); var $audioDiv = $('.pinyin-table-audio-container'); $audioDiv.empty(); for (var i=0; i<tones.length; i++) { var sound_url = "http://resources.allsetlearning.com/pronwiki/resources/pinyin-audio/" + $(this).attr('id') + tones[i] + ".mp3" if (sound_url.indexOf('.C3.BC')!==-1) { sound_url = sound_url.substr(0,sound_url.indexOf('.C3.BC'))+'u%CC%88'+sound_url.substr(sound_url.indexOf('.C3.BC')+6,sound_url.length); }; $audioDiv.append("<audio src=\"" + sound_url + "\" type=\"audio/mpeg\"></audio>"); console.log(sound_url,0); }; for (var i=0; i<$audioDiv.children().length; i++) { $audioDiv.children().get(i).addEventListener("ended",audioEndedListener); $audioDiv.children().get(i).addEventListener("canplay",audioCanPlayListener); }; $audioDiv.children().get(0).pause(); $audioDiv.children().get(0).load(); $('.pinyin-table').addClass('loading-audio'); $('.playing-audio').removeClass('playing-audio'); $(this).addClass('playing-audio'); $audioDiv.children().get(0).play(); if ($audioDiv.children().length>1) { $audioDiv.children().get(1).pause(); $audioDiv.children().get(1).load(); }; }; });
//collapse column groups $('th.col-a, th.col-e, th.col-o, th.col-i, th.col-u, th.col-v').hover( function() { if ($(this).hasClass('col-a')) { var thClass='col-a'; } else if ($(this).hasClass('col-e')) { var thClass='col-e'; } else if ($(this).hasClass('col-o')) { var thClass='col-o'; } else if ($(this).hasClass('col-i')) { var thClass='col-i'; } else if ($(this).hasClass('col-u')) { var thClass='col-u'; } else if ($(this).hasClass('col-v')) { var thClass='col-v'; }; $('th.'+thClass).addClass('table-selected'); }, function() { $('.table-selected').removeClass('table-selected'); }).click( function() { if ($(this).hasClass('col-a')) { var thClass='col-a'; } else if ($(this).hasClass('col-e')) { var thClass='col-e'; } else if ($(this).hasClass('col-o')) { var thClass='col-o'; } else if ($(this).hasClass('col-i')) { var thClass='col-i'; } else if ($(this).hasClass('col-u')) { var thClass='col-u'; } else if ($(this).hasClass('col-v')) { var thClass='col-v'; }; if ($(this).hasClass('col-placeholder')) { $('#pinyin-table .'+thClass).show(); $('#pinyin-table .'+thClass+'.col-placeholder').hide(); } else { $('#pinyin-table .'+thClass).hide(); $('#pinyin-table .'+thClass+'.col-placeholder').show(); }; });
//change text size $('div#pinyin-chart-settings div.additional-settings input[name="text-size"]').click( function() { var new_size = $('input[name="text-size"]:checked').val(); console.log('Changing table size to '+new_size); $('.pinyin-table').removeClass('small').removeClass('medium').removeClass('large'); $('.pinyin-table').addClass(new_size); });
//change chart mode $('div#pinyin-chart-settings div.additional-settings input[name="chart-mode"]').click( function() { var new_mode = $('input[name="chart-mode"]:checked').val(); if (new_mode==="link") { $('.table-pinyin').hide(); $('.table-link').show(); } else { $('.table-pinyin').show(); $('.table-link').hide(); } });
//toggle showing ipa, zhuyin, wade-giles $('#table-toggle-ipa').click( function() { if ($(this).prop('checked')) { $('.table-ipa').show(); } else { $('.table-ipa').hide(); } }); $('#table-toggle-zhuyin').click( function() { if ($(this).prop('checked')) { $('.table-zhuyin').show(); } else { $('.table-zhuyin').hide(); } }); $('#table-toggle-wade-giles').click( function() { if ($(this).prop('checked')) { $('.table-wade-giles').show(); } else { $('.table-wade-giles').hide(); } });
}); </script>