Release Notes

Release Notes
Sunday, October 9, 2016PrintSubscribe
Basket Lookup, Wizards, Smart Dates

Release is here! This release contains several major features, bug fixes, as well as major performance enhancements to the Form Rendering Engine in Touch UI.

Basket Lookups

The headliner feature for this release is Basket Lookups. This feature permits using Lookup, AutoComplete, and DropDownList item styles for many-to-many relationships. Property Target Controller is now visible in Project Designer when one of these view styles is selected. The property must point to a compatible data controller that corresponds to the many-to-many junction table in the database.

DropDownList rendered as a basket lookup allows adding multiple territories to an employee using the dropdown control.

Many-to-many relationships permit connecting records together in any combination. Typically, a list of available values are enumerated in a separate table, and a joining table will connect the primary record with a number of values. For example, a product can be tagged with multiple keywords, such as “New”, “Exclusive”, “Discontinued”, and etcetera.

In read-only mode, many-to-many fields are displayed as a comma-separated list of values.

Many-to-many field values are displayed as a comma-separated list in read only mode.

Upon pressing Edit, each item will be rendered in a box, and the input control will be rendered on the following line.

Each item is rendered in a box, with the lookup control on the next line.

The user can tap on an item, or use arrow and Backspace keys to remove items. Typing in or activating the dropdown and selecting an item will add that item to the list. The basket input control behaves just like the original lookup, auto complete, or drop down list control.

Basket Lookups offer a better alternative to the Check Box List (displayed below) when there is a large number of items to choose from.

The Territories many-to-many field rendered as a Check Box List.


The Wizard feature is now introduced in Touch UI. The “Wizard” property has been added to categories. When the client library detects that at least one category has the “Wizard” property defined, the form will be rendered in Wizard mode. A list of steps will be enumerated using the values of the “Wizard” property, and a status bar will be shown for the available steps. The “Visible When” property can be used to conditionality hide steps based on field values. Actions “Prev” and “Next” will be automatically injected into “Form” scope, and the “Cancel” action will be moved to the leftmost position.

New Employees form configured as a Wizard in Touch UI.

Click here to learn more about configuring Wizards.

Wizard is the core feature that enables rapid simplified configuration of projects in the upcoming Code On Time V9.

Responsive Templates

The goal of Touch UI is to ensure a consistent and usable UI across a wide range of screen sizes. Automatically created templates will position fields and categories depending on the width of the screen. Release will allow defining multiple view templates based on the screen width.

For example, the Orders form of the Northwind Demo will render in two columns.

The Orders Form in Northwind Demo on larger screens will be rendered in two columns.

On smaller devices, the form will be displayed in one column.

The Orders Form in Northwind Demo on smaller screens will be rendered in one column.

Developers can define multiple templates for different sizes in the HTML view template file by using the “data-layout-size” attribute.  For example, two form layouts can be defined in a file ~/Views/Customers.editForm1.html:

<div data-layout="form" data-layout-size="sm">
<div data-layout="form" data-layout-size="tn">

When the user opens the form, the client library will parse the file and use the largest possible template that matches the currently available width (minus the sidebar). The possible values are listed below.

Value Minimum Width (px)
tn 0
xxs 480
xs 640
sm 768
md 992
lg 1200
xl 1440

Batch Edit With Dependent Lookups

The previous release overhauled the Batch Edit functionality by rendering a custom form. Each available field is rendered as a checkbox. When the checkbox is enabled, an input is displayed below, and the value of that input will be used to batch update the selected records.

Release now handles the situation with dependent lookups, to ensure that data validity is preserved. When a series of fields are dependent, these fields will be grouped under the same checkbox, and the user is required to set all related values.

Batch Edit with dependent lookups will group the lookups.

Smart Dates

Date values rendered in Touch UI will now display simplified values, such as “Today” or “Next Mon”. These values are much easier for the user to comprehend without having to consult a calendar. Dates between a week ago and in two weeks will show days of the week. Dates occurring this year will show the month and date. Any dates with time values set to 12:00 AM will hide the time. The original value is still viewable by hovering over the text. This feature can be disabled from the user settings.

Orders grid displaying all possible permutations of Smart Dates.

Click here to learn more about Smart Dates.

“Auto” Action Button Location

In previous releases, form action buttons were displayed above and below the form. The default mode for “Show Action Buttons” has been changed to the new value “Auto”. This will render the action buttons in a fixed footer at the bottom of the screen. This ensures that the user always has easy access to the actions available at the time. It also avoids the visual overhead of duplicate button rows on small forms.

The "Auto" Show Action Buttons mode will display a footer containing the form buttons.

Medium size screens will align the buttons to the right of the footer. Larger screens will align the buttons to the center of the footer, to ensure proximity to the inputs. Very small screens, such as those on mobile devices, will display action buttons at the bottom of the form, in order to maximize usable screen space.

Small screens will render buttons at the bottom of the form.

Object References in Touch UI

Object references have made a return in! When the form is in read mode, a chevron will be displayed next to the field value. Pressing on the chevron will load the edit form for that record.


To hide the object reference, tag the data field as “lookup-details-hidden”.

Geocode and Calculate Distance

It is now possible to automatically geocode an address value and save the result to predefined Latitude and Longitude fields. Simply tag the relevant address fields with “geocode-city”, “geocode-region”, “geocode-zip”, and “geocode-country”, and tag the positional fields with “geocode-latitude” and “geocode-longitude”. On Insert or Update, if the address values have changed, Google Geocoding API will be queried using the specified API key. The results will be saved in the positional fields.

It is also possible to manually trigger this request inside a C# or Visual Basic business rule, as in the example below.

decimal latitude;
decimal longitude;
if (Geocode(address, out latitude, out longitude))
    Result.ShowAlert("Latitude: " + latitude + ", Longitude: " + longitude);

An additional function has been added to calculate driving distance between two addresses. It can be used in code business rules, as in the example below.

decimal meters = CalculateDistance(sourceAddress, destinationAddress);
decimal miles = meters * 0.00062137m;

Make sure to follow Google Maps APIs Terms of Service when using these functions.

Features and Enhancements

A partial list of new features, enhancements, and fixes in release is shown below.

  • Touch UI
    • Type-sensitive keyboards will be displayed on mobile devices (Number, Phone, URL, Email).
    • “Flicking” horizontally in Grid presentation will scroll one screen at a time.
    • If the HTML file of a view template contains the name of another view template file, that file will be loaded.
    • Forms are now incrementally rendered based on what is visible at the time.
    • Form buttons will align to the right on smaller screens.
    • Auto-complete window will highlight matching text.
    • Field values can now be placed inside category descriptions.
    • If a DateTime field does not allow time selection, selecting the day of the month will hide the input.
    • Tooltip will not cover the Search button in Advanced Search.
    • Resolved issues with Auto Highlight First Row.
    • Resolved issues with Date Picker not setting correct date depending on the order of selection.
    • Mini calendar on sidebar will now resize correctly to display filter values.
    • Removed “Labels In Form” user setting.
    • Actions now support jQuery Mobile icons containing a dash (such as “carat-r”).
    • Removed spinning bar icon in Chrome.
    • Lookups now support Data Text Fields that are numeric types.
    • User theme selection will be differentiated by user name.
  • General
    • Fixed exception with systems that do not have .NET 3.5 installed.
    • Content Framework detection will work with both ASPX controls and HTML pages. This resolves the issue with Bootstrap-based dedicated login pages.
    • Added support for $quickfind and $quickfinddisabled to limit the number of fields included in Quick Find query.
    • Creating a data field in the Project Designer will no longer throw “DataType is undefined” error.
    • Controllers built from data models will use the column configured as the alias as the “Data Text Field”.
    • The “Copy” property will now be configured with the correct name of the field from the lookup controller, instead of the column name.
    • Fixed issue with generated apps using Turkish “i” in the generated code.
    • New JavaScript methods editing() and inserting() can be used in Visible When and Read Only When expressions, as a replacement for this.get_isEditing(). The result is correctly evaluated when user presses “Edit”.
    • Many-to-many fields now show “New Item” if New Data View is enabled, to support adding new items inline.
    • Fixed exception if no models are defined when Project Wizard “Summary” step is opened.
    • Generator will now request to install IIS Express 10.0 if no IIS Express installation is detected.
    • Filter text displayed at the top of views will show a simpler date representation.
    • New implementation of BusinessRules.Whitelist and Blacklist to avoid performance regression.
    • Fields named “Password” or “Pwd” will have Text Mode set to “Password”.
    • Renamed “Click OK” to “Press Save” in resources to account for touchscreen users.
    • Data Objects will no longer create properties for on demand fields.
    • SharePoint Factory option will be hidden if .NET 3.5 is not installed.

In addition to the items listed above, there are a large number of other fixes and performance enhancements.

Wednesday, August 17, 2016PrintSubscribe
Batch Edit, Surveys, Universal Input, Date Processing.

Please take a look at the Roadmap for 2016/ 2017. It covers the next six months of the development cycle.

Numerous new features and bug fixes are included in the release

Batch Edit

This release re-introduces Batch Edit capability in both Desktop UI and Touch UI applications. If multiple selection is enabled and two or more rows are selected then Batch Edit command becomes availabe in the context menu of data rows.


Select the menu option and a standard form will display a list of fields.


Specify the field values and choose Update Selection to update the selected data rows. A similar dialog is displayed in Desktop UI.

For the feature to work, you must enable Multi-Selection. Also specify an action with the command name set to “BatchEdit” in the group with the “Row” context. If there is no argument then the “grid1” will become the source of fields. If  you have a form with a large number of fields then specify the form view ID in the action argument. For example, try editForm1.

You can also enable Batch Edit everywhere if you set the corresponding option in the Grid Properties of Features section in your project settings. Make sure to refresh the project and the Batch Edit action will be added to all data controllers.


The dynamically created Batch Edit form is implemented as a data controller produced on demand with the help of the new technology called Survey Controller.  We will post a tutorial explaining how to work with the survery controllers. See the rodmap for more details.

In the future releases, we will utilize survey controllers to re-implement several features in the Touch UI:

  • Advanced Search
  • Field-Level Search
  • Import
  • Standard Calendar Event Dialog

Survey controllers can be used as replacements for “confirmation” data controllers. Here is an example of a confirmation survey controller that allows selecting Customer, Order, and Order Detail.


All questions asked in the survey are accessible to the server-side business rules with the “Parameters_” prefix.

This is the defintion of the controller stored in ~/scripts/surveys/ThreeLevelMD.js file:


The survery will be loaded and displayed for any action if you specify the following in the Confimation property of the action.



You will be suprised to learn that the new “survey” controller is essentially a repackaged version of XML data controllers. The difference is only in the language used to define it.

Code On Time v9 will introduce the visual designer that will enable drag & drop development of traditional and “survery” data controllers.

The roadmap provides some additonal insights into our wide-ranging plans for the surveys.

Universal Input

Countless enhanements are made to Touch UI.  Continue reading to learn more about individual capabilities and bug fixes.

We would like to highlight the ability to create new items directly from with the list inputs with the style of items set as List Box, Radio Button List, and Check Box List. The option is shown as the last item of Category Name in the screenshot.


Note that the lookups with Drop Down List style have a distinctive icon as shown in Discontinued field. Users can select items with Up and Down keys, via auto-complete, or via direct selection of options from the menu.

All inputs now provide excellent support for keyboard data entry and navigation.

Make sure to clear New Data View property of lookup fields with these presentation styles if you do not want your users to create new items.

Retired Project Types

We have retired Azure Factory and Mobile Factory projects. Microsoft considers Cloud Service apps to be in the legacy category. We recommend creating standard Web App Factory projects instead.

Mobile Factory projects are effectively Web Site Factory projects minus the ability to display Desktop UI. We have removed this project type from the menu of new projects.

Any existing projects of the retired types will still work. We recommend considering a conversion to the remaining project types.

Date Time Processing

We have completely re-designed handling of dates to eliminate any issued with the time zones.

Features and Enhancements

The list of features and enhancements introduced in relese is presented below.

  • Visible When for data fields and categories is now fully supported in Touch UI. We have a brand new implementation designed specifically for the Universal Input controls.
  • Read Only When for data fields is now fully supported in Touch UI.
  • BLOB utility fields are correctly captured in Touch UI.
  • GEO utility fields are correctly captured in Touch UI.
  • Collapsible categories are now collapsing in Touch UI in response to user actions and when configured in Project Designer.
  • Touch UI now supports Causes Calculate with Universal Input.
  • Touch UI now supports cascading lookups with Universal Input.
  • JavaScript business rules do not trigger recursive Calculate in Touch UI.
  • JavaScript business rules of confirmation controllers can refernce the current row data fields as $current.FieldName.
  • Tab selection remains when user switches between read and write mode in a form in Touch UI.
  • Llong text fields and many-to-many fields have a 40 column minimum width in grid in Touch UI.
  • Ttooltip remains next to the input field when the page has been scrolled to set the focus in Touch UI.
    Touch UI correctly handles "_blank:" prefix in Hyperlink Format String property of data fields.
  • Method RefreshChildren works correctly in Touch UI and modal forms of Desktop UI.
  • Sidebar calendar remains inactive until it becomes visible.
  • Multi-selection mode does not reset selected row when activated more than once.
  • Fixed JavaScript business rule compilation issues related to field references.
  • Automatic configuration of "Copy" property now ensures fields are copied, even when lookup contains self-referring FK.
  • Model Builder no longer creates lookups if the field is borrowed from a different table.
  • Capture of exception on Windows 10 Build 1607.
  • Removed dependency on MSXML6.dll fromt he app generator.
  • User theme is now stored in cookie.
  • Touch UI themes are now served individually based on browser cookie.
  • ApplicationServices.UserTheme property added.
  • Web App Factory contains proper DLLs for ReportViewer.
  • DataView fields are hidden in grid1 and createForm1 at rutnime.
  • Added 'calendar-drag-disabled' tag to disable dragging in Calendar view.
  • Added "Normalize Model Names" checkbox to allow disabling removal of underscores and other non-word characters.
  • Fixed issue with "Edit Rule" in Visual Studio not looking in correct folder.
  • Touch UI  enables Google Maps for localhost only. Any production deployments now require a Google API key due to the policy changes by Google Inc.
Friday, June 24, 2016PrintSubscribe
Enhanced Lookup Styles, Membership, and Source Code Version Control

Code On Time release introduces an expanded set of lookup styles for Touch UI with new capabilities.

Mobile Factory and Web Site Factory projects now have a new file structure.

We are retiring the Sync Server. Source Code Version Control is now completely based on the file system and requires no additional external software. Learn more about configuring Source Code Version Control for your project.

Touch UI now offers customizable standard Login form, My Account, Password Recovery, and New Account Sign Up. These features are now a part of MyProfile data controller.

Make sure to refresh your project when generating a project with this release.

Take a look a the screen shots of the latest UI changes.

Radio Button Lists with a new styling:


The revived List Box view style:


The new style for many-to-many fields (Territories) and Auto Complete lookup style (Reports To).


Here are some of the fixes included in the release.

  • Desktop
    • Focus is displayed in Desktop UI around lookup inputs and checkboxes.
    • Desktop UI page will not lose scrolling after selecting an item from the lookup.
  • Touch UI
    • Calculated business rules now work in Touch UI forms.
    • “Password” Text Mode is now supported in Touch UI forms.
    • Enabled new horizontal scroll bars.
    • Enabled dragging on scroll bars.
    • Typing in form when child view is visible will no longer trigger search on the child view.
    • Greatly increased performance in form rendering.
    • Forms are re-rendered when the screen width changes.
    • Blob and signature fields are now supported.
    • Result.ShowAlert() now uses Touch UI styled popups. Desktop will still use standard browser alert.
  • General
    • Data Models will now be validated after project is refreshed. Fields no longer present in the table will be removed.
    • Model Builder will now check if a column exists and show a warning before executing query in Data tab.
    • Calendar data requests will no longer clash with manually defined chart definitions.
    • Many-to-many implementation is now handled within the application framework, instead of generated business rules. The corresponding methods in BusinessRules class have been replaced with stub definitions to avoid compilation errors. The framework will look to the target controller for lookup fields pointing to the primary controller and items controller to determine the correct field values to use.
    • GUID fields will not be included in grid and forms.

Next week we are planning to make available “basket” lookup style for many-to-many field processing.