I want to add a search bar, filter & sort functionality for a dataset repeater. I used a tutorial to code it. It works, despite the part that I added on my own (as I wanted to add a third filter). So when I use the third filter (“studienabschluss”) it won’t filter anything. Can someone please help me find the mistake.
import wixData from 'wix-data';
$w.onReady(function () {
});
export function listRepeater_itemReady($item, itemData, index) {
}
export async function studiengang_keyPress(event) {
defaultSort = await false;
if (debounceTimer) {
clearTimeout(debounceTimer);
debounceTimer = undefined;
}
debounceTimer = setTimeout(() => {
filter($w("#studiengang").value, studienbereichIdName, studienabschlussName);
}, 200);
}
export async function studienbereichId_change(event) {
defaultSort = await false;
filter(filterStudiengang, $w("#studienbereichId").value, studienabschlussName);
}
export async function studienabschluss_change(event) {
defaultSort = await false;
filter(filterStudiengang, studienbereichIdName, $w("#studienabschluss").value);
}
export async function sortBy_change(event) {
defaultSort = await false;
if($w("#sortBy").value === 'A-Z') {
$w("#dataset1").setSort(wixData.sort()
.ascending("studiengang")
);
} else if($w("#sortBy").value === 'Z-A') {
$w("#dataset1").setSort(wixData.sort()
.descending("studiengang")
);
} else if($w("#sortBy").value === 'Neu-Alt') {
$w("#dataset1").setSort(wixData.sort()
.ascending("_updatedDate")
);
} else if($w("#sortBy").value === 'Alt-Neu') {
$w("#dataset1").setSort(wixData.sort()
.descending("_updatedDate")
);
}
}
let defaultSort = false;
export async function reset_click(event) {
$w("#studiengang").value = await undefined;
$w("#studienbereichId").value = await undefined;
$w("#studienabschluss").value = await undefined;
$w("#sortBy").value = await undefined;
defaultSort = await true;
filter();
}
export function dataset1_ready() {
let count = $w("#dataset1").getTotalCount();
$w("#count").text = 'Gefundene Studiengänge: ' + count + '';
}
let filterStudiengang;
let studienbereichIdName;
let studienabschlussName;
let debounceTimer;
async function filter(studiengang, studienbereichId, studienabschluss) {
if(filterStudiengang !== studiengang || studienbereichIdName !== studienbereichId || studienabschlussName !== studienabschluss) {
let newFilter = wixData.filter();
if(studiengang)
newFilter = newFilter.contains('studiengang', studiengang);
if(studienbereichId)
newFilter = newFilter.hasSome('studienbereichId', [studienbereichId]);
if(studienabschluss)
newFilter = newFilter.hasSome('studienabschluss', [studienabschluss]);
await $w("#dataset1").setFilter(newFilter);
if(defaultSort === true) {
$w("#dataset1").setSort(wixData.sort()
.ascending("studiengang")
);
}
let count = $w("#dataset1").getTotalCount();
$w("#count").text = 'Gefundene Studiengänge: ' + count + '';
filterStudiengang = studiengang;
studienbereichIdName = studienbereichId;
studienabschlussName = studienabschluss;
}
}