Application Factory

Labels
AJAX(112) App Studio(7) 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(177) 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(183) 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(2) 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
Application Factory
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

Tuesday, March 10, 2015PrintSubscribe
Specifying Default Size On Charts

Charts presentation style will display as many reasonably-sized charts as possible on each device size. By default, each chart is of size “small”, which means that the chart will use 1/3 of the available space in each dimension on large screens.

The default charts for Orders page will attempt to show three charts in each dimension on large screens.

On medium-sized devices, the charts will use 1/2 of the available space.

Small charts on medium-size devices will show two in each dimension.

The smallest devices will display only one chart at a time.

Small devices only show one chart at at time.

The user is able to change the size of the charts using the context menu in the top right corner of each chart. “Large” is only available on large devices, and “Medium” is only available on moderately sized devices and tablets.

The user is able to change the size of the charts using the context menu in the top right corner of each chart.

The developer is also capable of specifying the default size for each chart by adding the keywords “medium” or “large”. Suppose that the Orders controller has manually specified charts matching those that have been automatically created. The highlighted tags below will specify the default sizes for those charts.

Data Field Tag
CustomerID pivot1-col1-sortdescbyvalue-columnstacked-top5 pivot1-medium pivot4-row1-top10-other-sortdescbyvalue-pie3d pivot4-large
EmployeeID pivot2-col1-sortdescbyvalue-area-top7 pivot5-row1-top10-other-sortdescbyvalue-column
OrderDate pivot1-row1-date-all pivot6-row1-line-date-all
RequiredDate pivot2-row1-date-all pivot7-row1-column-date-all
ShippedDate pivot3-row1-date-all pivot8-row1-area-date-all
ShipVia pivot3-col1-sortdescbyvalue-column-top5 pivot9-row1-top10-other-sortdescbyvalue-donut

Upon regenerating the app and refreshing the page, notice that the default sizes have been applied. The first chart is of “medium” size and now takes 2/3s of the screen on large devices.

The first chart has size of "medium" and takes 2/3s of the screen.

The “large” fourth chart takes the whole screen.

The fourth chart is "large" and takes the full screen

Sunday, March 8, 2015PrintSubscribe
Line Chart Type

The “line” chart type shows a line that plots a value as it changes over the horizontal axis. A typical use case might be plotting a value over time.

To use “line” chart type, add the keyword “line” to any “pivot-” tag, and make sure that it is separated with hyphens (-).

Data Field Tag
OrderDate pivot1-row1-date-line

The chart is using the “date” keyword, which directs the server to attempt several combinations of date groupings. The best fit group is selected and displayed to the user. An equivalent tag combination on OrderDate data field would be “pivot1-row1-year-line pivot1-row2-month”.

Simple line chart using count of orders by order date.

The data for the chart can be seen here.

Data for a simple line chart using count of orders by order date.

Clicking or hovering over a data point will reveal the value.

Clicking on a data point in the line will reveal the value.

When multiple columns or values are specified, more than one line will be drawn with a different color. It is clear that Davolio’s performance in Q1 of 1997 had declined.

Data Field Tag
OrderDate pivot1-row1-year-line pivot1-row2-quarter
EmployeeID pivot1-col1

Multiple values or columns will render as different colored lines in a line chart.

The data displays the multiple columns of data below.

The multiple columns are visible in the data .

By default, lines will be drawn straight. The lines can be curved by specifying the keyword “curve”.

Data Field Tag
OrderDate pivot1-row1-year-line pivot1-row2-quarter pivot1-curve
EmployeeID pivot1-col1

A line chart with "curve" enabled.

The line chart can also be drawn vertically. Specify “vertical” for the orientation property and the chart axes will be flipped.

Data Field Tag
OrderDate pivot1-row1-year-line pivot1-row2-quarter pivot1-orientation:"vertical"
EmployeeID pivot1-col1

A line chart that is drawn vertically.

One can enable zooming and panning on the chart by specifying the “explorer” keyword.

Data Field Tag
OrderDate pivot1-row1-year-line pivot1-row2-quarter pivot1-explorer
EmployeeID pivot1-col1

Using the scroll wheel will change the scale of the vertical axis.

The chart has a very small scale.

The chart has been zoomed in.

Clicking and dragging will pan the chart.

The chart has been panned.

Right-clicking on the chart area will reset the chart. Note that the “explorer” functionality may cause interference with the user scrolling through the page – use only when necessary.