[tw5] BAM Documentation TW instance: Going "old-school navigation"

If of any interest to anybody, even if just to study the TiddlyWiki scripting.

https://basicanywheremachine.neocities.org/BAM_ProgReference

I’m in the process of overhauling the navigation system, taking it to my preference for old-school access to things.

Pretty simple: pick a subject, then pick a topic. Or search.

A search adds a “Current Search” subject to the list, and adds a “Search Results” topic for that subject. My next step is to build things so that every search in a current session gets appended to the list of topics for current search.

Later, I’ll be adding:

  • option to save searches to browser local storage to have access to them again in future sessions
  • a way to delete searches from the list saved to browser local storage
    Three screenshots further below after 1 large snippet of code.
\define thisBook(emoji tid)
<option value="$tid$">$emoji$ $tid$</option>
\end
\define lB() [[
\define rB() ]]

<span style="white-space:nowrap;">Subject: <$select tiddler='$:/temp/currently_showing' field='book'>
<optgroup label="⯁ Info">
<<thisBook 🏠 "Introduction">>
<<thisBook 📘 "About BASIC Anywhere Machine">>
<<thisBook 📰 "What's New">>
<$list variable="show" filter="[{$:/temp/BAM/search-text!!title}get[text]!match[]]">
<<thisBook 🔎 "Current Search">>
</$list>
</optgroup>
<optgroup label='⯁ Books'>
<option>📚 Fundamentals of Computer Programming</option>
<option>📚 Graphics, Animation, and Sound</option>
<option>📚 BAM User Guide</option>
<option>📚 Metaprogramming</option>
<option>📚 BAM + TiddlyWiki Integration Projects</option>
</optgroup>
<optgroup label='⯁ References'>
<option>🔑 BAM Language Reference</option>
<<thisBook 🏛 "Bibliography">>
</optgroup>
</$select></span>
<span style="white-space:nowrap;">Topic:<$select tiddler={{$:/temp/currently_showing!!title}} field="text">
<$list filter="[[$:/temp/currently_showing]get[book]get[text]search-replace:g<lB>,[]search-replace:g<rB>,[]search-replace:g[* ],[]search-replace:g:regexp[\n],[:NL:]split[:NL:]]">
<option value={{!!title}}>🔹{{!!title}}</option>
</$list>
</$select></span>

2 Likes