I have a question about taking this one step further, but first, I just
want to say thank you, thank you, thank you for this thread (original
poster and everyone who helped).
I was able to take this code and incorporate it into a grocery list that
I'd developed years ago and which I've been wanting to tweak. This code
allowed me to group my list by the aisle. (In actuality it's more like
general areas of the store.) It works great and I'm absolutely over the
moon about it as I had gone down many rabbit holes before I found what I
was looking for!
Now I'm wondering about tweaking it further so that it doesn't show the
name of an aisle when there are no items on the list for that particular
trip.
Let me 'splain:
I have dozens of tiddlers of various grocery items, each with a field
called "aisle" with values like "bakery", "dairy", "frozen", "meats." I
have a full list to choose from of potential grocery items and clicking an
item tags them with "$purchase" (meaning "to be purchased") and they move
to the current shopping list.
With help from this thread I developed the code below to show the current
shopping list grouped by aisle. As I shop, checking an item on that list
tags it as "$purchased" (not to be confused with "$purchase" above!) and
drops it from the list.
Here is the code:
<$list filter="[has[aisle]each[aisle]sort[aisle]]">
<div class="tw-menu-list-item">
<$view field="aisle"/>
</div>
<$list filter="[!tag[$purchased]tag[$purchase]aisle{!!aisle}sort[title]]">
<div class="tw-menu-list-subitem">
<$button class="tc-btn-invisible">
<input type="checkbox"/>
<$action-listops $tags="$purchased"/>
</$button> <$link to={{!!title}}><$view field="title"/></$link>
</div></$list></$list>
The above might produce a list something like this:
bakery
bread
cookies
dairy
milk
cream
frozen
meats
chicken
sausage
etc.
As you can see, there are items under the "aisle" headers for "bakery",
"dairy" and "meats"; but none under "frozen". What I want is, if there are
no items from the frozen aisle (aisle="frozen") tagged with "$purchase",
then suppress the header (in this case "frozen") from appearing on the
list. That is, only show the header for "aisles" that contain items tagged
with "$purchase".
I thought I could fix this by adding "tag[$purchase]" to the first filter
but doing so caused my list to completely disappear.
My skill level is pretty basic but improving. Is there an easy fix for
this? Am I missing something obvious?
Best regards and thank you for any help.
mr
On Tuesday, March 4, 2014 at 1:03:14 PM UTC-8 Scott Kingery wrote:
> Well, I'm almost there.
>
> Example wiki:
> http://dl.dropboxusercontent.com/u/118970/wiki/scottexamples.html
> When you look at the example you'll see the issue. It is mostly working
> but things aren't showing up as they should. I've outlined it in the
> Problems tiddler you'll see when you look at the example.
>
> My code:
> <$list
> filter="[is[current]tagging[]has[subtopic]each[subtopic]sort[subtopic]]">
> <div class="tw-menu-list-item">
> <$view field="subtopic"/>
> </div>
> <$list filter="[subtopic{!!subtopic}sort[title]]">
> <div class="tw-menu-list-subitem">
> <$link to={{!!title}}><$view field="title"/> </$link>
> </div></$list></$list>
>
>
>
>
> On Sunday, March 2, 2014 11:08:12 PM UTC-8, Scott Kingery wrote:
>>
>> Thanks everyone.
>> cmari, the each[subtopic] was the piece I was missing I think.
>>
>> Additionally, I'm trying to do what you want as well by having the
>> list search for tiddlers tagged with the current tiddler's title. I
>> borrowed this:
>> <$list filter="[is[current]tagging[]sort[title]]">
>>
>> from http://www.giffmex.org/tw5mall.htm. It gets us a bit closer by I
>> can't seem to get the syntax right to merge it in with what you gave me
>> before.
>>
>>
>> On Sunday, March 2, 2014 1:38:30 PM UTC-8, cmari wrote:
>>>
>>> Hi Scott,
>>>
>>> I was fiddling around with something similar yesterday. In case it's of
>>> interest, here's the (far more rudimentary approach than Stephan's)
>>> approach I came up with. Note that this doesn't make use of tags at all,
>>> it simply finds all the tiddlers that contain a field called subtopic, and
>>> then lists those tiddlers (alphabetically) by subtopic. You could of course
>>> sort the lists differently, and you could filter for a particular tag by
>>> adding, e.g., [tag[Movie], to the second list filter. I would have liked to
>>> be able to search for tiddlers tagged with the current tiddler's title, or
>>> even tag, but I don't know how to do that in any generic way, so I opted
>>> instead to use a unique field name in the tiddlers I wanted in my list.
>>>
>>> (Also, obviously, you could take out the styles; I was just seeing what
>>> I could do with the options that already existed).
>>>
>>> <$list
>>> filter="[!is[system]has[subtopic]each[subtopic]sort[subtopic]]"><div
>>> class="tw-menu-list-item"><$link to={{!!subtopic}}><$view
>>> tiddler={{!!subtopic}} field="title"/></$link>
>>> </div>
>>> <$list filter="[subtopic{!!subtopic}sort[title]]">
>>> <div class="tw-menu-list-subitem">
>>> <$link to={{!!title}}><$view field="title"/> </$link>
>>> </div></$list></$list>
>>>
>>> cmari
>>>
>>> On Sunday, March 2, 2014 12:45:26 AM UTC-8, Scott Kingery wrote:
>>>>
>>>> I'm just getting started experimenting with TW5. What I want to do is
>>>> have a field called subtopic and then have those grouped on a list.
>>>>
>>>> The results looking something like:
>>>> Movies (main topic and title of tiddler)
>>>> Comedy (subtopic)
>>>> Drama (subtopic)
>>>>
>>>> The following is the general idea but doesn't have the syntax to group.
>>>>
>>>> <$list filter="[has[subtopic]sort[subtopic]]">
>>>> <h2><$view field="subtopic"/></h2><$link to={{!!title}}><$view
>>>> field="title"/></$link><br>
>>>> </$list>
>>>>
>>>> Can this be done?
>>>> Thanks,
>>>> Scott
>>>>
>>>>
--
You received this message because you are subscribed to the Google Groups
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/tiddlywiki/bf28d22d-61da-459e-88de-238faa5463f4n%40googlegroups.com.