Skip to content

Commit 4d496f2

Browse files
Tweak filter test ordering
1 parent 74ec387 commit 4d496f2

1 file changed

Lines changed: 32 additions & 29 deletions

File tree

src/components/syntaxes/SyntaxDisplayManager.astro

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -116,18 +116,45 @@ export interface VersionFilterData {
116116
let versionFilter: VersionFilterData = {
117117
versions: [], range: 'strict', type: 'any',
118118
};
119-
let returnTypeFilter: string | null = null;
119+
let returnTypeFilter = '';
120120
let addonFilter = new Set<string>();
121121

122122
let hasSearch = false;
123123
let searchCache: Map<string, number> = new Map<string, number>();
124124

125125
// get what VirtualItems should actually "exist" based on the filters
126126
function getFilteredItems(): VirtualItem[] {
127+
// Prepare elements
128+
let filtered = [...allItems];
129+
130+
// Addon filter
131+
if (addonFilter.size !== 0) {
132+
filtered = filtered.filter(item => {
133+
const itemAddon = item.element.dataset.syntaxAddon;
134+
if (itemAddon) {
135+
return addonFilter.has(itemAddon);
136+
}
137+
// no addon means it is from Skript
138+
return addonFilter.has("Skript");
139+
});
140+
}
141+
127142
// Type filter
128-
let filtered = typeFilter.size === 0
129-
? [...allItems]
130-
: allItems.filter(item => typeFilter.has(item.syntaxType));
143+
if (typeFilter.size !== 0) {
144+
filtered = filtered.filter(item => typeFilter.has(item.syntaxType));
145+
}
146+
147+
// Return type filter
148+
if (returnTypeFilter.length > 0) {
149+
filtered = filtered.filter(item => {
150+
if (item.element.dataset.syntaxReturns) {
151+
const candidate = (item.element.dataset.syntaxReturns as string).toLowerCase();
152+
// TODO inheritance mapping?
153+
return candidate.includes(returnTypeFilter);
154+
}
155+
return false;
156+
})
157+
}
131158

132159
// Version filter
133160
if (versionFilter.versions.length > 0) {
@@ -169,30 +196,6 @@ export interface VersionFilterData {
169196
});
170197
}
171198

172-
// return type filter
173-
if (returnTypeFilter) {
174-
const target = returnTypeFilter.toLowerCase();
175-
filtered = filtered.filter(item => {
176-
if (item.element.dataset.syntaxReturns) {
177-
const candidate = (item.element.dataset.syntaxReturns as string).toLowerCase();
178-
// todo: inheritance mapping?
179-
return candidate.includes(target);
180-
}
181-
return false;
182-
})
183-
}
184-
185-
if (addonFilter.size != 0) {
186-
filtered = filtered.filter(item => {
187-
const itemAddon = item.element.dataset.syntaxAddon;
188-
if (itemAddon) {
189-
return addonFilter.has(itemAddon);
190-
}
191-
// no addon means it is from Skript
192-
return addonFilter.has("Skript");
193-
});
194-
}
195-
196199
if (hasSearch) { // need to filter and sort based on search cache
197200
return filtered
198201
.filter(item => searchCache.has(item.syntaxId))
@@ -577,7 +580,7 @@ export interface VersionFilterData {
577580
fullRender();
578581
},
579582
updateReturnTypeFilter: (type: string) => {
580-
returnTypeFilter = type;
583+
returnTypeFilter = type.toLowerCase();
581584
fullRender();
582585
},
583586
updateAddonFilter: (addons: Set<string>) => {

0 commit comments

Comments
 (0)