Roadmap 2016/2017

See what's coming next.

2016 Roadmap

1. Touch UI (December)

We have made an enormous investment in creating a mobile- and desktop-friendly user interface called Touch UI. The purpose is to enable RAD implementation of apps that are friendly to both mouse and touch-enabled devices. We have spent close to 2 years working on perfecting this exciting technology. A few remaining features are being finalized as we speak. This is a summary of features that are expected to be fully completed in October/November of 2016.

“Survey” Controllers Completed in Release

There are various built-in interactive user interface screens in applications created with Code On Time:

Desktop UI provides custom implementation for each of these features. The ambitious goal of Touch UI is to make them even more convenient for the end users. We have came to the realization that the form rendering engine of the client library can be used in the implementation instead. This means that a custom data controller needs to be created on-demand, when advanced search, field-level search, batch edit, or import is activated. “Survey” controller, a powerful addition to the client library, has been introduced. We have also found ways to use survey controllers as a method of parameter collection for actions, as an alternative to custom confirmation controllers .

Here is an example of a survey controller used as a confirmation for “Change Supplier” action that works in both Touch and Desktop UI:

    questions: [
        { name: 'Product', readOnly: true },
        { name: 'Supplier', readOnly: true },
            name: 'NewSupplierID', type: 'Int32', text: 'New Supplier', required: true,
            items: {
                controller: 'Suppliers', style: 'Lookup',
                dataValueField: 'SupplierID', dataTextField: 'CompanyName',
                newView: 'createForm1'
    init: function () {
        $row.Product = $context.ProductName;
        $row.Supplier = $context.SupplierCompanyName;

A survey controller defines one form view with a matching set of fields, and an optional custom HTML form template. When instantiated, it will have a single data row. Values are displayed in edit or read mode. Survey controller does not have direct binding to data on the server or matching server-side business rules. Survey controllers support all client-side features available in traditional data controllers such as conditional visibility, and are programmable with JavaScript. The JavaScript definition of a survey controller is transformed by the client library into a data structure identical to the result returned when a traditional data controller is processing a request to read data on the server.

Definitions of the survey controllers may be created on-the-fly or stored alongside traditional server-side controllers in the “~/scripts/surveys” folder. The visual form designer of COT v9 will allow designing forms of both “survey” and standard data controllers.

These are the use cases for survey controllers:

Batch Update   Completed in Release

The end users are now able to update simultaneously the field values of multiple records. In order to update a batch of records, the user will select multiple records in the list or grid, and choose “Batch Edit” action in the context menu of one of the selected records. The user will then indicate the fields that must be updated, supply new values, and initiate the batch update.

Basket Input Completed in Release

You may have experienced this mode of data input when specifying multiple recipients of an email. Now you can enable any number of such inputs in your forms without writing a single line of code.

The end users are able to enter a list of values using auto-complete, dropdown, or lookup input styles when the target controller is specified for a many-to-many field. A list of values above the input allows the user to manage the selected items.

One-to-One Relationship NEW Scheduled for Release

Three new lookup item styles will be introduced: "OneToOne", "OneToOneLookup", and "OneToOneAutoComplete".

These lookups will behave like their counterparts, "Lookup" and "Complete", with one exception:

When the entered text is not matched to an equivalent lookup value, the value will remain as-is. The user interface will not display the "Create New" option. Instead, the lookup value will be processed on the server. The generic server-side handler will insert or update to the lookup controller as necessary. "Borrowed" fields specified in the Copy property will be included in the update or insert expression. The "Upsert" will execute in the context of a database transaction.

Drawers in List/Card/Grid

An optional form layout can be defined for list, card, and grid items. The end users can expand any number of rows/items at runtime if a drawer form is defined for the “grid” view. Drawer forms may contain tabs, categories, and fields of any type including “data view”.  The data view fields in drawer forms may also have their own drawer layouts, which enables infinite master-detail relationships and hierarchies. This type of presentation is frequently called “grid-in-grid”.

Data view fields configured to display charts or maps can be placed in the drawer layout in order to provide complex dashboards for each row/item presented to the user.

If a memo, image, or data view field is present in “grid1” and no custom layout is defined, then the field will not be displayed as column. Instead, a drawer form will be created to display all such fields.

List and Cards view styles will have automatically created “drawer” layouts for data view fields.

These presentation styles will also support custom templates to define the layout of list item or card. If a custom definition is not provided, then an automatic item/card layout will be created.

Inline Editing Scheduled for Release

The ends users will be able to edit data directly in the grid, list, or cards, exactly in the same fashion as editing is done in forms. Complex data fields such as radio button lists or checkbox lists will be displayed in popups in order to preserve the layout of the view.

Modal Pages Completed in Release

Modal pages in the current implementation of the client framework are filling the entire screen, which works great for the phones and small tablets. Revealing of the content hidden underneath modal pages will be driven by screen size and will not require any programming. There will be an option to specify the screen size when partial coverage of the content is triggered on the level of the data controller views.

On devices with sufficient screen real estate, pages marked as “modal” will not fill the entire screen, but will be presented in a container in the center of the screen. The previous content will be greyed out underneath. Modal pages will also support displaying as panels sliding from left, right, top, or bottom, with the option to allow user interaction with the previous page underneath.

"Cloud" User Interface Completed in Release

Modal pages, mini sidebar, dynamic right sidebar, integraton of Material Icons, new themes are introduced in Touch UI to support the needs of Code On Time v9 and enhance the experience for application users.

Wizard Forms Completed in Release

Forms will now support the option to display categories in a wizard style. Each category will be defined with the “Wizard” property to allow defining steps in the wizard. The order of categories will determine the user’s path through the wizard. Categories with the same “Wizard” property will be displayed together. Only one step will be visible at any time. “Next” and “Previous” buttons will advance the wizard step. If none of the categories in a step are visible, then that step will be skipped.

Action Notifications Scheduled for Release

Brief, non-modal messages will be shown in response to user actions or triggered by business rules, confirming the completion of actions such as “Saved record”, “Created record”, etc.

Rich Text

Enable the editing of HTML content across all devices in an easy-to-use fashion.

Number, URL, Phone Input Types Completed in Release

Add support for type-specific input types. Mobile devices will automatically activate the data type-friendly keyboard, instead of the generic version of it.

Mobile-Friendly Lookups

On devices with touchscreens, the lookup and auto-complete input will be moved to the top of the screen, and the auto-complete results will be displayed in the remaining space above the touchscreen keyboard.


Users will be able to import CSV and Excel files containing lists of new records, allowing for rapid insertion of large numbers of records. This capability is presently only available in Desktop UI. Import configuration form will be presented as a tailor-made survey controller created on the fly to match the fields of the data controller.

Hyper-scrolling Scheduled for Release

The grid, list, and card view styles will offer a vertical scrollbar with the ability to scroll to an exact location in the data. A floating tooltip will be displayed showing the row numbers that will be loaded when the user releases the scrollbar. When “Search By First Letter” is enabled for the data view, the scrollbar will represent letters in the alphabet. The tooltip will show the first letter at the current position.

Client-side Manipulation of Grid Scheduled for Release

The user will be able to rearrange, resize, and hide columns in the grid view. These customizations will be saved in the cache of the user’s browser.

Dashboard Pages   Completed in Release

It is now possible to place form views of the MyProfile controller on a page. This view can contain multiple unrelated data views, fields, other custom content, as well as other fields of the MyProfile controller. These data views can be configured to display charts, calendars, maps, as well as standard grids, lists, and cards, thus creating a dashboard. COTv9 includes drag-and-drop form editor that can be used to design dashboard pages. Previously, creating dashboards was only possible by using containers, data views, and controls defined on the page, with no visual designing tools.

Search and Filter in Many-to-Many Fields

The user will be able to search for records that match values pulled from many-to-many tables. For example, search for employees by assigned territory.

Quick Find Enhancements

The developer can limit the scope of Quick Find queries by adding “$quickfind” to the Search Options of a field. Users will be able to interactively select fields defining the scope of Quick Find. Presently, Quick Find includes all fields in the query.

Quick Find will show a panel below that displays suggestions based on known values from the currently displayed rows, as well as previous searches. Quick Find will also support operations (for example, UnitPrice>=10). The panel will also defining the search scope to limit the query to a specific set of fields from the main data view or relevant child data views.

Group Aggregates

Groups defined by the developer or user will display counts, sums, and any other aggregates configured in the Project Designer. Groups will also be collapsible.

Keyboard Shortcuts for Actions

Developers will be able to define keyboard shortcuts for each action. For example, configure Ctrl+S to trigger the Update action on a form, or Esc to trigger the Cancel action to close the form.

Advanced Search and User Defined Filters

The new Advanced Search will utilize survey controllers to allow the use of our suite of powerful field inputs. Type-specific field filters will integrate with the new Advanced Search and permit the user to rapidly add and customize search operations via shortcuts in the user interface.

Promoted and Swipe Actions

Promoted actions that will be displayed under the floating “promo” button displayed in the bottom left or right of the screen. Swipe actions will be triggered or displayed when a user swipes left or right in grid, list, or card view. Swiping gestures will enable navigation between data rows displayed in forms.


With the above features completed, Touch UI becomes a world-class framework that works across all browsers and devices, and covers a vast number of use cases when creating line-of-business web applications of any complexity. Our unparalleled data input user interface allows your users to get their jobs done easier and faster.
Back to Top

2. Code On Time v9  (December-January)

Code On Time developers use the Project Designer to customize the application configuration, regenerate the app, and preview the result in the web browser. This requires frequent switching between a live app and the design environment.

We decided to integrate design capabilities directly into live apps and improve your rapid application development experience. For example, if the text of a label in the form needs to be changed, then you will do it on the spot in the live app. If the position of a field in a form or the column of a grid requires adjustment, then we want you to drag the user interface element to the desired location. Missing a field in the form? Drag the field from the Project Explorer, drop it in the live form, and instantly see the result.

To make this possible, the Designer will be integrated into the live app, and will appear alongside the application pages when activated.

Code On Time v9 has a brand new mode of operation on top of the original foundation.

Previous releases of the application generator rely on a WebBrowser component embedded in a native Windows Forms application. Locally stored HTML pages are loaded in the browser. The pages provide configuration screens implemented with Desktop UI allowing design-time configuration of project elements. A native tree component provides the foundation of the Project Explorer. When the application is generated, the app generator performs steps defined by the project configuration to create the web app. An instance of IIS Express is started pointing to the generated application. The default browser is launched with the local web address of the application. Browser requests are served by the IIS Express instance.


Code On Time v9 will greatly enhance the productivity of Code On Time developers and shorten the development cycle when building line-of-business apps. Instant visual tracking of user interface elements allows quickly finding configuration properties. Task-oriented wizards will be available throughout the Project Explorer hierarchy. They will provide a quick and convenient shortcuts for common multi-step tasks, such as adding connection strings, defining project logos, configuring many-to-many fields, adding data view fields, and etc. Even expert users will benefit from rapid execution of various tasks through wizards.
Back to Top

3. Cloud On Time  (January 2017)

Code On Time v9 will be enhanced to run in the cloud. We will be calling it Cloud On Time.

It will...

Updates of COT v9 and it’s cloud counterpart will go hand-in-hand. It, in fact, is exactly the same product.


The unified application development experience across both private and cloud environment will allow Code On Time customers to leverage their expertise and comfortably selecting the right environment for a given project.

Users will have access to all of the latest features from the palm of their hand. Gone are the days of experimenting and installing different versions of .NET frameworks, connector components, databases, and Visual Studio. Cloud On Time gives a new definition to “Rapid Application Development”.

Back to Top

4. Native Client Apps  (January 2017)

Native apps will be offered for iOS, Android, Windows 10, and OSX. These apps will serve as “shells” that point to Code On Time apps deployed on web servers, offering a convenient way for users familiar with their mobile device’s app store to access your custom apps.

Native apps will provide tight integration with the device. Push notifications and login persistence will be integrated into all native apps. Notifications will be automatically enabled if the Notifications controller is defined in the project.

Native apps can be built for individual web apps generated with Code On Time generator, as well as Cloud On Time hosted apps.


These days, more people are using mobile devices than traditional desktop computers. Every business intent on staying modern needs to have a foothold into mobile apps. Code On Time native apps offer the ability to instantly take that step into the future. Native apps offer the ability to provide a consistent and integrated experience to end users on their mobile devices, and allow your app to always be in your user’s pocket. Integration with device notifications enable a persistent connection with your data. The web browser is always there as an alternative option.

Back to Top

5. Data Driven Surveys (February 2017)

Survey data controllers offer a lightweight method to capture arbitrary data from the user. One can think of survey data controllers as “smart forms”. These smart forms can be designed visually using COT v9 or Cloud On Time.

The JavaScript definition of the survey data controller can be stored in the rows of a database table. A dedicated feature will be offered for our customers to allow capturing survey responses at runtime. Developers will be able to set up catalogues of smart forms. Dedicated tables of smart form assignments will capture user responses.

One can envision the following use cases for data driven surveys within the custom application:

Any time it is necessary to collect data with a structure not known at design time, the data driven survey will prove to be an invaluable tool.

The feature will be integrated into applications via the “Survey” data type and “Survey” lookup style. For example, consider a table called “Assignments” with the columns “ID”, “Date”, “SurveyForm”, “SurveyData”, and “UserID”. SurveyForm and SurveyData must be defined as string and long text, respectively.

This is how assignments will operate in a hypothetical audit system:

  1. Content developer will create an audit form as survey controller.
  2. Assignment administrator will create a record in Assignments table. She will specify the auditor in “UserID”, indicate the date of the audit assignment in the “Date” field, and choose the survey form in the “SurveyForm” lookup.
  3. The auditor will open the assignment form on the day of an audit. Clicking on the SurveyData field will show the survey form.
  4. The auditor will navigate through the form and provide answers to the questions defined in the survey.
  5. The captured answers will be persisted in the SurveyData field.

Survey “maps” will allow defining a mapping between database tables and the expectant data when the survey is processed on the server.

There will be a per-user monthly subscription fee for this feature.


Many business applications require custom data collection. Built-in data driven surveys make on-demand data collection possible at a fraction of a cost of typical implementations. The world class data input capabilities of Touch UI will make simple the data gathering on mobile and desktop devices online and offline.
Back to Top

6. Offline Capabilities  (January 2017)

Applications created with Code On Time have an “immediate” data processing mode. Data changes made by the user are persisted in the database without delay.

The application framework will support two new data processing modes:

  1. Transactional :
    Changes to the records in a master-detail relationship will be cached on the level of the master record. If any detail record on any level of the master-detail relationship is changed, then the master record is switched to edit mode. When the master record is persisted, the changes are sent in a batch to the server and executed as a single transaction.
  2. Offline :
    The developer will mark some application pages as “Offline”. Whenever a user visits any application page while online, a synchronization process will be activated. Offline pages and related data will be downloaded to the client. Native clients will store data in the device’s local storage. Web clients will store data in the browser’s local storage. Offline pages will always operate from the local storage. Changes to records made in these pages will be cached. Synchronization with the server will be performed the next time the user is online, either by request or automatically. “Online” pages will not be visible to the user when the application is in offline mode.

We have developed a lightweight JavaScript Data Engine capable of caching requests to insert, update, and delete data, and executing them against a JavaScript representation of server-side data. This engine also performs requests to select, filter, and sort data on the client. Data views in offline pages will never make requests to the server. Instead, they will always interact with the JavaScript Data Engine and display previously synchronized data. Requests to update, insert, and delete will be directed to the Data Engine.

Transactional data processing mode also relies on the JavaScript Data Engine.


Offline-capable apps with built-in data synchronization are not tethered by an internet connection. A single configuration property will enable “offline” data processing mode in the app. You can bring your business apps to any location.
Back to Top

7. Private Cloud  (February 2017)

Cloud On Time offers a vastly superior RAD environment to life-of-business application developers with any skill level. The hosted environment eliminates the need to maintain servers and software releases. A low monthly subscription fee makes it affordable to most budget constrained organizations and individuals.

However, privacy- and security- conscious customers may require complete control over their database and application. In order to offer the terrific features of Cloud On Time in a private and secure fashion, the software will be provided as the pre-compiled and ready to run Private Cloud option.

A perpetual license will allow customers to install the software on their own private infrastructure. Maintenance updates will be included with the purchase. Renewal maintenance licences will also be available.


The Private Cloud option will allow customers with the most stringent of security requirements to get their enterprise apps out cheaper, faster, and easier than any other solution.
Back to Top

8. SaaS  (December)

Code On Time and Cloud On Time apps will offer the ability to run in Software-as-a-Service (SaaS) mode, allowing developers to bring their web apps into other popular portals and products such as Office 365, SharePoint, Google Apps, and DotNetNuke.

SaaS feature will have to be enabled on the application level. We will provide themes to match several hosting environments. The server components of apps will respond to requests from authorized hosts in SaaS mode.

Native connector components (web parts, modules, etc.) will be provided for popular portals. Native component will require a registration key from the SaaS-enabled application for configuration. The live portal page of the hosting environment will connect to the SaaS-enabled app running on your server.

A connector instance on the portal page will perform requests to an externally hosted Code Time or Cloud On Time application. The connector will communicate the user identity, roles, and registration key to the app. The app will validate the registration key, perform single sign-on, and display the application content in the portal page.

A tutorial explaining how to build a custom connector will also be provided. It will make integration with any 3rd party solution possible.


Developers will be able to integrate their applications into 3rd party products and popular portals.
Back to Top

9. ERP Integration  (March 2017)

Create data controllers directly from SharePoint lists, REST APIs, or OData sources to build high-performance applications on top of your existing enterprise data. Upload your BLOB content to SharePoint, Google Drive, and more. Work with the enterprise data online and offline!


Online and offline access to ERP data sources.
Back to Top

Disclaimer: This roadmap does not represent a guarantee that the features described in this document will be delivered on the specified dates. The delivery dates may change, and features may be added or removed at any time. It is merely an outline of our thoughts for the future, and is subject to change at our discretion.