UNPKG

savvy-js

Version:

Savvy - Style sheet documentation tool

107 lines (87 loc) 3.13 kB
(function(){ 'use strict'; var defaultMessae = 'Use the search box to look things up or switch to the Browse tab.', searchInputElement, searchResultsElement; function initSearch(){ searchInputElement = $('#savvy-searchInput'); searchResultsElement = $('#savvy-searchResults'); searchResultsElement.html(defaultMessae); searchInputElement.on('keyup', function(){ search($(this).val()); }); } function search(searchTerm){ var modules = [], submodules = [], classes = [], html; if(!searchTerm || searchTerm.length < 1){ searchResultsElement.html(defaultMessae); return; } function renderSearchResults(){ var result = ''; if(modules.length){ result += '<h3>Modules</h3>'; modules.forEach(function(module){ result += '<div>' + app.navigation.getLink(module) + '</div>'; }); } if(submodules.length){ result += '<h3>Submodules</h3>'; submodules.forEach(function(submodule){ result += '<div>' + app.navigation.getLink(submodule) + '</div>'; }); } if(classes.length){ result += '<h3>Classes</h3>'; classes.forEach(function(classObject){ result += '<div>' + app.navigation.getLink(classObject) + '</div>'; }); } if(!result){ result = 'No results'; } return result; } function searchClasses(parent) { if(parent.classes) { parent.classes.forEach(function (classObject) { if (classObject.class.indexOf(searchTerm) >= 0) { classes.push(classObject); } }); } } function searchSubmodules(parent){ if( parent.submodules) { parent.submodules.forEach(function (submodule) { if (submodule.name.indexOf(searchTerm) >= 0) { submodules.push(submodule); } searchClasses(submodule); }); } } function searchModules(parent){ if(parent.modules) { parent.modules.forEach(function (module) { if (module.name.indexOf(searchTerm) >= 0) { modules.push(module); } searchClasses(module); searchSubmodules(module); }); } } searchClasses(data); searchModules(data); html = renderSearchResults(); searchResultsElement.html(html); } app.search = { init : initSearch, search : search }; }());