Ajax View Controls

Web applications split their processing between the server and the client. Increasingly, more processing is being done at the client to give a better user experience. Ajax programming has risen as one of the more popular means of achieving responsive client user interfaces and a wide variety of Ajax Frameworks have been developed.

Ajax translates as "Asynchronous JavaScript and XML", but what it typically means is doing background HTTP requests to get data and update the user interface without doing a complete browser refresh. This gives a more immediate and natural feel to a web application. Ejscript supports Ajax and Ajax frameworks via its ViewConnector which provides a plugable interface for Ajax libraries.

ViewConnector Interface

The ViewConnector interface defines methods for common user interface controls such as: button and checkbox, but it also provides high level controls such as chart and table. Application Views can use these methods to render UI components with very little code or effort.

However the ViewConnector is just an interface. It contains no implementation. The actual implementation is provided by the Ajax Framework libraries.

Ajax Libraries

The purpose of the ViewConnector is to provide a modular way to add Ajax Framework libraries and to give you choice which library you use. Individual Ejscript Views can select different libraries for each view control in the web pages.

Each Ajax Framework offers a different set of capabilities and restrictions. However, these differences impact mostly on the client side which is outside the scope of the View Connector Interface. The ViewConnector adaptors transform the interface for the server-side of each Ajax library to be compatible with the View Connector Interface.

Ejscript currently supports the Ejscript Ajax library and portions of the Google Visualization library. Support for other frameworks will be available soon in future releases.

Dynamic Controls

The View Control Interface is designed to support controls that can dynamically retrieve data from databases and refresh their contents automatically.

Here is an example of a table configured to display stock market data in a grid with the current price for each stock. The grid will refresh its data every 2 seconds without updating the entire web page.

<%
    table(Stock.findAll(), {
        refresh: 2,
        click: "edit",
        columns: {
            ticker:         { },
            stockName:      { },
            price:          { render: currency("$$%,d") },
        },
        connector: "google",
        width: "80%",
}) %>

ViewConnector Methods

The ViewConnector interface defines the following methods:

Name Description
aform Render an async (ajax) form
alink Render an async (ajax) link
button Render a form button
buttonLink Render a link button
chart Render a graphical chart
checkbox Render an input checkbox
extlink Render an external link
image Render an image
input Smart input control. Delegates depending on the data type.
label Render a text label
link Render an internal link
list Render a selection list (drop-down)
mail Render a mail link
progress Render a progress bar
radio Render an input radio button
status Render a status control area
script Render a script tag
stylesheet Render a stylesheet tag
table Render a table
tabs Render a tab selection control
text Render an input text field
textarea Render an input textarea field
tree Render a tree control

© Embedthis Software. All rights reserved.