Title: Dialog unbuffered problems Post by: Massimiliano D. on February 13, 2010, 12:14:03 am Hi, i'm trying to make a form like one of the multiple dialog demo with an input block and a display array block under input.
I would like to refresh the displayed data immediatly whne the user change the current input field so i do something like this: dialog (attribute unbuffered) input by name my_record.* ... on action dialogtouched call rebuild_select(my_record.*) returning my_select declare my_cursor from my_select call my_array.appendElement() foreach my_cursor into my_array[my_array.getLength()].* call my_array.appendElement() end foreach call my_array.removeElement(my_array.getLength()) ... end input display array my_array to sc_array.* attributes (count=my_array.getlenght()) ... end display ... end dialog it works quite well, but if i try to add a space in the current input field, when the dialogtouched action triggers, my current input filed are automatically right trimmed. so i try with an costruct sub dialog, and the input field dont lose the trailing space, but a costruct build a query with the like operator only if the current field contains '*' so i try to change the current input buffer of the construct with the FGL_DIALOG_SETBUFFER( ) but the application crashes, it only works without the unbuffered mode. How can i do? Thanks Max Title: Re: Dialog unbuffered problems Post by: Reuben B. on February 14, 2010, 09:53:26 pm Hi Max,
What version? One of my customers reported something similar to this last year(Bz12751 String value should not be truncated when using dialogtouched action). You should also be careful with (and it may be an indication that you are using a 2.1 version) ... on action dialogtouched call rebuild_select(myrecord.*) ... as the my_record.field for the current field won't be populated. Within on action dialogtouched, what you have typed into the current field is still in the buffer FGL_DIALOG_GETBUFFER(), even if using UNBUFFERED. The reason for that, imagine if myrecord.field was an INTEGER or DATE, and the user types in "abc". Title: Re: Dialog unbuffered problems Post by: Massimiliano D. on February 15, 2010, 08:53:21 am fglrun version1 :
fglrun -V fglrun 2.20.09 build-1369.136 Built Sep 11 2009 14:46:02 (c) 1989-2009 Four J's Development Tools but it happens with 2.11.10 buid-1169.136 in input by name my_record.* all of my_record fileds are string or integer Title: Re: Dialog unbuffered problems Post by: . on February 15, 2010, 09:26:08 am Just a side note on dialogtouched method:
I would recommend to use it carefully: for each keystroke GDC sends the content of the field to the runtime system and waits for the answer. On a fast network this is ok, but if you intend to deploy your application on a slower network it may have a big impact on performances - for instance if you're running GDC through https with authentication, each time the http keep-alive times out a new connection is made, with ssl handshake and authentication which may take a little time. And what can be acceptable for the end user when leaving a field may not be understood for each key press. Title: Re: Dialog unbuffered problems Post by: Massimiliano D. on February 15, 2010, 09:38:40 am OK, thanks for the note, in fact i use the dialogtouched only few times, for a user friendly serch, is there any work-around??
Regars Max Title: Re: Dialog unbuffered problems Post by: Sebastien F. on February 15, 2010, 10:20:54 am The dialogtouched action should only be used to detect that the user has started to modify the current record.
https://4js.com/techdocs/genero/fgl/devel/DocRoot/User/MultipleDialogs.html#detecting-changes Seb Title: Re: Dialog unbuffered problems Post by: Reuben B. on February 16, 2010, 05:00:15 am Max,
Attached is an example I used at presentations in my region when 2.20 was released. Looking back at it, it is very similar to what you are trying to achieve. If you look near the end of the code, there is an entry you can uncomment to verify that trailing spaces is treated correctly. As well as updating the list based on what you type, I change the style to indicate a good or a bad value. As others have commented, be conscious of network traffic, and only have the action active where necessary. Seb, Pierre-Nicolas: Go to google and type part of a search phrase into the search box and do nothing for 1 second, it will come back with a list of 10 top search expressions. That is similar to type of functionality I was aiming for in my example. It maybe that ON ACTION dialogtouched is not the best method to achieve something similar but it is what we have got. A variation of ON IDLE that is only triggered once would've been the preferred choice e.g. Code
Reuben Title: Re: Dialog unbuffered problems Post by: . on February 16, 2010, 07:15:37 am Reuben,
Don't misunderstand me. I'm ok with this pattern and I'm ok with the feature. I'm just underlining this could be a performance bottleneck on slow networks and that you've to be aware of that before implementing this everywhere. I would also do something like ON ACTION dialogtouched IN FIELD search Instead of a global ON ACTION for a 100 fields dialog, so the action is only active in the "search" field - if you're doing a google like form. Title: Re: Dialog unbuffered problems Post by: Sebastien F. on February 16, 2010, 09:29:55 am Reuben,
Just a quick thought but can your suggestion with ON IDLE 1 DONTREPEAT not be implemented by mixing the regular ON IDLE trigger with ON ACTION dialogtouched, by using your own flag? Seb Title: Re: Dialog unbuffered problems Post by: Massimiliano D. on February 16, 2010, 11:15:14 am Reuben, ... implementing this everywhere. Ok, you're right Pierre for the traffic network and i had already read the manual entry for special dialogtouched action about the network traffic and i don't wanna use this feature everywehere, but it's a way to provide to the final user a very simple search. Seb, it's exactly what i'm looking for! Much appreciate this. Regards Max Title: Re: Dialog unbuffered problems Post by: Reuben B. on February 19, 2010, 06:08:47 am Reuben, Just a quick thought but can your suggestion with ON IDLE 1 DONTREPEAT not be implemented by mixing the regular ON IDLE trigger with ON ACTION dialogtouched, by using your own flag? Seb Probably but the ON IDLE 1 will keep triggering every 1 second (and also I'd prefer to keep ON IDLE for a timeout). I'm assuming it is still not possible to enable and disable the ON IDLE trigger via setActionActive(). Title: Re: Dialog unbuffered problems Post by: Sebastien F. on February 19, 2010, 08:12:02 am Reuben,
No setActionActive() has no effect on the ON IDLE trigger, because it's not an action. Feel free to file a new bug/enhancement for that, should not be a big deal to do a DIALOG.setIdleTimeoutActive() Seb Title: Re: Dialog unbuffered problems Post by: Massimiliano D. on February 22, 2010, 11:41:51 am Seb one last question, is possible to use the on fill buffer in this kind of dialog??
becouse i can't do this. Thanks for the help Regards Max Title: Re: Dialog unbuffered problems Post by: Sebastien F. on February 22, 2010, 12:03:12 pm Seb one last question, is possible to use the on fill buffer in this kind of dialog?? becouse i can't do this. Thanks for the help Regards Max ON FILL BUFFER (paged mode) should work in DIALOG + DISPLAY ARRAY, see: https://4js.com/techdocs/genero/fgl/devel/DocRoot/User/MultipleDialogs.html#paged-mode Please contact us via support channel with code example, so we can analyze your case. Seb Title: Re: Dialog unbuffered problems Post by: Massimiliano D. on February 22, 2010, 03:57:17 pm Ok, i found a way to do this.
Thanks for the help!!! Regards Max |