Tuesday, September 1, 2015PrintSubscribe
“Calendar” View For You

Applications created with Code On Time use a well defined entity model that prescribes presentation of data as grid and form views and determines transition of views via actions. Data may come from any source. For example, a developer can defined an SQL query or stored procedure to read data from the database. An entity can also be programmed to read/write data from a web service, file system, or any other source. Application framework interprets the entity and displays data in various view styles. For example, a typical grid view can be rendered as responsive grid, list, collection of data cards, map, and charts. Request an interactive Webex presentation to learn more.

“Calendar” is a brand new view style that will become available with update on September 2, 2015 . A presence of a “date” field will tell application framework that there is possibility of rendering data as a calendar. New view style offers Day, Week, Month, Year, and Agenda modes. Any field in the view can serve as a “color” field. The framework will assign a color to each data value.  End users can drag and drop events to change values of date fields. Standard form view of an entity is display when an event is selected enabling seamless editing of data.

“Day” view in the screen shot shows 4 data records rendered as events.

'Day' mode in calendar view of an app created with Code On Time.

Mini calendar on the side bar uses bold font to indicate dates of the month with events. Mini calendar alternates presentation of data between day and week mode when a particular date is clicked. Color legend shows associated data values, which represents the name of the employee assigned to the “order” event. An “event” is a record from Orders table of the Northwind sample.

“Week” view offers seven days of events. Future updates are expected to support 3 and 4 day weeks. Both “Day” and “Week” view are infinitely horizontally scrollable.

'Week' mode in calendar view of an app created with Code On Time.

“Month” view offers infinitely scrollable events organized in months.

'Month' mode in calendar view of an app created with Code On Time.

Click on any item in the color map on the sidebar and the application will “dim” events associated with other employees in “Day”, “Week”, “Month”, and “Agenda” views.

'Dimming' of events is possible by tapping on the color legend in 'Day', 'Week', 'Month', and 'Agenda' modes of calendar view style in apps created with Code On Time.

“Year” view offers analytical presentation of an entire year and also enables quick data-driven navigation to a month or a specific day.

'Year' view in Calendar view style of an app created with Code On Time.

“Agenda” view provides a convenient condensed summary list of events with a dynamic timeline.

'Agenda' view in Calendar view style of an app created with Code On Time.

All modes of the calendar view style are responsive. Smartphone users will see presentation scaled to fit the form factor of their device. For example, these two screen shots demonstrate “Day” and “Agenda” view on a typical smart phone.

'Day' view in Calendar view style of an app created with Code On Time displayed on a screen with small form factor.   'Agenda' view in Calendar view style of an app created with Code On Time displayed on a screen with small form factor.

These amazing capabilities require no programming or coding. Developers can opt to disable the calendar when not desired. Otherwise application will simply offer the end user yet another way to see their data.

Calendar view now joins a first class collection of presentations styles that were made available in the previous releases and greatly enhanced with this new iteration. View selector and sidebar provide access to every view style available for a particular dataset.

Selecting a view style for data presentation in an app created with Code On Time.

For example, charts view displays automatically constructed charts without developer writing any code.  Any number of custom charts can be defined when needed at design time.

'Charts' view style in an app created with Code On Time.

“Cards” view presents data items as multi-line cards with the same size. Application framework breaks each three fields in paragraphs offering another way to see data. Cards presented in 3, 2, or 1 column based on the screen size. The screenshot shows two columns of automatically configured cards.

'Cards' view style in an app created with Code On Time.

“List” view is the most universal presentation style that will work with fields of any length and any screen size. Field values float from left to right and continue on the next line.

'List' view style in an app created with Code On Time.

“Grid” view style enhances responsive presentation by introducing automatic data balancing. The new release reduces the number of visible columns by applying 2, 5, 8, 10, and 12 column breakpoints based on screen size when data is rendered. This makes it possible to display a grid of rows with “important” fields without being forced to scroll horizontally. For example, this screenshot shows five columns of data rows in Orders table.

Responsive 'Grid' view style in an app created with Code On Time.

Developers can indicate the minimal screen size that a particular column must be displayed on. For example, tag “grid-tn” will force a column to show up even on “tiny” screen. Small screes with show every column marked as “grid-sm”. The release notes of the update will explain expected logical pixels of tiny, extra small, small, medium, large, and extra large screens.

Previous release required explicit tagging of each field. The new approach is to assume that all fields must be displayed if possible. The mere intent of a developer to place a field in a grid implies that it must visible. Developer-defined tags simply enforcing display of fields on particular screen sizes in responsive grid. The next screenshot shows 8 columns displayed when the sidebar is not visible. Automatic data balancing ensures that “shorter” fields reclaim more real estate from “longer” fields with enforced minimal width to ensure quality “balanced” presentation of data in columns with fixed width.

Long press brings up a context menu with data sensitive options in an app created with Code On Time.

All view styles also support “long press” that allows displaying of context menu and selection of records on both desktop and touch-enabled devices. The screenshot above shows context-sensitive filtering and sorting options.

“Map” view style is one more method of presenting data that becomes available when latitude/longitude or Address/City fields are present in the gird view.

'Map' view style in an app created with Code On Time.

Context menus and data cards are now displayed at the bottom of the screen on devices with small form factor to enable easy touch operations. A couple of screenshots below show data card of “Map” view style and view selector on a small screen.

Data card displayed on a screen with small form factor presented by app created with Code On Time.   Context menu displayed on a screen with small form factor presented by app created with Code On Time.

The standard collection of presentation styles will be enhanced with horizontally scrollable “Datasheet” view and “Hierarchy” view styles. The implementation of remaining view style is well under way and is based on horizontal scrolling mechanism that was developed and perfected with “Calendar” view.

Tuesday, March 31, 2015PrintSubscribe
Reducing the Number of Rows with “Top” and “Other” in Charts

Suppose that a chart is made for the Orders page in the sample Northwind app. This chart will show the count of orders made by each customer, sorted in descending order. The tag configuration is listed below.

Data Field Tag
CustomerID pivot1-row1-column-sortbyvalue

The result of the tag can be seen in the screenshot.

An Orders chart showing the number of orders made by each customer

The data for the chart can be seen below.

The data for an Orders chart showing the number of orders made by each customer

With such a large number of rows, it becomes difficult to read the row values. In order to fix this problem, restrict the number of rows by using the “topX” keyword, with the X value being equal to the max number of rows displayed.

Data Field Tag
CustomerID pivot1-row1-column-sortbyvalue-top5

The new chart now displays the column for only 5 customers.

An orders chart showing the number of orders made by the top 5 customers.

The data reveals that only 5 rows are present.

The data for a chart showing the top 5 customers.

However, it may be desirable to group the rest of the values into a single “Other” column, in order to show the relative size of the top 5 compared to the rest of the data. This can be done with the “other” keyword in combination with “topX” keyword.

Data Field Tag
CustomerID pivot1-row1-column-sortbyvalue-top5-other

The chart showing the “Other” column is displayed below.

A chart showing the top 5 customers, with the rest of the orders grouped into "Other" column.

The data reveals the sixth row combines the values of the hidden rows.

The chart data shows that the last row grouped the values from the hidden rows.

Monday, March 23, 2015PrintSubscribe
Charts, Drag & Drop Upload, Signature Capturing, Integrated Content Management System, Workflow Register, Single Page Applications, Dynamic Access Control List

Code On Time release includes a monumental collection of enhancements and features.

The release highlights are presented below. Detailed tutorials dedicated to individual features will be published over this week. The roadmap for 2015/2016 with detailed release notes will also become available this week. We are looking forward to your input.

“Charts” View Style for Touch UI

Touch UI applications now supports a new presentation view style called “Charts”. The feature works automatically and can be configured at design time. Here is a sample of charts created for Orders data controller in the Northwind sample.


Learn about Charts view style now!

“List” View Style for Touch UI

We have reworked “Cards” and “List” view styles for Touch UI. Touch-enabled devices will default to “List” view, while the “Grid” view is the default option for desktop users. The new “List” view style displays items of uneven height with every single field presented to the users. Text of field values will wrap to the next line.


View style “Cards” offers multi-column presentation of items. All items have the same height.  The text of “long” values does not wrap. Only a subset of fields may be visible within a card.


Grid view style offers the most compact presentation of data.


“Charts” view style provides an insight into the current data set.


Drag & Drop File Upload

Drag & Drop file upload is now supported in both Desktop and Touch UI. File upload preview is also integrated.

First, the user taps or clicks on the drop box to show the file upload prompt. The user may also drag the files into the drop area directly from the file system.


A preview of the files is displayed directly in the form prior to upload.


The drop box provides visual feedback when files are dragged over.


Progress indicator is displayed at the top of the drop box while the files are being sent to the server.

The relevant FileName, DataContentType, and Length data fields will updated when the user drags or drops the file.

End users can capture images directly from camera or mobile operating system on touch-enabled devices.

Signature Capturing

If you have a binary field in a table then you can configure the field to capture signatures for Touch and Desktop UI. Just set On Demand Display Style to “Signature” to have it activated.


End users can use touch gestures or pointer devices to draw a signature. The signature is uploaded as PNG file with white background directly to the database.

Single Page Applications

A new single-page application implementation based on HTML is now supported for Azure Factory, Mobile Factory, Web App Factory, and Web Site Factory projects.

Create a new project with default settings to see it in action. There are no *.aspx files in the project, just the HTML files. Here is the sample markup of the Customers page in the sample Northwind web app.

<!DOCTYPE html >
<html xmlns="">
    <meta name="description" content="This page allows customers management." />
    <div data-flow="row">
      <div id="view1" data-controller="Customers" data-view="grid1" 
data-show-in-summary="true"></div> </div> <div data-flow="row"> <div data-activator="Tab|Orders"> <div id="view2" data-controller="Orders" data-view="grid1" data-filter-source="view1"
data-filter-fields="CustomerID" data-page-size="5" data-auto-hide="container"
data-show-modal-forms="true"> </div> </div> <div data-activator="Tab|Customer Demo"> <div id="view3" data-controller="CustomerCustomerDemo" data-view="grid1"
data-filter-source="view1" data-filter-fields="CustomerID" data-page-size="5"
data-auto-hide="container" data-show-modal-forms="true"> </div> </div> <div data-activator="Tab|Order Details"> <div id="view4" data-controller="OrderDetails" data-view="grid1"
data-filter-fields="OrderCustomerID" data-page-size="5" data-auto-hide="container"
data-show-modal-forms="true"> </div> </div> </div> </body> </html>

Integrated Content Management System

Applications generated with SPA page implementation can include an integrated content management system that turns your app in a highly customizable solution. Just create the table called SiteContent  shown below and have it included in your project (SITE_CONTENT and site_content variations are also supported).

CREATE TABLE [dbo].[SiteContent](
    [SiteContentID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
    [FileName] [nvarchar](100) NOT NULL,
    [Path] [nvarchar](100) NULL,
    [ContentType] [nvarchar](150) NOT NULL,
    [Length] [int] NULL,
    [Data] [image] NULL,
    [Text] [ntext] NULL,
    [Roles] [nvarchar](50) NULL,
    [Users] [nvarchar](50) NULL

Generate your app, navigate to ~/pages/site-content and upload images, html pages, data controllers, or any other content. Specify the path to the files and they will become available to the authorized users. Hook up content to your static navigation system with the help of dynamic sitemaps.

The sitemap sys/sitemaps/employee-directory will merge with the default sitemap to create new navigation options in the default app.

+ Home

++ One More Level

+++Employee Directory
description: Directory of company employees.


Create a sitemap with the name sys/sitemaps/main to replace the default navigation system of your app.

Integrated CMS is supported in both Desktop and Touch UI.


Dynamic Access Control List

Premium and Unlimited edition users can take advantage of Dynamic Access Control List. Create access rules in the integrated CMS with the path sys/dacl. Application framework will locate files stored in the CMS and apply rules to all matching SELECT statements composed at runtime. You can also store access control rules as text files in the ~/dacl folder of your application.

This sample set of rules will affect all data controllers of the Northwind sample that have CustomerID field in the views.

Field: CustomerID
Roles: Users
Role-Exceptions: Administrators
[CustomerID] in ('ANTON', 'ANATR')
Field:       CustomerID
Controller:  Customers
Users:       user
[Country]='USA' and [ContactTitle]='Owner'
Field:       CustomerID
Role-Exceptions: Administrators
select CustomerID from Customers
where Country='UK' and City='London'

The picture below shows the effect of the rules on the Customers data controller.


Learn more about access control rules that can be written in code.

Dynamic Controller Customization

Integrated CMS can also store customizations of data controllers.

For example, file sys/controllers/hr/Employees.Alter.Directory will turn Employees data controller in a phone directory when defined as follows:


select-views("editForm1", "createForm1").delete();


    .select-data-fields("LastName", "FirstName", "Extension", "HomePhone", "Photo")

select-actions("CHANGE", "Select", "EXPORT")

This is how the new phone directory will look.


It is not possible to edit any data on this page. Only a small subset of actions is visible.


Workflow Register

Workflow Register uses the integrated content management system to define workflows as a collection of resources. For example, the workflow sys/workflows/hr can be defined as the following collection.


It provides access to page hr/directory, activates a customization for controller Employees, and adds employee-directory sitemap to the application sitemap.

The workflow can be assigned to anonymous users by creating the entry “sys/register/roles/?” with the text “hr”  in the site content.

Consolidated Client Library Files

The script library has been consolidated. The scripts have been renamed.

  • daf.js <- Web.DataView.js
  • daf-resources.js <- Web.DataViewResources.js + Web.MembershipResources.js
  • daf-membership.js <- Web.Membership.js + Web.MemershipManager.js
  • daf-menu.js <- Web.Menu.js
  • daf-extensions.js <- Web.DatViewExtensions.js
  • touch.js <- Web.Mobile.js

Pages Can Be Generated “First Time Only”

Pages of the project can be based on templates and be configured to generate “First Time Only” similar to user controls.