Also refactor out concerns in your code. It will help you bug hunt faster
too. For example, I would personally pull this out of SumField:
var checkTiddler = $tw.wiki.getTiddler(storeTiddler);
if(checkTiddler && storeField) {
output = String(output);
if(output != checkTiddler.getFieldString(storeField)) {
$tw.wiki.setText(storeTiddler,storeField,storeIndex,output);
}
}
This has nothing to do with summing fields and it is a rather pivotal
point in you code where a problem like yours might be arising. Separate it
out and you can even mock it to see if it is behaving as it should.
Sorry I edited my post and it took a long time so I don't want this advice
to be overlooked.
On Thursday, February 12, 2015 at 9:09:32 AM UTC-6, Roma Hicks wrote:
>
> Hello Jed, I will help you look it over but one thing I would do, is
> start refactoring some of the code. The is some bits of repeating that you
> could pull out. For example, your SumField and SumFieldFull and nearly
> identical. Just call SumField as need in SumFieldFull through your loop.
> This reduces the amount of code you need to maintain and avoids any
> mistakes you may have created while copying blocks of code.
>
> Because of the nature of TiddlyWiki's plugin mechanism it is rather
> difficult to debug in browser (or at least that I have found). Sprinkle
> your code liberally with log outputs and rebuild your plugin. With some
> good refactoring, and strategic placement of console.log you probably can
> narrow the problem area quickly.
>
> Also refactor out concerns in your code. It will help you bug hunt faster
> too. For example, I would personally pull this out of SumField:
> var checkTiddler = $tw.wiki.getTiddler(storeTiddler);
> if(checkTiddler && storeField) {
> output = String(output);
> if(output != checkTiddler.getFieldString(storeField)) {
> $tw.wiki.setText(storeTiddler,storeField,storeIndex,output);
> }
> }
> This has nothing to do with summing fields and it is a rather pivotal
> point in you code where a problem like yours might be arising. Separate it
> out and you can even mock it to see if it is behaving as it should.
>
>
> On Tuesday, February 10, 2015 at 10:42:47 PM UTC-6, Jed Carty wrote:
>>
>> I have been trying to get the math plugin I am working on set up as a
>> daemon that listens for changes and updates its output when one of the
>> tiddlers that has an expression in it changes.
>>
>> At the moment the only function is summing fields from a list of tiddlers
>> because I am running into a problem. The process will update and works as
>> expected when there is only one expression to evaluate, and when there are
>> multiple expressions but neither one actually has values to sum it works as
>> expected. The second one can be seen because you can set the default value
>> it outputs when it doesn't have any valid input.
>>
>> The problem is that once at least one has valid inputs only one
>> expression will update. I had assumed that this was because the first
>> tiddler would write its output and force a refresh that prevented the
>> daemon from finishing the update for the other expressions, but I can't
>> find any place where that would happen when only the inputs to the second
>> expression are changing.
>>
>> I have been trying to figure this out for a while without any success,
>> any ideas?
>>
>> The code is on git hub:
>> https://github.com/inmysocks/TW5-MathyThing/blob/master/sumfield-daemon.js
>>
>> and an example wiki showing what happens is here:
>> http://ooktech.com/jed/ExampleWikis/MathyThing/
>>
>> The operation takes the list of tiddlers from the filter in the filter
>> input field and sums the values in the field given in the sum field input
>> and stores those values in the store field of the store tiddler. The result
>> is also displayed in the expression tiddler.
>>
>> In the example only Expression 1 will update regardless of the changes to
>> the inputs to Expression 2.
>>
>> Sorry if I didn't explain this well, I am very frustrated right now. Any
>> help would be greatly appreciated.
>>
>
--
You received this message because you are subscribed to the Google Groups
"TiddlyWikiDev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/tiddlywikidev.
For more options, visit https://groups.google.com/d/optout.