Added: james/site-cms/trunk/content/assets/javascript/index.js URL: http://svn.apache.org/viewvc/james/site-cms/trunk/content/assets/javascript/index.js?rev=1335420&view=auto ============================================================================== --- james/site-cms/trunk/content/assets/javascript/index.js (added) +++ james/site-cms/trunk/content/assets/javascript/index.js Tue May 8 11:27:04 2012 @@ -0,0 +1,140 @@ +$(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; +}
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
