Just a thought for when you get back to it then ­ is there a chance that two
bits of code were trying to change the model(s) at the same time?  I have
had something similar where recursive binding can cause conflicts and the
wrong things get added/removed - e.g. An event changes the model which
causes an event which indirectly causes a change to the model etc.  Have you
tried setting a long timeout (e.g. a second or two) before adjusting the
model?

John

From:  Gregory Beaver <[email protected]>
Reply-To:  qooxdoo Development <[email protected]>
Date:  Thursday, 29 August 2013 14:01
To:  Joaquín Fernández <[email protected]>, qooxdoo Development
<[email protected]>
Subject:  Re: [qooxdoo-devel] Frustrating development

Ack!  Accidentally clicked send.

I have a database of composers, the pieces they wrote and the movements of
those pieces.  It is sent to qooxdoo as Json, and using a Json marshal made
into 3 classes.  The kids property in composers stores the array of pieces,
and the same is true for the kids property of pieces, which stores an array
of movements.

I use this to render a tree in one tab of the backend, and I can add
composers, pieces and movements as needed.  However, because the data set is
so large, I do some lazy loading.  At first, each composer's only child node
is a piece called "Loading..."  When the code sees it, it lazy loads the
children and updates the display.  All this works perfectly for years and
still works.

In the tab where I edit concert info, I am re-using the data from the
composers/pieces/movements tab to provide the source to choose program info.
I created a widget years ago that allows clicking a composer from a
selectbox qx.ui.form.List, which populates another selectbox with the
composer's pieces, lazy loading as necessary, and then chooses movements,
lazy loading as necessary.

This process is too slow, it takes me hours because there is a subtle bug
where selecting the movements does not actually work unless I de-select them
and re-select them.  Also, scrolling through the list of composers and
pieces is too slow.

Thus I had the idea of instead using qx.ui.list.List.  Coupling this with a
text field and using that to filter the list.  So if we are playing
Beethoven String Quartet Op. 59 No. 2, I could type "bee" and it will filter
the list of 115 composers to just Beethoven.  I click Beethoven and the
qx.ui.list.List model changes to the pieces he wrote and the text field
changes to "Beethoven, Ludwig can ".  I type "59" after that and it filters
to the 3 Op. 59 quartets he wrote.  I click 59 No. 2 and the text field
changes to "Beethoven, Ludwig van String Quartet in E minor Op. 59 No. 2"
and disables itself.  Meanwhile, the list updates to the 4 movements and I
can deselect any we are not playing on that concert.

All of this worked except when I clicked Beethoven, the widget remained
selected after the model change and often the movements would not display
properly sometimes, with no clear cause-effect, implying an asynchronous
issue of some sort.

I pulled out the specific code, and the bug disappeared.  So, there is
something about the interaction of the larger code and the smaller that
triggers the bug.  This is why I erased the whole thing.  It needs a smarter
re-imagining before I can restart it, and as I said, my available
development time was this week.  I won't have another window for a month or
so.

If you have read this far, thank you!

Thank you also for the quick and calmly measured responses.  Much
appreciated

Greg



On Aug 29, 2013, at 7:44, Gregory Beaver <[email protected]> wrote:

> Thank you all for the quick feedback.  A few responses:
> 
> 1) the prettify feature in chrome was a new one and will make debugging the
> generated accessors possible, one problem solved
> 2) I debug in source mode, sorry that was not explicit.  I am not a masochist
> in that way :)
> 3) although I was trying to debug 50 lines of code, I neglected to explicitly
> state that I was drawing upon about 4000 lines of pre-existing code and simply
> trying to add a new widget in the mix.
> 4) when a selection is updated in the model, the actual rendering happens
> magically later and this is where debugging breaks down.  I was able to verify
> that the selection was properly becoming no selection, but the rendered view
> selected the same widget even though its underlying model had completely
> changed.  Even after pouring over the source on github (lots easier than on
> disk) for hours I was still unable to determine where rendering occurs.
> Trying to break on any exception, stepping through the code also failed to
> locate where it happens.  This is what I mean by "black magic."  Perhaps there
> is a way to spit out debug info on events in qooxdoo, but I did not see a way
> when stepping through event handling.
> 5) what am I actually trying to do?  This should help you all help me.  :)
> 
> I am working on the backed to my quartet's website.  We have a calendar which
> is directly linked to our google calendar.  When an event appears on the
> private calendar, a cron job pulls the data into a database, spits out an
> email with the details etc. etc.  I then log into our backend and using
> qooxdoo, update the event to include detailed information like the concert
> program, ticket information, the presenter and concert hall, etc.  the backend
> generates info for our public google calendar, and our website pulls the data
> out and renders it using PHP.  The qooxdoo backend is 100% separated, and the
> whole thing uses SQLite and git.  Changes to the website appear at a test site
> and have to be manually pushed and then pulled to the public website, so it is
> all redundantly backed up.
> 
> The part I am working on is the concert programs.
> 
> 
> 
> On Aug 29, 2013, at 0:53, "Joaquín Fernández" <[email protected]> 
> wrote:
> 
>> Hi Greg
>> 
>> You can debug minified code in Chrome step by step using pretty print tool in
>> developer tools.
>> 
>> Go to Sources tab and click in '{}' icon in bottom toolbar. If this icon is
>> selected, all code is beautified when you debug source code including auto
>> generated code in qooxdoo and minified code from build job.
>> 
>> Hope this help you.
>> 
>> Regards
>> 
>> Joaquín F.
>> 
>> Enviado de Samsung Mobile
>>  
>> 
>> 
>> -------- Mensaje original --------
>> De: Gregory Beaver <[email protected]>
>> Fecha:  
>> Para: qooxdoo Development <[email protected]>
>> Asunto: [qooxdoo-devel] Frustrating development
>>  
>> 
>>  
>> Dear qooxdoo,
>>  
>>  
>>  
>>  
>> I wrote a very complicated application based on qooxdoo a few years ago.  It
>> still works great but there are some kinks that I was trying to work out.  I
>> spent 13 hours over the past week trying to get 50 lines of code to work.  8
>> of that was trying to debug a problem with appearance and the magical fact
>> you have to tell some things what they should look like in some
>> circumstances, but not in others.  No errors or warnings to assist either.
>>  
>>  
>>  
>>  
>> Then, I ran into a weird bug with selection that I cannot reproduce with any
>> shorter code, and spent 6 hours writing no new code and simply trying to
>> figure out where the hell selection is converted to actual highlighting in
>> qx.ui.list.List
>>  
>>  
>>  
>>  
>> As of right now, I have erased all the work and thrown in the towel.  I have
>> not had this much frustration and impossibility of solving a banal issue
>> since I worked with Microsoft Access in 2000.
>>  
>>  
>>  
>>  
>> There has got to be a better way to do things.  Too much is magic, the
>> generated code has no line breaks and can't be stepped through even in source
>> mode.
>>  
>>  
>>  
>>  
>> I have literally run out of all of my available time allotted for this
>> project, and we have to stick with the older not-quite-working code as a
>> result.
>>  
>>  
>>  
>>  
>> If any of you have successfully found a time-efficient way to debug problems
>> in selection or binding or any other qooxdoo black magic, I would appreciate
>> the tips for the next time I have a block of time to try something.  Until
>> then, I hope my utter failure is a wake up call from a former evangelist of
>> qooxdoo (one of my blog posts is a top hit in google search for qooxdoo with
>> many visitors every day).
>>  
>>  
>>  
>>  
>> Thanks,
>>  
>> Greg
>>  
>> ‹
>> Sent from Mailbox <https://www.dropbox.com/mailbox>  for iPhone
>>  
>> 
----------------------------------------------------------------------------->>
-
>> Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
>> Discover the easy way to master current and previous Microsoft technologies
>> and advance your career. Get an incredible 1,500+ hours of step-by-step
>> tutorial videos with LearnDevNow. Subscribe today and save!
>> http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
----------------------------------------------------------------------------
-- Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk_
______________________________________________ qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to