1010data's QuickApp framework provides a powerful and versatile set of interactive layouts and widgets for building custom
front-end interfaces on top of 1010data's analytics engine.
A QuickApp is essentially one or more widgets within a dynamically managed environment. A widget is used to visually
represent a block of Macro Language code.
A query may be used to specify the data that a widget displays. One way to associate a query with a particular widget
is to insert the Macro Language code for that query between the opening and closing tags of the <widget>.
A powerful aspect of the QuickApp framework is that interactions with one widget can affect the state of other widgets
as well as the data that those widgets display. The dynamic environment established by the QuickApp manages the state
of all of the widgets and is responsible for updating any widgets that reference a dynamic variable which has
changed.
By default, widgets are arranged horizontally in the order in which they appear within the <dynamic>. However, you can use the <layout> element to change the arrangements of the widgets. The arrangement of widgets alternate vertically and horizontally
with each embedded <layout>.
The same data that is displayed in a grid widget can also be displayed graphically. The class_ attribute determines the form in which the data is displayed.
Blocks allow you to share the same query code among multiple widgets without the need to maintain multiple copies of the
code.
By default, a QuickApp automatically updates any and all widgets that reference a dynamic variable whose value has
changed. However, this might not be the desired behavior. QuickApps provide a number of mechanisms to give the user
more control.
QuickApps allow you to specify a condition that controls whether a particular widget is visible or hidden.
There are times you might want to do something when a particular dynamic variable changes. For instance, you could imagine
that if the user interacted with a certain widget in the QuickApp, you would want to set the value of one or more other
dynamic variables.
While a widget is in an invalidated state, you can hide the widget so that it is not visible to the user. You may want
to require that certain conditions are met for a widget to be validated.
There are times when you might want to get the value of a specific cell in a table and save it in a dynamic variable.
You can organize the content of your QuickApp using any of the predefined layout types, such as a splitter layout, which
allows you to divide the QuickApp into resizable areas.
A QuickApp consists of a single <dynamic> tag that contains one or more <widget> and <layout> tags and other Macro Language elements.
As with any programming effort, there are many ways to accomplish a task, and a much smaller set of recommended ways
to approach the solution. Here is a list of best practices related to the development of QuickApps.
When something goes wrong during your QuickApp development, it can sometimes be challenging for the new developer
to know where to begin. This section will help to get started with troubleshooting your application.