Multi-column facet filters

rp-7

#21

Hi Groucho -

You’d access the selected state of the image (or whatnot) the same way that the filters (in OnPageLoad) access the selected states of the checkboxes: by creating local variables that contain the selected states of the objects in question.


#22

I forgot how to access the locals, now this makes sense…


#23

Hi Groucho -

Here’s an example where the G checkbox is replaced by an image (with a checked image as its selected interaction style).

facetfilters (4).rp (169 KB)


#24

Hi Indra -

The very first linked file is in Axure 7.


#25

Thanks again for the help. Your starting point has served me well many times now.


#26

I love the idea of doing the filtering on page load and then re-evaluating the filters when selections change.

In my prototype, I currently have 7 repeaters and filters that apply to all of them. I takes over 10 seconds to apply the filters. So I’m very interested in taking that performance hit once, up-front, rather than every time a filter selection is changed.

I tried adding a couple of filters on page load, just to test but, as Lisa described, when I add the filters OnPageLoad, nothing loads in the repeater.

Note: my checkboxes are ticked, initially, rather than un-ticked. So, I created a local variable that should be true when the checkbox is ticked.

Can someone see what I’m missing?


#27

After some further testing (a LOT more testing :slight_smile: ) I seem to have discovered that the Add Filter is persnickety about its arguments when they are logically connected.

For example, I am currently adding a filter with a SubStr on the HealthState item [[(Item.HealthState).substr(0,7)==‘Healthy’]], which works when I add the filter when clicking on a button. But, it does NOT work when I try to use the SubStr when I add the filter OnPageLoad.

I got the data to show up in my repeater when I switched to filtering a different column and using an exact ‘==’ match with a single word (also with a longer string that included spaces).

However, the filter in the screenshot in my prior post (on the HealthState column) did NOT work with an exact match. The best I can figure is that there must be some special character in the string ‘Healthy – General’ that is not matching, even though I copied it directly from the repeater.

There may be a bug when Add Filter tries to process more complex, logically connected arguments.


#28

That’s great, but how do you display the number occurrences of each value next to each filter, just like in your Macys example e.g. Sets (30) Shorts (15) .I’m struggling to do this at the moment.


#29

Hi!

This would be much easier if you could access objects in an array like most programming languages, but you can do the following with the laborious task of creating a global variable for each type of product you have:

OnItemLoad
  -- it's the first row, so initialize all counters to zero 
  if (value) [[Item.isFirst]] is true
    set (variable value) v_pants to 0
    set (variable value) v_robes to 0
    set ...etc.

  -- sum each clothing type
  if (value) [[Item.clothingType]] is "Pants"
    set (variable value) v_pants to [[v_pants + 1]]
  else if (value) [[Item.clothinglType]] is "Robes"
    set (variable value) v_robes to [[v_robes + 1]]
  else if ... etc.

  -- it's the last row, so we're done summing
  if (value) [[Item.isLast]] is true
    set text of checkbox "pants" to "Pants ([[v_pants)]]"
    set text of checkbox "robes" to "Robes ([[v_robes]])"
    set text of checkbox... etc.

Be careful of IFs vs ELSE IFs. (You can right-click to toggle between the two.) This will work with applied filter(s), so you may see some clothing items with a 0 value because they’ve been filtered out by, say, clothing color. I didn’t actually try this, and am into my second martini, so let me know if this works.


#30

I have been trying to emulate your faceted search approach with no success. May I ask you to provide feedback at your earliest convenience?

On the Explore page are many checkboxes (for 5 different facets) and a repeater. I expect the repeater to display all rows on pageload, then filter as the checkboxes are applied.

I am just testing, so the only checkboxes that are coded are “Driver Assistance” and “Java.” When both are selected, I expect the repeater to combine them.

Please see my file here: CodeHub.rp (203.2 KB)


#31

Hi!

So confusing, because everything looked perfect.

The issue turned out to be the single-quote character you are using in the filters. (Arghh!) It’s not the standard single quote: it’s slanted. I replaced those with the standard single quote and everything worked as expected. (Standard double-quotes work as well.)

Let me know if you run into any other issues.

Cheers,

Joseph

[Edit] Oh: one thing I didn’t mention in this facet-filters method: when setting up your filters, be sure that the Remove Other Filters checkbox is NOT checked. (That option did not exist when I created this method.)


#32

Thank you. However, I added another filter and it blew up- syntax seems fine. However, no results displayed when the page loads.

CodeHub.rp (203.4 KB)


#33

Hi!

The file you uploaded has only two filters and it works fine. Maybe you didn’t save before you uploaded?


#34

Sorry.CodeHub.rp (206.4 KB)


#35

Hi!

You won’t believe this, but now you have the wrong double-quotes. They’re slanted instead of straight up and down. How are you typing things in?

[Edit] Also, you had a carriage return at the end of the expression. Filters don’t ignore whitespace outside of the brackets, annoyingly. If there is any, it will return false for every row.


closed #38