Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | 17x 90x 72x 72x 72x 72x 6x 66x 3x 3x 63x 4x 4x 59x 72x 72x 65x 72x 72x 72x 63x 63x 138x 63x 90x 40x 40x 40x 2x 2x 40x 40x 40x 222x 222x 222x 222x 233x 233x 377x 377x 377x 363x 363x 67x 67x 233x 222x 25x 25x 90x 72x 72x 72x 72x 72x 72x 25x 47x 47x 7x 40x 72x 72x 72x 90x 90x 90x 2x 2x 2x 2x 90x 90x | module.exports = function (list) { var item, text, columns, searchString, customSearch var prepare = { resetList: function () { list.i = 1 list.templater.clear() customSearch = undefined }, setOptions: function (args) { if (args.length == 2 && args[1] instanceof Array) { columns = args[1] } else if (args.length == 2 && typeof args[1] == 'function') { columns = undefined customSearch = args[1] } else if (args.length == 3) { columns = args[1] customSearch = args[2] } else { columns = undefined } }, setColumns: function () { Iif (list.items.length === 0) return if (columns === undefined) { columns = list.searchColumns === undefined ? prepare.toArray(list.items[0].values()) : list.searchColumns } }, setSearchString: function (s) { s = list.utils.toString(s).toLowerCase() s = s.replace(/[-[\]{}()*+?.,\\^$|#]/g, '\\$&') // Escape regular expression characters searchString = s }, toArray: function (values) { var tmpColumn = [] for (var name in values) { tmpColumn.push(name) } return tmpColumn }, } var search = { list: function () { // Extract quoted phrases "word1 word2" from original searchString // searchString is converted to lowercase by List.js var words = [], phrase, ss = searchString while ((phrase = ss.match(/"([^"]+)"/)) !== null) { words.push(phrase[1]) ss = ss.substring(0, phrase.index) + ss.substring(phrase.index + phrase[0].length) } // Get remaining space-separated words (if any) ss = ss.trim() if (ss.length) words = words.concat(ss.split(/\s+/)) for (var k = 0, kl = list.items.length; k < kl; k++) { var item = list.items[k] item.found = false Iif (!words.length) continue for (var i = 0, il = words.length; i < il; i++) { var word_found = false for (var j = 0, jl = columns.length; j < jl; j++) { var values = item.values(), column = columns[j] if (values.hasOwnProperty(column) && values[column] !== undefined && values[column] !== null) { var text = typeof values[column] !== 'string' ? values[column].toString() : values[column] if (text.toLowerCase().indexOf(words[i]) !== -1) { // word found, so no need to check it against any other columns word_found = true break } } } // this word not found? no need to check any other words, the item cannot match if (!word_found) break } item.found = word_found } }, // Removed search.item() and search.values() reset: function () { list.reset.search() list.searched = false }, } var searchMethod = function (str) { list.trigger('searchStart') prepare.resetList() prepare.setSearchString(str) prepare.setOptions(arguments) // str, cols|searchFunction, searchFunction prepare.setColumns() if (searchString === '') { search.reset() } else { list.searched = true if (customSearch) { customSearch(searchString, columns) } else { search.list() } } list.update() list.trigger('searchComplete') return list.visibleItems } list.handlers.searchStart = list.handlers.searchStart || [] list.handlers.searchComplete = list.handlers.searchComplete || [] list.utils.events.bind( list.utils.getByClass(list.listContainer, list.searchClass), 'keyup', list.utils.events.debounce(function (e) { var target = e.target || e.srcElement, // IE have srcElement alreadyCleared = target.value === '' && !list.searched Eif (!alreadyCleared) { // If oninput already have resetted the list, do nothing searchMethod(target.value) } }, list.searchDelay) ) // Used to detect click on HTML5 clear button list.utils.events.bind(list.utils.getByClass(list.listContainer, list.searchClass), 'input', function (e) { var target = e.target || e.srcElement if (target.value === '') { searchMethod('') } }) return searchMethod } |