Date: Thu, 28 Mar 2024 18:13:56 +0000 (UTC) Message-ID: <276012284.10739.1711649636257@911f0a1bad02> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_10738_182224222.1711649636257" ------=_Part_10738_182224222.1711649636257 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
In this page, you will find a comprehensive overview of differen= ces and what to keep in mind when developing for both Smart Client and Web = Client.
What | =20Comment | =20
---|---|
Use application.getApplicationType() to determine which type of client = your solution is running in and branch accordingly, when using functionalit= y that is not supported in both clients. | =20=20 |
Use style sheets and style classes as opposed to specifying styling on = elements directly by setting their properties. | =20Besides a more consistent styling throughout your solution, it means le= ss styling info is send to the client, thus the Web Client performance will= improve. | =20
Transparent PNG images are not supported by Internet Explorer <=3D 6= . If you need transparent images and support for Internet Explorer <=3D = 6, use transparent GIF's. | =20=20 |
Use short running locks and transactions, preferably acquire and releas= e them within the execution of the same method. | =20If user interaction is required to release an acquired lock of transact= ion and the user closes the browser/navigates away from the Web Client page= without releasing the lock or transaction, the lock/transaction will remai= n until the Web Client session times out and is destroyed. Use autosave=3Df= alse to accumulate edits without having a lock/transaction active. | =20
Keep in mind that the user can, at any time, navigate away from your so= lution, by opening a bookmark, typing a new URL etc. (see previous remark)<= /td>=20 | =20 |
Try to minimize the use of comboboxes/editable fields with (long) value= lists attached, especially in combination with forms in Tableview. | =20Use type-ahead fields for long valuelists or consider a edit popup dial= og with search capabilities. For each field/combobox, the entire valuelist = has to be included in the HTML source of the Web Client. | =20
Minimize the use of dialogs, both modal and non-modal, and create a fla= t interface instead. | =20Multiple windows/dialogs, in general, is not a concept users like when = using a browser. Popup blockers might block your (non-modal) dialog from sh= owing. | =20
Minimize the switching between forms as much as possible. For example: = Add search functionality directly on the form, instead of on a separate for= m. | =20Minimal switching between forms provides a faster user experience. | = =20
When using images that do not come from the Servoy Media Library, do re= -use images. For example: On a TreeView, when using the same image on multi= ple nodes, do not store the image for the node on each node record, but lin= k to one shared image stored somewhere else. | =20This means that only one image needs to be downloaded to the Web Client= , instead of multiple copies of the same image. | =20
Always design for a minimal resolution and allow the UI to grow | =20This advice is also applicable for Smart Client development, but the Sm= art Client is more forgiving when not properly sizing elements and forms=20 |
Always place elements within the bounds of the form(part) | =20Not doing so will result in (unwanted) scrollbars in the Web Client. Th= e Smart Client is more forgiving in this area | =20
What | =20Smart Client | =20Web Client | =20Comment | =20
---|---|---|---|
Automatic closing of a client that has been idle for a certain period o= f time | =20Possible with plugin/additional coding | =20Servoy Web Client is automatically closed when the HTTP session expires= on the application server(configurable). | =20=20 |
Commands | =20Fully supported | =20Commands are not supported, as there is no menubar in the Web Client fo= r the user to trigger the command. Using the window plugin, it is possible = to simulate the behavior of Servoy Smart Client. | =20=20 |
Method execution after the method shows a modal dialog using the dialog= s plugin or application.showformInDialog(...). | =20The method is halted until the modal dialog is closed. | =20The method continues to execute. | =20Web Client behavior will most likely be brought inline with the Smart C= lient behavior in a future version of Servoy. | =20
autosave mode | =20autosave is triggered when clicking outside of an element. | =20Clicking outside an element will not trigger a save. An explicit save b= utton is required. This also means that onRecordEditStop is not fired = immediately | =20=20 |
Default navigator | =20Slider to browse through records | =20Buttons to browse through records | =20=20 |
Browsing through records in Tableviews and portals | =20Scrollbars | =20Paging | =20=20 |
plugins.http.* | =20Operates client side | =20Operates server side | =20=20 |
plugins.file.* | =20Operates client side | =20Operates server side | =20Note: some of the functionality of the f= ile plugin is supported in the Web Client. Look here for more information | =20
plugins.udp.* | =20Operates client side | =20Operates server side | =20=20 |
plugin.window | =20=20 | =20 | Some functionality is supported in both clients and other functionality= is only supported in one of the 2 clients. See the plugin's documentation = here for more details | =20
application.executeProgram(...) | =20Operates client side | =20Operates server side | =20=20 |
application.executeProgramInBackground(...) | =20Operates client side | =20Operates server side | =20=20 |
application.getPrinters(...) | =20Operates client side | =20Operates server side | =20=20 |
application.getOSName(...) | =20Operates client side | =20Operates server side | =20=20 |
application.getCurrentLookAndFeelName(...) | =20returns applicable value | =20Not applicable | =20=20 |
application.setUIProperty(...) | =20Depends on the property | =20Depends on the property | =20=20 |
application.updateUI(...) | =20=20 | The Web Client UI only gets updated after method execution and this is = done automatically. Therefore, calling application.updateUI(...) will have = no effect. | =20=20 |
controller.setPreferredPrinter(...) | =20Operates client side | =20Operates server side | =20=20 |
controller.showPrintPreview(...) | =20Opens a form in print Preview mode in the client. | =20Generates a PDF which is then streamed to the client. | =20=20 |
form: onHide | =20=20 | the onHide event of a form does NOT fire when the user browses to a new= URL from within the browser (not triggered by code in the solution). | = =20Web Client behavior will most likely be brought inline with the Smart C= lient behavior in a future version of Servoy. | =20
solution: onClose | =20=20 | the onClose event of a solution does NOT fire when the user browses to = a new URL from within the browser (not triggered by code in the solution).<= /td>=20 | Web Client behavior will most likely be brought inline with the Smart C= lient behavior in a future version of Servoy. | =20
Default row selection highlight in Tableviews and portals | =
=20
Present | =20
Not present | =20
=20 |
What | =20Comment | =20
---|---|
Forms in Listview | =20TableView and RecordView are supported in Servoy Web Client. Use Tablev= iew instead. | =20
Interactive (plain) JavaBeans | =20Unless the bean is specifically designed to work in Servoy Web Client, = only a snapshot JPEG image of the bean will be rendered in Web Client. | = =20
Client side integration with hardware on the client machine | =20Not supported in browsers | =20
Look and Feels | =20Look and Feels are a Java concept. It is possible to edit the default S= ervoy Web Client style sheet. | =20
application.setClipBoardString(...) | =20Not supported in browsers | =20
application.getClipBoardString(...) | =20Not supported in browsers | =20
application.getWindowX(...) | =20Not supported in browsers | =20
application.getWindowY(...) | =20Not supported in browsers | =20
application.getScreenWidth(...) | =20Only initial value is available | =20
application.getScreenHeight(...) | =20Only initial value is available | =20
application.setWindowLocation(...) | =20Not supported in browsers | =20
application.setWindowSize(...) | =20Not supported in browsers | =20
application.showFontChooser(...) | =20=20 |
application.showColorChooser(...) | =20=20 |
application.showI18Ndialog(...) | =20=20 |
application.showCalendar(...) | =20=20 |
application.setNumpadEnterAsFocusNextEnabled(...) | =20=20 |
application.setStatusText(...): tip parameter | =20Browsers do not support the display a tooltip over the status bar | = =20
application.setToolbarVisible(...) | =20No support in browsers to interact with browser toolbars from within a = page | =20
application.playSound(...) | =20=20 |
application.isLastPrintPreviewPrinted(...) | =20Printing is handled by the browser; no support in browsers to determine= if a print was actually done from within a page. | =20
form: showInMenu property | =20No support in browsers to interact with the browser menubar from within= a page; to no window menu present in the Web Client. | =20
form: bgRowColorCalc dataproviderName argument | =20The dataproviderName is not sent into the bgRowColorCalc when running i= n Web Client. | =20
controller.sortDialog(...) | =20=20 |
element: rollOverImageMedia property | =20=20 |
element: cursor property | =20Web Client behavior will most likely be brought inline with Smart Clien= t behavior in a future version of Servoy. | =20
element: setScroll function | =20=20 |
element: rotation property | =20=20 |
plugins.agent.* | =20=20 |
plugins.excelxport.* | =20No support in browsers to interact with the browser menubar from within= a page. | =20
plugins.textexport.* | =20No support in browsers to interact with the browser menubar from within= a page. | =20
plugins.spellcheck.* | =20=20 |
Border property: titleBorder value | =20Objects that have a border property will render with a lineBorder inste= ad of a titleBorder in the Web Client. | =20
Draw tools | =20OVAL, ROUNDED_RECTANGLE and BORDER_PANEL will result in a normal RECTAN= GLE | =20
RTF field | =20No support in browsers for RTF formatted text | =20
HTML in Comboboxes | =20Not supported in browsers | =20
Combobox: editable property: true value | =20Not supported in browsers | =20
HTMLArea: editable property: true value | =20=20 |
TabPanel: tabOrientation property: left/right/bottom values | =20=20 |
Tab: imageIcon property | =20=20 |
Portal: multiLine, intercellSpacing and showVerticalLines properties=20 | =20 |