PageSourceSearch

https://terrancelaw.github.io/iQuery/js/filters.js

js terrancelaw.github.io collected 2026-10-03 10:05:32 UTC 1,882 bytes, 55 lines download raw bytes

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.