Optimize Code Block View toggling. Also auto-hide Code section for pages without code

This commit is contained in:
Gautham Warrier 2014-11-20 14:25:11 +05:30
parent 8c02c01831
commit 37226d4b66

View File

@ -5,15 +5,11 @@ $(function () {
$(this).next().slideToggle(); $(this).next().slideToggle();
}); });
// Bootstrap Table Class
$('table').addClass('table'); $('table').addClass('table');
// Responsive menu spinner
$('#menu-spinner-button').click(function () { $('#menu-spinner-button').click(function () {
$('#sub-nav-collapse').slideToggle(); $('#sub-nav-collapse').slideToggle();
}); });
// Catch browser resize
$(window).resize(function () { $(window).resize(function () {
// Remove transition inline style on large screens // Remove transition inline style on large screens
if ($(window).width() >= 768) if ($(window).width() >= 768)
@ -26,40 +22,47 @@ var t = $('#github-ribbon');
var a = $('article'); var a = $('article');
if (t[0] && a[0] && a[0].scrollHeight > $('.right-column').height()) t[0].style.right = '16px'; if (t[0] && a[0] && a[0].scrollHeight > $('.right-column').height()) t[0].style.right = '16px';
//Toggle Code Block Visibility function setCodeBlockStyle(x) {
function toggleCodeBlocks() { switch (x) {
var t = localStorage.getItem("toggleCodeStats") default:
t = (t + 1) % 3; case 0:
localStorage.setItem("toggleCodeStats", t); toggleCodeBlockBtn.innerHTML = "Show Code Blocks Inline";
var a = $('.content-page article'); codeBlockView.addClass('float-view');
var c = a.children().filter('pre'); codeBlocks.removeClass('hidden');
var d = $('.right-column'); break;
if (d.hasClass('float-view')) { case 1:
d.removeClass('float-view'); toggleCodeBlockBtn.innerHTML = "Hide Code Blocks";
$('#toggleCodeBlockBtn')[0].innerHTML = "Hide Code Blocks"; codeBlockView.removeClass('float-view');
} else { codeBlocks.removeClass('hidden');
if (c.hasClass('hidden')) { break;
d.addClass('float-view'); case 2:
c.removeClass('hidden'); toggleCodeBlockBtn.innerHTML = "Show Code Blocks";
$('#toggleCodeBlockBtn')[0].innerHTML = "Show Code Blocks Inline"; codeBlockView.removeClass('float-view');
} else { codeBlocks.addClass('hidden');
c.addClass('hidden'); break;
$('#toggleCodeBlockBtn')[0].innerHTML = "Show Code Blocks";
}
} }
} }
if (localStorage.getItem("toggleCodeStats") >= 0) { function toggleCodeBlocks() {
var t = localStorage.getItem("toggleCodeStats"); codeBlockState = (codeBlockState + 1) % 3;
if (t == 1) { localStorage.setItem("codeBlockState", codeBlockState);
toggleCodeBlocks(); setCodeBlockStyle(codeBlockState);
localStorage.setItem("toggleCodeStats", 1);
} }
if (t == 2) {
toggleCodeBlocks(); //Initialize CodeBlock Visibility Settings
toggleCodeBlocks(); $(function () {
localStorage.setItem("toggleCodeStats", 2); toggleCodeBlockBtn = $('#toggleCodeBlockBtn')[0];
} codeBlockView = $('.right-column');
} else { codeBlocks = $('.content-page article > pre');
localStorage.setItem("toggleCodeStats", 0); codeBlockState = localStorage.getItem("codeBlockState");
if (!codeBlockState) {
codeBlockState = 0;
localStorage.setItem("codeBlockState", codeBlockState);
} else codeBlockState = parseInt(codeBlockState);
if (!codeBlockView.size()) return;
if (!codeBlocks.size()) {
codeBlockState = 2;
toggleCodeBlockBtn.classList.add('hidden');
} }
setCodeBlockStyle(codeBlockState);
});