Release Notes

Labels
AJAX(112) App Studio(9) Apple(1) Application Builder(245) Application Factory(207) ASP.NET(95) ASP.NET 3.5(45) ASP.NET Code Generator(72) ASP.NET Membership(28) Azure(18) Barcode(2) Barcodes(3) BLOB(18) Business Rules(1) Business Rules/Logic(140) BYOD(13) Caching(2) Calendar(5) Charts(29) Cloud(14) Cloud On Time(2) Cloud On Time for Windows 7(2) Code Generator(54) Collaboration(11) command line(1) Conflict Detection(1) Content Management System(12) COT Tools for Excel(26) CRUD(1) Custom Actions(1) Data Aquarium Framework(122) Data Sheet(9) Data Sources(22) Database Lookups(50) Deployment(22) Designer(178) Device(1) DotNetNuke(12) EASE(20) Email(6) Features(101) Firebird(1) Form Builder(14) Globalization and Localization(6) How To(1) Hypermedia(2) Inline Editing(1) Installation(5) JavaScript(20) Kiosk(1) Low Code(3) Mac(1) Many-To-Many(4) Maps(6) Master/Detail(36) Microservices(4) Mobile(63) Mode Builder(3) Model Builder(3) MySQL(10) Native Apps(5) News(18) OAuth(9) OAuth Scopes(1) OAuth2(13) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(11) PKCE(2) Postgre SQL(1) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(184) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(81) SharePoint(12) SPA(6) SQL Anywhere(3) SQL Server(26) SSO(1) Stored Procedure(4) Teamwork(15) Tips and Tricks(87) Tools for Excel(3) Touch UI(93) Transactions(5) Tutorials(183) Universal Windows Platform(3) User Interface(338) Video Tutorial(37) Web 2.0(100) Web App Generator(101) Web Application Generator(607) Web Form Builder(40) Web.Config(9) Workflow(28)
Archive
Blog
Release Notes
Saturday, March 28, 2015PrintSubscribe
Easy Setup of Content Management System, Page+JSON Compression, Auto-Rotation of JPEGs

Code On Time release 8.5.1.0 is a collection of several enhancements to the major release 8.5.0.0 that has introduces various enterprise components in the application framework including integrated Content Management System, Dynamic Access Control List, Dynamic Controller Customization, and Workflow Register.

CMS Setup

Now you can setup an integrated Content Management System for you app with a click of a button.

  1. Navigate to Project Settings in the app generator and choose Database Connection option.
  2. Click on the […] button on the right-hand side of Connection String box.
  3. Scroll to Content Management System (CMS) section and click Add button.
  4. Click OK and save settings of the connection string.
  5. Click Finish and Refresh your project.

image

CMS becomes a part of your application. Login as admin and select Site Content option in the menu.

Here is the site content management screen in the app with Touch UI.

image

This is the same page displayed with Desktop UI.

image

Add an image to the content database.

image

Now the jelly fish is available on your website when accessed with a custom URL composed of the path and file name:

~/images/jelly-fish.jpg

image

You can place static content, images, sitemaps, access control rules, pages, data controller XML files, data controller customization instructions, and just about anything else you like directly into CMS. Learn to use integrated content management system now!

The content is stored in the single database table called SiteContent, SITE_CONTENT, or site_content if the CMS was installed as explained above. Application generator will create a standard data controller, which you can customize as needed. Feel free to add new columns to the site content table.

Note that the installation of CMS in this release is supported for Microsoft SQL Server, Oracle, and MySQL. Let us know if you would like to see other databases to have a simplified setup of CMS.

Page and Script Compression

Non-hosted projects now  perform runtime compression of pages and JSON responses in SPA apps. Apps implemented with “*.aspx” page model are performing compression on page output only at this time. This new capability is available in apps with Desktop and Touch user interfaces.

JPEG Auto Rotation

Images captured on mobile devices of iOS family are preserving device orientation information in the EXIF metadata of each photo in JPEF format. Uploaded photos will display incorrectly if rotation information is not taken into account. Blob downloader of generated apps will auto-rotate and flip the photos in JPEG format by taking into account orientation of the camera recorded in the image.

Other Enhancements

Other enhancements include:

  • Duplicate data fields are not created during data controller customization if an attempt is made to create an existing data field.
  • Dynamic Access Control List correctly processes Tags property of data views.
  • Workflow Register is now available in all product editions including free edition.
  • Advanced Search form in Touch UI correctly processes dates.
  • Advanced Search form  correctly handles “include” comparison option and will not raise an exception.
  • SPA applications will correctly process HTML tags specified in About property of a page.
  • Client library parses integer values with radix of 10 to ensure correct parsing with earlier versions of JavaScript engine.
  • Application Framework activates Gregorian calendar for th-TH culture.
  • CMS: Added processing of "empty" relative path in ReadSiteContent method.
  • Pivot API: added "hideblank" keyword that will remove the "blank" value from that row or column.
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 8.5.0.0 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.

image

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.

image

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.

image

Grid view style offers the most compact presentation of data.

image

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

image

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.

image

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

image

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

image

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.

image

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="http://www.w3.org/1999/xhtml">
  <head>
    <title>Customers</title>
    <meta name="description" content="This page allows customers management." />
  </head>
  <body>
    <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-source="view1"
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
~/hr/directory
description: Directory of company employees.

image

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.

image

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.

image

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:

when-tagged("employee-directory");

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

when-user-interface("Touch").select-view("grid1")
    .create-data-field("Photo")
    .create-data-field("HomePhone")
    .create-data-field("Extension").set-header-text("Ext");

select-view("grid1")
    .set-access("Public")
    .select-data-fields("LastName", "FirstName", "Extension", "HomePhone", "Photo")
    .use()
    .set-columns("20");

select-actions("CHANGE", "Select", "EXPORT")
    .delete();

This is how the new phone directory will look.

image

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

image

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.

hr/directory
sys/controllers/hr/Employees.Alter.Directory
sys/sitemaps/employee-directory

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.

image

image

Thursday, January 15, 2015PrintSubscribe
Brand New Advanced Search, Deep Search, Right-Click to Filter

Code On Time release 8.0.12.0 introduces a collection of new features designed to improve productivity of end users.

The highlights of this release are:

  • Brand New Advanced Search implementation in Touch UI. Users can search for data by entering groups of conditions. Each group uses one of the four matching methods – “Match All”, “Match Any”, “Do Not Match All”, “Do Not Match Any”. Unlimited number of groups can be created. Data views will keep track of up to 30 recent searches. End users can execute and edit previous searches.
     
  • Deep Search is a new capability available in Touch UI. It is now possible to find master records via the content of the details. For example, users can find customers that have orders placed by employee Fuller and shipped to London. Application automatically detects master-detail relationships on the pages and allows specifying detail fields in advanced search groups or in the scope of quick find.
     
  • Right-Click to Filter is now supported in lists and grids of Touch UI applications. Users can right-click any visible value and immediately apply “Equal”, “Does Not Equal” and several other filtering options.  This feature is supported by Touch UI applications on desktop computers equipped with a mouse.
     
  • Empty/Not Empty and dedicated Less/Greater Than and Less/Greater Than Or Equal are now supported in Desktop UI and Touch UI. The first two new filters allow located records that match the corresponding criteria. Previous implementations supported only the last variation of typical comparisons.
     
  • Data Pivoting is now integrated in the application framework. The new implementation includes support for a  high performance universal server-side data pivoting driven by tags. This feature is the foundation of the upcoming brand new charting support that will be introduced first in Touch UI. The same pivoting capability will also be used for sidebar filtering options similar to those found on popular shopping web sites. This pivoting capability will also be used in the Calendar view style that will become available first in the Touch UI.

Take a look at the screen shots of the new user interface features.

The search button on the toolbar now activates either Quick Find search box  or Advanced Search screen. The default option is Quick Find. If  a data view is configured to “Search on Start” than Advanced Search is always engaged when a data page is loaded.

The search button on the toolbar now activates either Quick Find search box  or Advanced Search screen.

The new Quick Find box has a drop down arrow next to the search icon on the left and advanced search button on the right.

The new Quick Find box has a drop down arrow next to the search icon on the left and advanced search button on the right.

The drop down arrow activates a list of child data views on the page that are directly connected to the data view in focus. User has expanded the scope of search to include master data view Customers  and child data views Orders and Order Details. Inclusion of child data views will engage deep search capability.

The drop down arrow activates a list of child data views on the page that are directly connected to the data view in focus. User has expanded the scope of search to include master data view Customers  and child data views Orders and Order Details. Inclusion of child data views will engage deep search capability.

If a user clicks on the button on the right side of the Quick Find search box on the toolbar than advanced search screen slides down from the top of the browser window.

If a user clicks on the button on the right side of the Quick Find search box on the toolbar than advanced search screen slides down from the top of the browser window.

Four data matching methods are supported.

Four data matching methods are supported.

Groups can be deleted and duplicated as needed.

Groups can be deleted and duplicated as needed.

Right-click on the data values will display a context menu.

Right-click on the data values will display a context menu.

An example of “deep search” conditions.

An example of 'deep search' conditions.

The result of the “deep search”.

The result of the 'deep search' via child data records.

The history of searches on Advanced Search screen.

The history of searches on Advanced Search screen.

Searching from recent history on Advanced Search page.

Searching from recent history on Advanced Search page.

The complete list of enhancements and bug fixes is presented below:

  • A new implementation of advanced search for Touch UI with multiple matching groups, history of recent searches and favorite searches.
     
  • Deep search is supported in Touch UI.
     
  • Right-click to filter is now available in Touch UI.
     
  • Data Pivoting is supported in GetPage method.
     
  • Ensured that SQL Server database with one custom schema and the rest of the tables in "dbo" will generate a correct initial menu.
     
  • Renamed __resultset to resultset__ to ensure wider compatibility with database engines.
     
  • Fixed DateTime UTC formatting issue when printing reports.
     
  • Method $app.find first tries to find a data view by ID and then tries to find it by controller name.
     
  • User-level properties are now application and user-specific in Touch UI apps.
     
  • Implemented InitBusinessRules to enable IDataEninge.ExecuteReader to work with business rules.
     
  • Data type TimeStamp will not break applications.

We are finally ready to publish various new tutorials that were in work for the past few months. This year you will see tutorials demonstrating development of single page apps with jQuery Mobile and Bootstrap. A new tutorial will explain how to build the Order Form sample with Touch UI.

In about two weeks we will release another with supported for data visualization in Touch UI and numerous other enhancements including BLOB uploading in Touch UI.