I have a problem with a repeater intermittently failing to render on iphone. It works ok on a browser and seems OK on android but on iphone it often displays the initial sample content and fails to display content from my dataset.
Any ideas welcome!!
The page is:
ridgeandfurrow.net/copy-of-shop
The code I’m using for the page is as follows - I suspect any problems may be toward the top pf the page :
import wixData from ‘wix-data’ ;
$w.onReady( function () {
// TODO: write your page related code here…
});
export function repeater1_itemReady ($item, itemData, index) {
$item( “#price” ).text = '£ ’ + itemData.price.toFixed( 2 );
var namestring = itemData.name + ‘’ ;
var namelength = 50 ;
var trimmedname = namestring.substring( 0 ,namelength);
$item( “#text30” ).text = String(trimmedname);
if (itemData.manageVariants === true ) {
$item( “#button7” ).show();
}
else { // forSale field is “no”
console.log(itemData.name); // show value of forSale field in developers console
$item( “#button7” ).hide();
}
if (itemData.manageVariants === false ) {
$item( "#button6" ).show();
}
else { // forSale field is “no”
console.log(itemData.name);
console.log(itemData.manageVariants);
// show value of forSale field in developers console
$item( “#button6” ).hide();
$item( “#input4” ).hide();
}
}
export async function name_keyPress(event) {
defaultSort = await false ;
if (debounceTimer) {
clearTimeout(debounceTimer);
debounceTimer = undefined;
}
debounceTimer = setTimeout(() => {
filter($w( “#name” ).value, collectionName);
}, 200 );
}
export async function collection_change(event) {
defaultSort = await false ;
filter(filterName, $w( “#collection” ).value);
}
export async function sortBy_change(event) {
defaultSort = await false ;
if ($w( “#sortby” ).value === ‘A - Z’ ) {
$w( “#dataset1” ).setSort(wixData.sort()
.ascending( “name” )
);
} else if ($w( “#sortby” ).value === ‘Z - A’ ) {
$w( “#dataset1” ).setSort(wixData.sort()
.descending( “name” )
);
} else if ($w( “#sortby” ).value === ‘Newest first’ ) {
$w( “#dataset1” ).setSort(wixData.sort()
.ascending( “_updatedDate” )
);
} else if ($w( “#sortby” ).value === ‘Oldest first’ ) {
$w( “#dataset1” ).setSort(wixData.sort()
.descending( “_updatedDate” )
);
}
}
let defaultSort = false ;
export async function reset_click(event) {
$w( “#name” ).value = await undefined;
$w( “#collection” ).value = await undefined;
$w( “#sortby” ).value = await undefined;
defaultSort = await true ;
filter();
}
export function dataset1_ready() {
let count = $w( “#dataset1” ).getTotalCount();
$w( “#count” ).text = ‘Total Products: (’ + count + ‘)’ ;
}
let filterName;
let collectionName;
let debounceTimer;
async function filter(name, collection) {
if (filterName !== name || collectionName !== collection) {
let newFilter = wixData.filter();
if (name)
newFilter = newFilter.contains( ‘name’ , name);
if (collection)
newFilter = newFilter.hasSome( ‘collections’ , [collection]);
await $w( “#dataset1” ).setFilter(newFilter);
if (defaultSort === true ) {
$w( “#dataset1” ).setSort(wixData.sort()
.ascending( “name” )
);
}
let count = $w( “#dataset1” ).getTotalCount();
$w( “#count” ).text = ‘Total Products: (’ + count + ‘)’ ;
filterName = name;
collectionName = collection;
}
}
export function button6_click(event) {
let $item = $w.at(event.context);
let selectedProduct = $item( ‘#dataset1’ ).getCurrentItem();
let selectedQty = Number($item( “#input4” ).value);
let productId = selectedProduct._id;
$w( ‘#shoppingCartIcon1’ ).addToCart(productId,selectedQty)
.then(() => {
console.log( "add products${productID} success" );
setTimeout( **function** () {
$item( "#input4" ).value = 1 ;
})
}, 10 );
$item( "#input4" ).value = 0 ;
}
export function button7_click_1(event) {
let $item = $w.at(event.context);
let selectedProduct = $item( ‘#dataset1’ ).getCurrentItem();
let selectedQty = Number($item( “#input4” ).value);
let productId = selectedProduct._id;
if (productId === ‘81dbcc3b-261c-2f17-7a15-b75184af1f0e’ )
{
$w( ‘#shoppingCartIcon1’ ).addToCart(productId,selectedQty)
.then(() => {
console.log( "add products${productID} success" );
setTimeout( **function** () {
$item( "#input4" ).value = 1 ;
})
}, 10 );
$item( "#input4" ).value = 0 ;
}
}