Thank you! I am sure you are right. I apologize for my ignorance about this, but where do I put the onReady function? I tried inserting it at the top and almost ruined the whole thing! Here is my current page code:
import wixData from ‘wix-data’;
let lastFilterTitle;
let lastFilterVoiceType;
let lastFilterGenre;
let lastFilterMood;
let lastFilterAge;
let debounceTimer;
export function iTitle_keyPress(event, $w) {
//console.log($w(‘#iSearch’).value);
if (debounceTimer) {
clearTimeout(debounceTimer);
debounceTimer = undefined;
}
debounceTimer = setTimeout(() => {
filter($w(‘#iSearch’).value, lastFilterVoiceType, lastFilterGenre, lastFilterMood, lastFilterAge);
}, 200);
}
export function iFilterVoiceType_change(event, $w) {
filter(lastFilterTitle, $w(‘#iFilterVoiceType’).value, lastFilterGenre, lastFilterMood, lastFilterAge);
}
export function iFilterGenre_change(event, $w) {
filter(lastFilterTitle, lastFilterVoiceType, $w(‘#iFilterGenre’).value, lastFilterMood, lastFilterAge);
}
export function iFilterMood_change(event, $w) {
filter(lastFilterTitle, lastFilterVoiceType, lastFilterGenre, $w(‘#iFilterMood’).value, lastFilterAge);
}
export function iFilterAge_change(event, $w) {
filter(lastFilterTitle, lastFilterVoiceType, lastFilterGenre, lastFilterMood, $w(‘#iFilterAge’).value);
}
function filter(title, voiceType, genre, mood, age) {
if (lastFilterTitle !== title || lastFilterVoiceType !== voiceType || lastFilterGenre !== genre || lastFilterMood !== mood || lastFilterAge !== age) {
let newFilter = wixData.filter();
if (title) {
var list = title.split(" ");
//newFilter = newFilter.contains(‘title’,list[0]).or(newFilter.contains(‘musical’,list[0])).or(newFilter.contains(‘composers’,list[0]));
var i;
for (i = 0; i < list.length; i++) {
newFilter = newFilter.contains(‘title’, list[i])
.or(newFilter.contains(‘musical’, list[i]))
.or(newFilter.contains(‘composers’, list[i]))
.or(newFilter.contains(‘voiceType’, list[i]))
.or(newFilter.contains(‘age’, list[i]))
.or(newFilter.contains(‘premiereDate’, list[i]))
.or(newFilter.contains(‘mood’, list[i]))
.or(newFilter.contains(‘genre’, list[i]));
}
//newFilter = newFilter.contains(‘title’,title).or(newFilter.contains(‘musical’,title)).or(newFilter.contains(‘composers’,title));
}
if (voiceType) {
if (voiceType !== “All”)
newFilter = newFilter.eq(‘voiceType’, voiceType);
else
newFilter = newFilter.contains(‘voiceType’, “”);
}
if (genre) {
if (genre !== “All”)
newFilter = newFilter.contains(‘genre’, genre);
else
newFilter = newFilter.contains(‘genre’, “”);
}
if (mood) {
if (mood !== “All”)
newFilter = newFilter.contains(‘mood’, mood);
else
newFilter = newFilter.contains(‘mood’, “”);
}
if (age) {
if (age !== “All”)
newFilter = newFilter.contains(‘age’, age);
else
newFilter = newFilter.contains(‘age’, “”);
}
$w('#dataset1').setFilter(newFilter).then((num) => {
console.log($w('#dataset1').getTotalCount(), "heres count");
$w('#SearchCount').text = $w('#dataset1').getTotalCount().toString();
});;
lastFilterTitle = title;
lastFilterVoiceType = voiceType;
lastFilterGenre = genre;
lastFilterMood = mood;
lastFilterAge = age;
}
}
export function iSort_change(event, $w) {
var val = $w(‘#iSort’).value;
if (val == “DateNewtoOld”)
$w(“#dataset1”).setSort(wixData.sort().descending(“premiereDate”));
else if (val == “DateOldtoNew”)
$w(“#dataset1”).setSort(wixData.sort().ascending(“premiereDate”));
else
$w(“#dataset1”).setSort(wixData.sort().ascending(val));
}
$w.onReady( function () {
$w(“#iFilterVoiceType, #iFilterGenre, #iFilterMood, #iFilterAge”).collapse();
});
export function button5_click_1(event, $w) {
if ($w(“#iFilterVoiceType, #iFilterGenre, #iFilterMood, #iFilterAge”).collapsed) {
$w(“#iFilterVoiceType, #iFilterGenre, #iFilterMood, #iFilterAge”).expand()
$w(“#button5”).label = “Hide Advanced Search”;
/$w(“#button5”).collapse();/
} else {
$w(“#iFilterVoiceType, #iFilterGenre, #iFilterMood, #iFilterAge”).collapse();
$w(“#button5”).label = “Advanced Search”
}
};
wixData.query(“repgeniemusicaltheater”)
.count()
.then((num) => {
let resultsNum = num;
console.log(resultsNum);
$w(“#SearchCount”).text = resultsNum.toString();
});