Hello Carsten, Thank you for your remarks. I'm really appreciated.
Carsten Harnisch wrote: > Siarhei! > We had started to work with QxTransformer and picked the > "DataProvider"-stuff here as a starter for our own implementation. I just > summarize a few issues that we encountered here. Please feel free to adapt > these issue to your concept : > > 1) Internal Transport-Format > The usage of "sub-arrays" for the data-transport is not very handy. The > current "MDataManager.js" will (JSON-)serialize the data in structures like > obj.TextFieldName.value = 'data; > > as for ComboBoxes this will be : > obj.ComboBoxFieldName.value = 'data; > obj.ComboBoxFieldName.selected.value = 'data; > > than for Checkboxes: > obj.CheckBoxFieldName.checked = true/false; > > As for writing a backend (e.g. a database storage) this is not very handy, > as you have to know how get/set the data depending on the clientside used > widget. So we remodeled this part to always return a "flat" value, so the > clientside widget is responsible how to "bind" the value to its internal > "values". > > So we have only : > > obj.TextFieldName = 'data'; // uses setValue > obj.ComboBoxFieldName = 123; // selects the ListItem with the value 123 > obj.CheckBoxFieldName = 1; // transforms to setChecked(true); > > This is much easier on the backside as a "SQL-resultset" could be mapped > back and force. > May be you are right with convenient for user but I think also about that we can have few values/propeties from one widges which we should store on server. I don't have any ideas what can be as example but may be we need to do it for more complicated widgets such as tree or table if we decide to support them. Anyway, I'll try to analyze this one more and let you know. > 2) Error Handling > Normally a backend would not only store the data but also add some > validation logic. So we changed the return format of the backend to give the > ability to return "validation-message" back to the client. This regards > simply return "error-message" that are routed back to the widget. So the > widget gets an event (implemented with a MixIn) with the validation error. > The widget then might do an action e.g. changing the background-color, > showing an alert, popup a tooltip, or delegate the error to another widget. > (Here we have a .NET inspired ValidationError-Widget). > We should separate business logic validation and user input validation. Business logic validation it can be done only on server side because we need to do calls to database (for example to check if user name exists). And here you are right we need to return some object which will contains and validation errors and data from server and I took into account that when design this concept. Ok I chalk up this thought. May be I need to describe backend service and interaction more clear . Ok. > 3) Formbased Validation Errors > In conjunction to 2) we have also situation where the validation has to be > done on a form-based level. E.g. a "Change Password"-UseCase would need to > check if 2 password fields ("repeat password") have the same values. Here a > validation-feedback might need to postback the validation to 2 client-side > widgets. Our implementation will return also a "Script"-Field that could be > eval'ed and does the feedback to the user, e.g. : > > (done on the serverside) > result.script = ' > this.pwd1.setColor('red'); > this.pwd2.setColor('red'); > alert('The passwords have to match'); > ; > The clientside then just does an eval(result.script); > We are planning to add built-in validation functionality for QxTransformer (but I think not in initial release with flexible system to add error renderers - highlighting, hints, etc.). This kind of validation is client side. Well and I'm not big fan of eval() because it's potential unsafe. But sometimes it's very hard without eval(). :) Thanks for significant remarks! Best regards, Siarhei > greetings > > Carsten Harnisch > ----------------------------------- > InTradeSys Limited > > -----Ursprüngliche Nachricht----- > Von: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] Im Auftrag von Siarhei > Barysiuk > Gesendet: Mittwoch, 25. Juli 2007 19:46 > An: qooxdoo Development > Cc: Christian Boulanger > Betreff: [qooxdoo-devel] Data Binding Mechanism. Qooxdoo and QxTransformer. > > Hello folks! > > For few last day I was thinking about data binding functionality for qooxdoo > (including 'plain html forms' > emulation and auto completion) and I would like to present results of my > work for discussion. > I will be really appreciated for any remarks and suggestions from all > developers. If you have any questions fell free to ask. Hope it will be > interesting for you. > > I would like to notice that this is only concept. I've already implemented > few parts but not everything. > I'm working at this task at present. This is last part of work before > initial release of QxTransformer. > (In document I didn't pay attention to backend because you can implement > backend in different ways. > Would like to concentrate only on JavaScript qooxdoo API and QxTransformer > syntax.) > > The concept is based on functionality which we have now in QxTransformer > (written by Christian Boulanger) with improvements (which make API more > flexible). > > Please find attached Data Binding Mechanism Concept document. > > Thanks for any remarks and suggestions. > > Best regards, > Siarhei Barysiuk > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > qooxdoo-devel mailing list > qooxdoo-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel > > ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ qooxdoo-devel mailing list qooxdoo-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel