Joshua,

Thanks for the details. Using your procedure, I am able to reproduce the
same issue. I'm still thinking the issue is using fields in the same
tiddler to store the json output. I plan to rewrite the usage demo so it
only uses other tiddlers to store the output. If that helps then I will
remove the code which attempts to support that mode of operation and
document that the use should avoid this approach. I think that is the
simplest solution.

Brian

On Sat, Mar 16, 2019 at 5:52 PM Joshua Fontany <[email protected]>
wrote:

> Reproduction Steps:
>
> 1. Load up https://btheado.github.io/jsoneditor.html
> 2. Go to the "*Degenerate case: no schema specified*" example
> 3. Change the root to "array" and add 1 item.
> 4. Set the first array item to type "boolean".
> 5. Set the first array item to type "number".
> 6. Set the first array item to type "boolean".
>
> Observed Results:
> Step 4: The schema at the bottom reads `[false]`, but the UI item renders
> `null`.
> Step 5: The schema at the bottom reads `[""]`, and the UI item renders
> correctly.
> Step 6: The schema at the bottom reads `[false]`, but the UI item renders
> `null`.
>
>
> Best I could tell from the symptoms, there is something going on where the
> editor widget confirms the edit and writes the JSON. This triggers TW's
> refresh mechanism. When it gets to your `JSONEditorWidget.prototype.refresh`
> function it detects that the SCHEMA value of the options has changed, which
> triggers `this.refreshSelf();`. This appears to trigger TW's refresh
> cycle again, causing the selected option to be written - but the UI is
> using the previous version of the schema. Really weird case. I'm going to
> read through the guts of JSONEditor's core.js file and also the
> "./editors/*" functions to see if we can get it to spawn native TW input
> widgets (which will automatically handle writing the data to the target for
> you with the TW input mechanism), and disable JSONEditor's internal refresh
> mechanism. We'll see how that goes...
> Best, Joshua F
>
> On Saturday, March 16, 2019 at 1:47:12 PM UTC-7, Brian Theado wrote:
>>
>> Joshua,
>>
>> > there is a race condition bug in how the jsoneditor manipulated the DOM
>> vs how TW manipulates the DOM
>>
>> Could you share the details on that?
>>
>> That was the first TW plugin I wrote. Being a little new I found it
>> annoying not to be able to use a field in the same tiddler to store the
>> output json (in fact if no text reference is passed in, the default is a
>> field on the current widget) and so I tried to code around it and make it
>> work for that case. I think that was a mistake and I could easily see it
>> causing some kind of problems. Could that be the source of your issue?
>>
>> Brian
>>
>> On Fri, Mar 15, 2019 at 3:17 PM Joshua Fontany <[email protected]>
>> wrote:
>>
>>> I'm experimenting with rendering UI by setting up JSON Schemas. There
>>> was an old TW port of one of the earlier versions of this project, and I
>>> was able to import the currently maintained module into that plugin.
>>>
>>> Than I discovered that there is a race condition bug in how the
>>> jsoneditor manipulated the DOM vs how TW manipulates the DOM. I scanned
>>> through the docs and sourcecode a while, and it seems like they have built
>>> this modularly enough that I can change the "rendering engine" file for
>>> each Input type and make them render native TW widgets. I will have to cut
>>> out all of json-editor's native messaging code and just rely on the TW
>>> refresh and get/setTextReference functions.
>>>
>>> This seems doable, but wanted to see if anyone has run into any
>>> 'gotchas' or roadblocks in similar cases...
>>>
>>> origin: https://github.com/json-editor/json-editor
>>>
>>> previous TW plugin: https://github.com/btheado/jsoneditor
>>>
>>> current TW plugin (broken, does not push json updates back to TW):
>>> https://github.com/joshuafontany/TW5-jsoneditor
>>>
>>> current Example wiki:
>>> https://joshuafontany.github.io/TW5-jsoneditor/
>>>
>>> Best,
>>>
>>> Joshua Fontany
>>>
>>> --
>>> 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 https://groups.google.com/group/tiddlywikidev.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/tiddlywikidev/65200232-3d7d-448e-a741-c3a652d60cca%40googlegroups.com
>>> <https://groups.google.com/d/msgid/tiddlywikidev/65200232-3d7d-448e-a741-c3a652d60cca%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> 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 https://groups.google.com/group/tiddlywikidev.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/tiddlywikidev/37b00b7b-5440-43e9-beb6-f3bc9dbd85b3%40googlegroups.com
> <https://groups.google.com/d/msgid/tiddlywikidev/37b00b7b-5440-43e9-beb6-f3bc9dbd85b3%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 https://groups.google.com/group/tiddlywikidev.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywikidev/CAO5X8Cx6jYQ6NUi_ZwasMGwDfK54Gus_BfBCZZUzwCZ9cp5%2BHg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to