I am turning data from a dataset into a repeater. If no data is in the dataset for this item it return an ´undefined´and gets displayed in the repeater.
How can I overcome this. I tried with an if statement but it seem not accepted there.
Also I am not able to place more that one string operation in this export function - strange - any idea?
Thanks for any help.
Stephan
export function makeRepeater () {
setTimeout( () => {
$w (“#repeater1”).forEachItem( ($item, itemData, index) => (
if (itemData.plz === undefined) {
console.log(Undefined PLZ)
itemData.plz = “”
}
$item(“#text9”).text = itemData.plz + " " + itemData.ortsname
))
console.log (“MakeRepeater”)
makeRepeater1()
},900)
}
HelloGiri,
thanks fo far. Below you find the complete code I have so far.
Thx Stephan
import wixData from ‘wix-data’;
let ddf_Kategorie; ddf_Kategorie = “”;
let sf_Jahr; sf_Jahr= 2000;
let sf_Bereich; sf_Bereich = 20;
let ef_Text; ef_Text = “”
$w.onReady(() => {
$w(“#dataset1”).onReady( () => {
console.log (“OnReadyDataSet”)
giveFilter()
})
})
export function input1_keyPress(event) {
setTimeout (() => {
ef_Text = $w (“#input1”).value
console.log(ef_Text)
giveFilter()
},500)
}
export function dropdown1_change(event) {
ddf_Kategorie = $w (‘#dropdown1’).value;
if ((ddf_Kategorie) === “Alle Kategorien”) { ddf_Kategorie = “”}
console.log(ddf_Kategorie)
giveFilter()
}
export function slider1_change(event) {
sf_Jahr = $w (“#slider1”).value
console.log(sf_Jahr)
giveFilter()
}
export function slider2_change(event) {
sf_Bereich = $w (“#slider2”).value
console.log(sf_Bereich)
giveFilter()
}
export function giveFilter () {
setTimeout( () => {
$w(‘#dataset1’).setFilter(wixData.filter()
.contains (‘abbildung’, ef_Text)
.contains(‘kategorie’, ddf_Kategorie)
.between (‘aufnahmejahr’, sf_Jahr - sf_Bereich - 0.5, sf_Jahr + sf_Bereich + 0.5))
console.log (“GiveFilter”)
makeRepeater()
},900)
}
export function makeRepeater () {
setTimeout( () => {
$w (“#repeater1”).forEachItem( ($item, itemData, index) => (
if (itemData.plz === undefined) {
console.log(Undefined PLZ)
itemData.plz = “”
}
$item(“#text9”).text = itemData.plz + " " + itemData.ortsname
))
console.log (“MakeRepeater”)
makeRepeater1()
},900)
}
export function makeRepeater1 () {
setTimeout( () => {
$w (“#repeater1”).forEachItem( ($item, itemData, index) => (
$item(“#text10”).text = itemData.stasse + " " + itemData.hausnummer
))
console.log (“MakeRepeater1”)
},900)
}
Hello Giri,
what do you exactly mean when you say: 3) your check in in the wrong place. You should do a query, hand over the result to the makeRepeater and that one should check for an empty resultset?
Now I found out how it works:
import wixData from ‘wix-data’;
let ddf_Kategorie; ddf_Kategorie = “”;
let sf_Jahr; sf_Jahr= 2000;
let sf_Bereich; sf_Bereich = 20;
let ef_Text; ef_Text = “”
let itemHausnummer = “”
let itemAbstand = “”
$w.onReady (() => {
$w (“#repeater1”).onItemReady( ($item, itemData, index) => {
if (itemData.hausnummer === undefined) {itemAbstand = “”; itemHausnummer = “”}
else {itemAbstand = " “; itemHausnummer = itemData.hausnummer}
$item(”#text9").text = itemData.plz + " " + itemData.ortsname
$item(“#text10”).text = itemData.stasse + itemAbstand + itemHausnummer
giveFilter()
})
})
export function input1_keyPress(event) {
setTimeout (() => {
ef_Text = $w (“#input1”).value
console.log(ef_Text)
giveFilter()
},500)
}
export function dropdown1_change(event) {
ddf_Kategorie = $w (‘#dropdown1’).value;
if ((ddf_Kategorie) === “Alle Kategorien”) { ddf_Kategorie = “”}
console.log(ddf_Kategorie)
giveFilter()
}
export function slider1_change(event) {
sf_Jahr = $w (“#slider1”).value
console.log(sf_Jahr)
giveFilter()
}
export function slider2_change(event) {
sf_Bereich = $w (“#slider2”).value
console.log(sf_Bereich)
giveFilter()
}
export function giveFilter () {
$w(‘#dataset1’).setFilter(wixData.filter()
.contains (‘abbildung’, ef_Text)
.contains(‘kategorie’, ddf_Kategorie)
.between (‘aufnahmejahr’, sf_Jahr - sf_Bereich - 0.5, sf_Jahr + sf_Bereich + 0.5))
}