Het lijkt een beetje op de filters zoals als Tweakers ze in de Pricewatch heeft, alleen dan in een webshop. Heb het al eens vaker gebruikt, maar wil qua logica even het onderste uit de kan hebben. Een nieuw project, dus nieuwe kansen!
Een Filter bestaat uit meerdere Opties. Een voorbeeld van een filter zou 'Maat' met de opties 'S', 'M', 'L', 'XL' kunnen zijn. Stel je wil alle producten zien, dan klik je niks aan. Als je alleen de producten met de maat S wil zien, dan klik je S aan. Wil je alle producten met S óf M zien, dan klik je die aan. Vrij duidelijk lijkt me!
Nu heb ik een formulier waarin de filters opgenomen zijn door middel van checkboxes. Dit formulier is voorzien van een stukje jQuery die bij 'change' van de checkboxes de browser hash (#filter:...) aanpast. De browser hash word ook bewaakt door een stukje code die op zijn beurt weer de producten ophaalt op basis van de browser hash. De browser hash bevat het filter-formulier, geserialiseerd. De hash word met (urlsafe) base64 'versleuteld' om zo te voorkomen dat karakters problemen veroorzaken.
Uiteraard is het de bedoeling dat als er iemand een link met filter opent (vanuit email of Facebook) hij gewoon de producten krijgt te zien die erbij horen en dat het filter-formulier 'restored' word naar de state van de browser hash die in de link zit.
Stap 1: Checkbox in het formulier word aangeklikt, 'change' detected!
Stap 2: Browser hash updaten met een geserialiseerde versie van het filter-formulier.
Stap 3: Browser hash is veranderd, 'change' detected!
Stap 4: Producten ophalen op basis van de hash (AJAX).
Waarom niet meteen, bij het aanklikken van de checkbox, de producten ophalen? Dan verlies je vorige/volgende functionaliteit in de browser en is er geen mogelijkheid om de filters te delen met een ander.
En nu?
Denk ik hier logisch? Klopt mijn werkwijze tot zover, of kan ik het nog verder versimpelen?
Een Filter bestaat uit meerdere Opties. Een voorbeeld van een filter zou 'Maat' met de opties 'S', 'M', 'L', 'XL' kunnen zijn. Stel je wil alle producten zien, dan klik je niks aan. Als je alleen de producten met de maat S wil zien, dan klik je S aan. Wil je alle producten met S óf M zien, dan klik je die aan. Vrij duidelijk lijkt me!
Nu heb ik een formulier waarin de filters opgenomen zijn door middel van checkboxes. Dit formulier is voorzien van een stukje jQuery die bij 'change' van de checkboxes de browser hash (#filter:...) aanpast. De browser hash word ook bewaakt door een stukje code die op zijn beurt weer de producten ophaalt op basis van de browser hash. De browser hash bevat het filter-formulier, geserialiseerd. De hash word met (urlsafe) base64 'versleuteld' om zo te voorkomen dat karakters problemen veroorzaken.
Uiteraard is het de bedoeling dat als er iemand een link met filter opent (vanuit email of Facebook) hij gewoon de producten krijgt te zien die erbij horen en dat het filter-formulier 'restored' word naar de state van de browser hash die in de link zit.
Stap 1: Checkbox in het formulier word aangeklikt, 'change' detected!
Stap 2: Browser hash updaten met een geserialiseerde versie van het filter-formulier.
Stap 3: Browser hash is veranderd, 'change' detected!
Stap 4: Producten ophalen op basis van de hash (AJAX).
Waarom niet meteen, bij het aanklikken van de checkbox, de producten ophalen? Dan verlies je vorige/volgende functionaliteit in de browser en is er geen mogelijkheid om de filters te delen met een ander.
En nu?
Denk ik hier logisch? Klopt mijn werkwijze tot zover, of kan ik het nog verder versimpelen?