123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- (function() {
- 'use strict';
- var $window = $(window),
- $languages = $('#languages div'),
- $linkTitle = $('link[title]'),
- $categoryContainer = $('#categories'),
- $styleContainer = $('#styles');
- function resizeLists() {
- var screenHeight = $window.height()
- $categoryContainer.css('max-height', screenHeight / 4);
- $categoryContainer.perfectScrollbar('update');
- $styleContainer.height(
- screenHeight - $styleContainer.position().top - 20
- );
- $styleContainer.perfectScrollbar('update');
- }
- function selectCategory(category) {
- $languages.each(function(i, language) {
- var $language = $(language);
- if ($language.hasClass(category)) {
- var code = $language.find('code');
- if (!code.hasClass('hljs')) {
- hljs.highlightBlock(code.get(0));
- }
- $language.show();
- } else {
- $language.hide();
- }
- });
- $(document).scrollTop(0);
- }
- function categoryKey(c) {
- return c === 'common' ? '' : c === 'misc' ? 'z' : c === 'all' ? 'zz' : c;
- }
- function initCategories() {
- var $categories, categoryNames;
- var categories = {};
- $languages.each(function(i, div) {
- if (!div.className) {
- div.className += 'misc';
- }
- div.className += ' all';
- div.className.split(' ').forEach(function(c) {
- categories[c] = (categories[c] || 0) + 1;
- });
- });
- categoryNames = Object.keys(categories);
- categoryNames.sort(function(a, b) {
- a = categoryKey(a);
- b = categoryKey(b);
- return a < b ? -1 : a > b ? 1 : 0;
- });
- categoryNames.forEach(function(c) {
- $categoryContainer.append(
- '<li data-category="' + c + '">' + c + ' (' + categories[c] +')</li>'
- );
- });
- $categories = $categoryContainer.find('li');
- $categories.click(function() {
- var $category = $(this);
- $categories.removeClass('current');
- $category.addClass('current');
- selectCategory($category.data('category'));
- });
- $categories.first().click();
- $categoryContainer.perfectScrollbar();
- }
- function selectStyle(style) {
- $linkTitle.each(function(i, link) {
- link.disabled = (link.title !== style);
- });
- }
- function initStyles() {
- var $styles;
- $linkTitle.each(function(i, link) {
- $styleContainer.append('<li>' + link.title + '</li>');
- });
- $styles = $styleContainer.find('li');
- $styles.click(function() {
- var $style = $(this);
- $styles.removeClass('current');
- $style.addClass('current');
- selectStyle($style.text());
- });
- $styles.first().click();
- $styleContainer.perfectScrollbar();
- }
- $(function() {
- initCategories();
- initStyles();
- $window.resize(resizeLists);
- resizeLists();
- });
- }).call(this);
|