Hi,
I want to shuffle repeater item which is connected to database everytime page loads, anyone could suggest me how can i do it.
My database items:
Headline (productName), Short Description(productDescrpition), Image (productImage), Price (price)
Hi,
I want to shuffle repeater item which is connected to database everytime page loads, anyone could suggest me how can i do it.
My database items:
Headline (productName), Short Description(productDescrpition), Image (productImage), Price (price)
Maybe try something like:
let newDataOrder = [];
$w.onReady( () => {
$w("#dataset1").onReady( () => {
$w("#dataset1").getItems(0, 1000)
.then( (results) => {
let items = results.items;
function shuffleArray(){
if(items.length > 0){
let randomElement = items.splice(Math.random() * items.length, 1);
newDataOrder.push(randomElement[0]);
shuffleArray();
} else {
$w("#repeater1").data = newDataOrder;
}
}
shuffleArray();
})
})
})
or this one (faster):
let items;
function shuffleArray() {
let itemsLength = items.length, lastItem, randomIndex;
while (itemsLength) {
randomIndex = Math.floor(Math.random() * itemsLength--);
lastItem = items[itemsLength];
items[itemsLength] = items[randomIndex];
items[randomIndex] = lastItem;
}
return items;
}
$w.onReady( () => {
$w("#dataset1").onReady( () => {
$w("#dataset1").getItems(0, 1000)
.then( (results) => {
items = results.items;
$w("#repeater1").data = shuffleArray(items);
})
})
})
Here’s a simple Shuffle Repeater example.
@jonatandor35 Thank you for your help is its work faster & good ![]()
@yisrael-wix Thanks for your help
I want one more favor is there any way in this repeater that top 10 clicked item in repeater will shows 1st & respectively? After that shows items randomly.
This is exactly what I was after, thank you so much! ![]()
Is there any way of limiting this so that it only shows one item at a time? I have the dataset setting set to 1 in Wix, but on the live website it’s still showing all the items in my database at the same time?