I want to be able to use a dropdown value to navigate to another page but am getting a ‘null’ type error. After having read a number of posts on here, I am no closer to solving the problem. Would appreciate any advice where to look / what to do. I’ve highlighted the line in my code causing the problem.
import wixData from 'wix-data';
import wixLocation from "wix-location";
$w.onReady(function () {
uniqueDropDown1();
});
function uniqueDropDown1() {
wixData.query("servSummary")
.limit(1000)
.find()
.then(results => {
const uniqueTitles = getUniqueTitles(results.items);
$w("#type").options = buildOptions(uniqueTitles);
});
function getUniqueTitles(items) {
const titlesOnly = items.map(item => item.busType);
return [...new Set(titlesOnly)];
}
function buildOptions(uniqueList) {
return uniqueList.map(curr => {
return { label: curr, value: curr };
});
}
}
export function type_change(event, $w) {
uniqueDropDown2();
$w("#category").enable();
}
function uniqueDropDown2() {
wixData.query("servSummary")
.contains("busType", $w("#type").value)
.limit(1000)
.find()
.then(results => {
const uniqueTitles = getUniqueTitles(results.items);
$w("#category").options = buildOptions(uniqueTitles);
});
function getUniqueTitles(items) {
const titlesOnly = items.map(item => item.servCat);
return [...new Set(titlesOnly)];
}
function buildOptions(uniqueList) {
return uniqueList.map(curr => {
return { label: curr, value: curr };
});
}
}
export function category_change(event, $w) {
uniqueDropDown3();
$w("#name").enable();
}
function uniqueDropDown3() {
wixData.query("servSummary")
.contains("busType", $w("#type").value)
.contains("servCat", $w("#category").value)
.limit(1000)
.find()
.then(results => {
const uniqueTitles = getUniqueTitles(results.items);
$w("#name").options = buildOptions(uniqueTitles);
});
function getUniqueTitles(items) {
const titlesOnly = items.map(item => item.servName);
return [...new Set(titlesOnly)];
}
function buildOptions(uniqueList) {
return uniqueList.map(curr => {
return { label: curr, value: curr };
});
}
let title = $w('#name').value;
$w("#toFilter").onReady(() => {
console.log("Dataset ready.");
$w("#toFilter").setFilter(wixData.filter()
.eq("title", title)
)
.then(() => {
console.log("tofilter dataset filtered with matching title.");
let getItem = $w("#toFilter").getCurrentItem();
let url = getItem.url;
wixLocation.to(url);
})
.catch((err) => {
console.log(err);
});
});
}