Integer ranges
Split the day into windows using >= and < on a number field.
Morning 6
shop.metaobjects.test_booking_slot
| query: "fields.slot_number:>=1 fields.slot_number:<13 fields.status:available"
,
sort_key: "fields.slot_number"
-
#1
Oct 27, 9:00 AM
· Alex
-
#1
Nov 2, 2:00 AM
· Cassie
-
#3
Oct 28, 5:00 AM
· Jenna
+ 3 more
Afternoon 8070
shop.metaobjects.test_booking_slot
| query: "fields.slot_number:>=13 fields.status:available"
,
sort_key: "fields.slot_number"
-
#501
Nov 2, 2:00 AM
-
#504
Nov 2, 3:30 AM
-
#1002
Nov 2, 2:30 AM
+ 8067 more
Negation and "has a value"
A leading - negates a term. :* matches any value that's present.
Not available 5270
shop.metaobjects.test_booking_slot
| query: "-fields.status:available"
No stylist assigned 2922
shop.metaobjects.test_booking_slot
| query: "-fields.stylist:* fields.status:available"
Stylist assigned 5154
shop.metaobjects.test_booking_slot
| query: "fields.stylist:* fields.status:available"
Prefix match on text
A trailing * matches any value that starts with the prefix.
shop.metaobjects.test_booking_slot
| query: "fields.status:avail*"
8076 matching slots
-
#1
Oct 27, 9:00 AM
· Alex
-
#3
Oct 28, 5:00 AM
· Jenna
-
#4
Oct 28, 6:00 AM
· Jenna
+ 8073 more
Sorting and reverse
Same query, three orderings. sort_key takes a field or a system attribute.
Highest slot number first
shop.metaobjects.test_booking_slot
| query: "fields.status:available"
,
sort_key: "fields.slot_number"
,
reverse: true
-
#30000
May 29, 10:30 AM
· Martha
-
#29999
May 29, 10:00 AM
· Martha
-
#29998
May 29, 9:30 AM
· Martha
+ 8073 more
Recently edited
shop.metaobjects.test_booking_slot
| query: "fields.status:available"
,
sort_key: "updated_at"
,
reverse: true
-
#3
Nov 2, 3:00 AM
· Cassie
-
#1
Nov 2, 2:00 AM
· Cassie
-
#23999
Jan 24, 9:00 AM
· Martha
+ 8073 more
By handle
shop.metaobjects.test_booking_slot
| query: "fields.status:available"
,
sort_key: "handle"
-
#1
Nov 2, 2:00 AM
· Cassie
-
#3
Nov 2, 3:00 AM
· Cassie
-
#5
Nov 2, 4:00 AM
+ 8073 more
Availability per stylist (counts only)
Two queries for each stylist, binding $s to the loop variable. Only .size is read.
shop.metaobjects.test_booking_slot
| query: "fields.stylist:$s fields.status:available",
s: s
shop.metaobjects.test_booking_slot
| query: "fields.stylist:$s -fields.status:available",
s: s
| Stylist | Open | Booked |
| Alex |
1 |
1 |
| Bobbie |
296 |
206 |
| Cassie |
124 |
76 |
| Jenna |
4 |
0 |
| Martha |
4499 |
2860 |
| Sally |
230 |
176 |
Pagination
Each filtered list has its own page key, so two paginated lists on one page page separately.
shop.metaobjects.test_booking_slot
| query: "fields.status:available"
,
sort_key: "fields.slot_number"
-
#4447
Nov 11, 9:00 AM
-
#4449
Nov 11, 10:00 AM
-
#4450
Nov 11, 10:30 AM
-
#4451
Nov 11, 11:00 AM
-
#4452
Nov 11, 11:30 AM
-
#4454
Nov 11, 12:30 PM
-
#4455
Nov 11, 1:00 PM
-
#4456
Nov 11, 1:30 PM
-
#4461
Nov 11, 4:00 PM
-
#4462
Nov 11, 4:30 PM
Merchant-editable filter
Bindings come from section settings, so merchants can change the filter in the theme editor without touching code.
shop.metaobjects.test_booking_slot
| query: "fields.stylist:$who fields.status:$status",
who: section.settings.stylist (or this stylist), status: section.settings.status
4 slots for Jenna
with status available
-
#3
Oct 28, 5:00 AM
· Jenna
-
#4
Oct 28, 6:00 AM
· Jenna
-
#15886
Nov 10, 2:30 AM
· Jenna
-
#15887
Nov 10, 3:00 AM
· Jenna