| $(document).ready(function() { |
| $('input[type=text]#searchbox').keyup(function() { |
| input = $(this).val(); |
| if (input.length != 0) { |
| var filter = input.split(' '); |
| var regexps = new Array(); |
| var idx = 0; |
| |
| for (var i = 0; i < filter.length; i++) { |
| if (!$.trim(filter[i]).length == 0) { |
| regexps[idx++] = new RegExp(filter[i],"i"); |
| } |
| } |
| } |
| |
| // filtering apis |
| $('div#checkboxes-check > ul > li > input[type=button].button').each(function(i, val) { |
| var toShow = false; |
| if (input.length == 0) { |
| toShow = true; |
| } else { |
| for (var i = 0; i < regexps.length; i++) { |
| if (regexps[i].test($(val).attr('value'))) { |
| toShow = true; |
| break; |
| } |
| } |
| } |
| if (toShow) { |
| $(val).show('fast'); |
| } else { |
| $(val).hide(); |
| } |
| }); |
| |
| // used only in click-filtering mode |
| $('#api-info').hide(); |
| }); |
| }); |
| |
| var close = ' X'; |
| var selectedClasses = new Array(); // classes to use |
| var correspondingExamples = new Array(); // classes to use |
| |
| function filterExamples($button) { |
| // resetting filter by text input |
| $('#searchbox').val(''); |
| |
| // selecting the clicked button |
| if ($button.selected) { |
| $button.value = $button.value.substring(0, $button.value.length - close.length); |
| for (var i = 0; i < selectedClasses.length; i++) { |
| if (selectedClasses[i] == $($button).attr('api')) { |
| selectedClasses.splice(i, 1); |
| correspondingExamples.splice(i, 1); |
| break; |
| } |
| } |
| } else { |
| $button.value = $button.value.concat(close); |
| selectedClasses.push($($button).attr('api')); |
| correspondingExamples.push($($button).attr('class')); |
| } |
| $button.selected = !$button.selected; |
| |
| // refreshing |
| var filteringForExamples = ''; // for examples |
| if (selectedClasses.length > 0) { |
| filteringForExamples = '.'.concat(selectedClasses.join('.')); |
| } |
| |
| var filteringForButtons = ''; // for buttons |
| if (correspondingExamples.length > 0) { |
| for (var i = 0; i < correspondingExamples.length; i++) { |
| filteringForButtons = filteringForButtons.concat(' ').concat(correspondingExamples[i]); |
| } |
| var examplesForButtons = $.unique(filteringForButtons.split(' ')); |
| filteringForButtons = '.'.concat(examplesForButtons.join('.')); |
| } |
| |
| // filtering examples |
| $('div#examples').find('li' + filteringForExamples).show('fast'); |
| if (selectedClasses.length > 0) { |
| $('div#examples').find('li:not(' + filteringForExamples + ').example').hide(); |
| } |
| |
| // filtering buttons (apis) |
| if (correspondingExamples.length > 0) { |
| var examples = new Array(); |
| $('div#examples').find('li' + filteringForExamples).each(function(i, val) { |
| examples.push($(val).attr('example')); |
| }); |
| examples = filterArray(examples); |
| |
| $('div#checkboxes-check > ul > li > input[type=button].button').hide(); |
| for (var i = 0; i < examples.length; i++) { |
| $('li[example="' + examples[i].substring(examples[i].lastIndexOf('_') + 1, examples[i].length) + '"]').each(function(i, val) { |
| $buttons = $(val).attr('class'); |
| $buttons = $buttons.substring('example '.length, $buttons.length); |
| $buttonsArray = $buttons.split(' '); |
| for (var b = 0; b < $buttonsArray.length; b++) { |
| if (shouldIHideIt(examples, $buttonsArray[b]) && selectedClasses.indexOf($buttonsArray[b]) == -1) { |
| $('input[api="' + $buttonsArray[b] + '"]').hide(); |
| } else { |
| $('input[api="' + $buttonsArray[b] + '"]').show('fast'); |
| } |
| } |
| }); |
| } |
| |
| $('#api-info').show(); |
| $('#api-info').text(examples.length + ' examples are matching'); |
| } else { |
| $('div#checkboxes-check > ul > li > input[type=button].button').show('fast'); |
| $('#api-info').hide(); |
| } |
| } |
| |
| function filterArray(list) { |
| var out = new Array(); |
| for (var i = 0; i < list.length; i++) { |
| if (list[i].length > 0) { |
| out.push(list[i]); |
| } |
| } |
| return out; |
| } |
| |
| function shouldIHideIt(list, api) { |
| for (var i = 0; i < list.length; i++) { |
| $item = $('li[example="' + list[i].substring(list[i].lastIndexOf('_') + 1, list[i].length) + '"]').next().attr('class'); |
| if ($item != undefined && $item != false) { |
| $apis = $item.split(' '); |
| if ($apis.indexOf(api) == -1) { |
| return false; |
| } |
| } |
| } |
| return true; |
| } |