You were almost there
import wixData from "wix-data";
$w.onReady(function () {
$w("#dynamicDataset").onReady(() => {
// SHORT DESC CODE
$w("#listRepeater").onItemReady(($item, itemData) => {
const { description } = itemData;
// on item ready set the desc shorter
$item("#desc").text = shortText(description);
$item("#showmore").label = "Show More";
$item("#showmore").onClick((event) => {
// toggle short desc.
if ($item("#showmore").label === "Show More") {
$item("#desc").text = description;
$item("#showmore").label = "Show Less";
} else {
$item("#desc").text = shortText(description);
$item("#showmore").label = "Show More";
}
});
});
function shortText(text, maxLen = 220) {
return text.substr(0, maxLen) + "...";
}
// comment : change button10 to btnClear => stands for "button Clear"
$w('#button10').onClick(()=>{
$w("#dropdown").value = "";
$w("#dynamicDataset").setFilter(wixData.filter());
})
});
// FILTER CODE
$w("#searc").onKeyPress(() => {
// keypress event trigger before the dom is rendered
// setTimeout will wait 40ms before excuting the code in filterDs
setTimeout(filterDs, 40);
});
// Dropdown with all the company name
$w("#dropdown").onChange(() => {
filterDs();
});
});
async function filterDs() {
// inital filter
let filterBuilder = wixData.filter();
let keyword = $w("#searc").value;
let dropdown = $w("#dropdown").value;
if (keyword) {
filterBuilder = filterBuilder.contains("positionTitle", keyword)
.or(wixData.filter().contains("companyName", keyword));
//lastFilterSearchBox = searchBox;
}
if (dropdown) {
filterBuilder = filterBuilder.eq("jobType", dropdown);
console.log("Dropdown value: " + dropdown);
}
await $w("#dynamicDataset").setFilter(filterBuilder);
let count = $w("#dynamicDataset").getTotalCount();
$w("#counter").text = String(count) + " jobs posted";
}