Thanks, I will look at creating custom widgets.

If what I want to do is simple, such as set a field to a constant value, 
yea sure I can do that. But once something involves complex logic I often 
get stymied. It seems every time I gain an insight into how TW works, I 
discover it doesn't work as I thought. At this point I have become 
incredibly frustrated. I find the syntax inconsistent with too many 
exceptions plus when and how to "hook together" different code types 
(macros, widgets, etc). https://groktiddlywiki.com & 
https://anthonymuscio.github.io/#Standard%20Nomenclature have been helpful 
but it is eluding my understanding. Despite javascript's own quirks, at 
least it makes sense to me.

On Thursday, December 16, 2021 at 11:00:07 AM UTC-5 PMario wrote:

> On Thursday, December 16, 2021 at 4:24:14 PM UTC+1 [email protected] 
> wrote:
>
>> The dev documentation 
>> <https://tiddlywiki.com/dev/static/JavaScript%2520Macros.html> states 
>> "Macros are just used to return a chunk of wikitext for further processing. 
>> They should not make modifications to tiddlers in the wiki store."
>>
>
> The main reason, why macros shouldn't have side effects is, that they 
> don't have a .refresh() function of their own. They are refreshed by 
> "parent" widgets. 
>
> So if you want to implement your own functionality, that survives a page 
> refresh you need to create widgets. 
>  
>
>> Is there a hook point where I can have my own js code that can modify 
>> tiddlers?
>>
>
> Widgets.
>  
>
>> Basically I want to be able to set field values from js. As I'd much 
>> rather use js than the conglomerate that is wikitext, widgets, filters, and 
>> macros.
>>
>
> It depends on what you really want to do. If you just want to change some 
> fields you are probably a 100 times faster to get stuff done if you use the 
> existing wikitext functionality. 
>
> If you just want to see how the TW internals work you could have a closer 
> look how widgets work. 
>
> In TW everything is driven by the "refresh" mechanism, which is 
> automatically triggered as soon as you change a tiddler content in the 
> store. 
>
> Changes to the tiddler store are usually driven by user interaction with 
> "buttons" and "action widgets". .. So user actions change the tiddler 
> content, which in turn automatically updates the UI. ... 
>
> The internal tiddler store is immutable. So changing tiddlers is only 
> possible writing a completely new tiddler. Overwriting a tiddler is done in 
> the following way. -- read tiddler content -- modify the content -- write 
> tiddler with the same or a new title. Once the store is updated a "change" 
> event is fired by the core. All widgets that depend on the tiddler content 
> that has been changed, trigger their .refresh() function, which may write 
> new HTML output to the DOM. 
>
> ... So it really depends, what you want to do. .. If you could be more 
> specific about your usecase, I could probably point you in the right 
> direction in the core code. 
>
> -mario
>
>

-- 
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/fba0883c-5824-437f-8db4-c2735049932dn%40googlegroups.com.

Reply via email to