1const Filters = { 2 emptyAll: function() { 3 for (filterName in Filter) 4 Filter[filterName].removeCapsule(); 5 }, 6 endPreview: function() { 7 for (filterName in Filter) 8 Filter[filterName].endPreview(); 9 }, 10 getFilteredData: function() { 11 let processingData = Database.data; 12 let filteredData = []; 13 14 for (let filterName in Filter) { 15 let currentAttribute = Filter[filterName].attributeName; 16 let currentFilterHasRange = ('range' in Filter[filterName].filterSpecification); 17 let currentFilterRemovesMissing = Filter[filterName].removeMissing; 18 19 if (currentFilterHasRange) { 20 let minHandleValue = Filter[filterName].filterSpecification.range[0]; 21 let maxHandleValue = Filter[filterName].filterSpecification.range[1]; 22 23 for (let i = 0; i < processingData.length; i++) { 24 let currentRow = processingData[i]; 25 let currentValue = currentRow[currentAttribute]; 26 let currentValueViolatesMissing = (currentFilterRemovesMissing && currentValue === null); 27 let currentValueWithinRange = (currentValue >= minHandleValue && currentValue <= maxHandleValue); 28 29 if (currentValueWithinRange && !currentValueViolatesMissing) 30 filteredData.push(currentRow); 31 } 32 } 33 34 if (!currentFilterHasRange) { 35 let requiredCategories = Filter[filterName].filterSpecification.oneOf; 36 37 for (let i = 0; i < processingData.length; i++) { 38 let currentRow = processingData[i]; 39 let currentValue = currentRow[currentAttribute];
40 let currentValueViolatesMissing = (currentFilterRemovesMissing && currentValue === null); 41 let currentValueInRequiredCategories = (requiredCategories.indexOf(currentValue) != -1); 42 43 if (currentValueInRequiredCategories && !currentValueViolatesMissing) 44 filteredData.push(currentRow); 45 } 46 } 47 48 // next iteration 49 processingData = filteredData; 50 filteredData = []; 51 } 52 53 return processingData; 54 } 55}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.