Forms, Reports, Apps

Build and deploy rapidly. Use offline, online, on-premises.

  Blog

Blog
Monday, December 25, 2017PrintSubscribe
Offline Data Processor, Native Apps, Code On Time v9 – Coming Soon!

The roadmap at https://codeontime.com/roadmap provides an overview, direction, and status of product development. The projected delivery dates are estimates and may change at any time.

Release 8.x.x.x Features

The major milestones in the near future are:

Offline Data Processor

The new client-side application feature in Touch UI apps will enable transactional data input. ODP is automatically engaged when DataView fields are modified. Changes begin to accumulate on the client and CRUD operations are simulated creating an illusion that data has been persisted. If the master record is saved then the entire log of server-side requests is submitted at once to the server. The server-side framework will start a database transaction, execute all requests, and commit them if there are no errors.

Offline Sync Add-On turns a an app with database backend in a fully-offline app.

ODP makes possible

  • Entering child rows without submitting the master record.
  • Creating complex wizard forms with child data view fields.
  • Building surveys with the DataView fields.
  • Confirmation controllers collecting complex parameters for business rules. Child DataView fields are accessible in business rules in JSON format.
  • “Always-offline” execution mode of apps.
  • Built-in Project Explorer configuration forms in the upcoming Code On Time v9.

ODP is expected in Release 8.8.0.0.

Native Apps

Native apps for Windows 7, Window 10 (Microsoft App Store), iOS (Apple App Store), and Android (Google Play Store) will become available to run applications created with Code On Time directly on native devices without using a web browser. Native App is a collection of HTML, JavaScript, CSS files integrated with a platform-specific code, interacting with your web server via HTTP to read-write data.

We will offer pre-made native apps available in the corresponding app stores. It will also be possible to create a native branded app that developers can deploy to the app stores on their own.

Native Apps are expected in Release 8.7.0.0.

Offline Sync Add-On

This is a new product that makes possible for Native Apps to run in a always-offline mode by extending ODP (Offline Data Processor) with the pre-emptive downloading of data from the server-side code deployed to a web server.

In essence you are building an app that works with a traditional database engine (SQL Server, Oracle, MySql, etc) or REST backend and turn it in a fully offline app without writing a single line of code with the help of Offline Sync Add-On,

Offline Sync Add-On is expected in Release 8.8.0.0.

Release 9.x.x.x

Our  next major goal is a new development environment named Code On Time v9.

Today Code On Time is a Windows Application that combines a hierarchical Project Explorer implemented as TreeView component available natively in Windows and built-in Web Browser. Developer navigates the trees of pages and controllers to access project configuration elements loaded in the web view. There is no web server involved. All settings are loaded from the local file system of the development machine. Configuration changes are persisted back to the local file system.

Code On Time v9 drops TreeView+WebBrowser development environment and replaces it with a JavaScript implementation embedded directly into the apps.

JavaScript equivalent of the Project Explorer will activate directly from the generated app and display alongside of the live pages. The new Project Explorer will synchronize with the application as user navigates through the app and activates screens/forms. Drag & drop operations from the Project Explorer to the app will  cause the live app to change. Modal Forms will be used to change properties. A new Object Inspector will simplify learning and change the app configuration with instant live preview.

The new Project Explorer needs a backend to discover the project configuration elements and to persist project changes.

We will offer three different backends.

Code on Time v9 - a Windows application that performs many of the functions of the current Code On Time v8, but does not have any user interface. Apps created with Code On Time v9 will detect its presence on the local computer and provide end users logged in as Administrators/Developers with an access to Project Explorer if the app is running as "localhost".

This backend is an equivalent of current Code On Time and will have exactly the same pricing model available at https://codeontime.com/buy.

Cloud On Time - a hosted application running in the cloud. It will have a built-in Database Designer that will allow creating tables/views in the cloud database. Programming will be possible with SQL business rules. This hosted app is being created with Code On Time v9.

This new backend will have a subscription-based pricing and let creating apps with Unlimited Edition features without installing anything on a development machine.

Cloud On Time Private Edition - a  version of Cloud On Time that can be privately deployed on premises.

The pricing for this backend is per-core of the deployment machine.

Code On Time v9 is a single development environment with 3 different backends. Development environment of v9 integrates directly in the apps.

Friday, December 15, 2017PrintSubscribe
Data Field Tag: Overview

The data field Tags property is a space-separated list of values used by the client library to automatically add enhanced functionality at run-time. The table below shows available values and their related function.

Value Function
action-call
action-call-disabled
Will render a Call action to activate the device’s dialer application to make a call to the field value. The “disabled” tag will disable the automatic Call action.
action-email
action-email-disabled
Will render an Email action to open the device’s emailing application to send an email to the field value. The “disabled” tag will disable the automatic Email action.
action-url
action-url-disabled
Will render a Link action to treat the field value as a URL. The “disabled” tag will disable the automatic URL action.
calendar-date The primary date field to be used for Calendar presentation style.
calendar-end The “end” date field to determine date range in Calendar presentation style. In forms, will also configure the calendar input to automatically jump to this field from the “calendar-date” field and only allow date values in the future relative to the “calendar-date” field to be selected.
calendar-color The value field that will assign colors to each record.
calendar-text The field will be used as the primary displayed text in an event in Calendar presentation style.
calendar-disabled Will disable calendar presentation style processing for this field.
calendar-input-disabled Will disable calendar input control for this field in Touch UI.
calendar-input-data-none Will disable automatic query of record counts displayed in the calendar input control.
calendar-input-future Only allows selecting date values in the future.
created-coords When a new record is created, the geolocation will be requested from the browser and saved into the field in the form “[latitude],[longitude]” (without brackets or quotation marks).
created-latitude When a new record is created, the latitude will be requested from the browser and saved into the field.
created-longitude When a new record is created, the longitude will be requested from the browser and saved into the field.
data-sheet-freeze The data field will be “frozen” when in second generation data sheet view. The user can still unfreeze the column by activating “Unfreeze” option in the column header dropdown.
header-image-original If the field is a BLOB, will render image as header in full quality.
header-text The value of this field (in grid1) will be displayed as the header in Touch UI forms.
import-duplicate-test When importing records, the process will search for records with matching values in fields with this tag. If it exists, it will skip this record.
import-duplicate-accept When importing records, the process will search for records with matching values in fields with this tag. If it exists, it will update the existing record.

hierarchy-parent

The foreign key data field will be used as the parent when creating and rendering a hierarchy in second generation data sheet view. Examples include: ManagerID, ReportsTo.
lookup-details-hidden Hides the lookup reference arrow in the user interface.
modified-coords When a record is modified, the geolocation will be requested from the browser and saved into the field in the form “[latitude],[longitude]” (without brackets or quotation marks).
modified-latitude When a record is modified, the latitude will be requested from the browser and saved into the field.
modified-longitude When a record is modified, the longitude will be requested from the browser and saved into the field.
lookup-details-hidden Will hide the lookup details arrow from the user to prevent direct access to the lookup record.
map-latitude
map-longitude
map-address
map-state
map-city
map-region
map-postalcode
map-zipcode
map-zip
map-country
Use both “map-latitude” and “map-longitude”, or at minimum “map-address” and “map-city” in order to enable Map presentation style in Touch UI.
map-none Will disable map processing for this data field.

Tags are also used to configure the Chart presentation style. All chart tags start with the keyword “pivotX”, with X being the ID of the pivot. Learn more about how to format chart tags.

These keywords must be combined with dashes “-” to form a tag. Note that keywords with “X” require an integer value replacing the X. If not specified, the default value is 0.

Note that keywords can be split into multiple tags. For example, specifying “pivot1-row1-area” will be equivalent to “pivot1-row1 pivot1-area”. Do not specify duplicate keywords for the same pivot.

Some keywords support specifying a string value. This keyword must be the last keyword of the tag. Format these keywords like the following:

pivot1-title:"This is the title"

The table below enumerates the available keywords.

Keyword Function
pivotX The integer value X determines the pivot ID that the properties will be applied to.
rowX The data field will be used as a row. The index of the row is X.
colX The data field will be used as a column. The index of the column is X.
valX The data field will be used as a value. The index of the value is X.
area
areastacked
bar
barstacked
candlestick
column
columnstacked
candlestick
donut
geo
map
line
pie
pie3d
scatter
table
This keyword determines the chart type. If this keyword is not specified on at least one tag referencing pivot X, then the pivot will not be rendered as a chart.
small
medium
large
Determines the default size for the chart in the user interface.
topX Only the top X number of rows or columns will be kept. The rest will be hidden.
other When used in combination with “topX”, the hidden rows or columns will be collapsed into an “Other” row or column.
date This keyword, used on a DateTime data field, will compose multiple pivots with different configurations. The pivots tested are: year, year/quarter, year/month, year/month/weekofyear, year/month/day. The pivot with the number of rows closest to 25 will be selected for use.
sum
min
max
avg
count
These keywords will determine the value that will be used when calculating cells.
timeofday
second
minute
halfhour
hour
day
dayofweek
weekofmonth
week
weekofyear
twoweek
month
quarter
year
These keywords determine the date bucket mode. The DateTime value will be parsed and use the relevant part of the date.
all Lookup data fields will select all distinct values from the database and ensure that all possible lookup values will be present in the row or column. DateTime data fields will make sure that each bucket between the first and last row or column will be present.
hideblank The “blank” row or column will be hidden.
sortasc
sortdesc
sortascbyval
sortdescbyval
Use the “sort” keyword to determine the sorting order for values of this row or column. Specify “sortasc” or “sortdesc” to sort the row or column alphabetically or numerically. Specify “sortascbyval” or “sortdescbyval” to sort the rows or columns numerically by the value itself.
maximize The chart will take the full allocated space in the view. Axis labels and titles will be displayed inside the chart area.
crosshair Crosshairs will be enabled for the supported graphs.
title
haxistitle
vaxistitle
Specify a string value to set the relevant title text.
format Specifies an ICU Decimal format string.  Supported .NET-compatible formats are “c”, “C”, “d”, “D”, “e”, “E”, “f”, “F”, “n”, “N”, “p”, “P”, “x”, “X”. 
region Specify a string value to set the region mode for “geo” chart.
displaymode Specify a string value to set the display mode for “geo” chart.
resolution Specify a string value to set the resolution for “geo” chart.
curve Enables curvature in the “line” chart.
explorer Enables zooming and panning in the “line” chart.
maptype Specify a string value to set the Map Type in “map” chart type.
enablescrollwheel Enables the scroll wheel for zooming in “map” chart type.
usemaptypecontrol Enables the Map Type control in “map” chart type.
pointshape Specify a string value to set the point shape.
pointsize Specify a value to set the point size.
orientation Specify a string value for the orientation of the chart.
animation Enables the loading animation.
grandtotal Will show a “Grand Total” row and column for the pivot. Not suggested to be used in conjunction with a chart.
Sunday, December 10, 2017PrintSubscribe
Tab Bar, Transparent Notifications, Selection After Actions

Code on Time release 8.6.11.0 introduces the Tab Bar, the new cool feature that automatically enhances your app if you define custom icons for some of the pages.

Tab Bar in the app with Touch UI created with Code On Time application generator.

Notifications now work in concert with fixed footers and action promotion button but lifting them when notification is displayed.

Notification bar moves fixed content (Tab Bar, Aggregates, Promo button) up when displayed in Touch UI apps.

Fixed footers typically display Tab Bar, form action bar, aggregates, and “Promo” button.

If you enter th following configuration in ~/touch-settings.json file, then notifications will become transparent and display on the left side of the screen when there are no fixed footer.

{
  "ui": {
    "notify": {
      "location": "left",
      "transparent": true,
      "enabled": true
    }
  }
}

Transparent notifications can be now displayed on top of the screen content.

Account Manager displays the current user icon in “selected” state. If the other identities available are expired, then they get displayed with the “Signed Out” indicator.

Current user identity is displayed as 'selected' item in relevant menus and panels in Touch UI apps.

One important feature is now available to developers of business rules. By default, any custom action will reduce the selected items to the last one selected at the time when the action was invoked.

It may be desirable to preserve the entire selection of items or have the selection completely cleared.

Now developers can @Result_KeepSelection and @Result_ClearSelection parameters. Simply assign value 1 to the parameter if you program SQL business rules. C#/VB developers can assign true to Result.KeepSelection and Result.ClearSelection properties.

The following features and fixes are included in the release:

  • Notifications can be transparent if ui.notify.transparent = true is specified in touch-settings.json.
  • Added support for @Result_ClearSelection in business rules to clear the selected keys after an action.
  • Added support for @Result_KeepSelection in business rules to keep the selected keys after an action.
  • Ensured SiteContent is not included with .NET 3.5/4.0 projects.
  • Fixed. MicrosoftAjax.js not included in .NET 3.5/4.0 projects.
  • Fixed. MimeMapping compilation issue in .NET 3.5/4.0 projects.
  • Keyboard input received from the user correctly postpones the "idle user detection".
  • Notifications for sort/filter/group/refresh are prefixed with the data view field name when available.
  • Menu item representing the current user is displayed in “selected” state in panels and menus.
  • Indicator "Signed Out" is displayed in account manager next to the user name when needed.
  • Notification is always displayed as a full-width bar if there is a fixed footer.
  • Fixed footer at the bottom of the screen is moved upward when notification bar is displayed.
  • Displaying of Tooltip for popups and panels when available. Items based on actions use description of the action as a tooltip.
  • Material icon is now used to render "drop down arrow" for a more consistent presentation.
  • RTF input loses focus when user clicks on static content of the page in WebKit browsers.
  • Email fields are correctly displayed in the summary on the fully expanded sidebar.
  • Email icon shows up on the toolbar and in the row context menu when email fields are detected.
  • "Select" business rules do not run on server when "Distinct" requests to read data are executed.
  • Distinct requests for data are not corrupted by presence of Select business rules.
  • Context-dependent auto-complete passes null for the parent value if it has not been selected.
  • Fixed issue with OAuthHandler detecting "Sync User" incorrectly.
  • Fixed. Dependent Lookup Auto Complete is not filtering when typing in, but filters when the drop down arrow is clicked.
  • Fixed the issue with incorrect DataView field header text prefixing in notifications.
  • Fixed issue switching calendar tabs for all languages.
  • Blob Handler now uses correct column name for primary keys.
  • Fixed issue with SiteContent model detection in MySQL apps.
  • Touch Calender now correctly uses quick find, filters, and advanced search.
  • Added null check for UrlReferrer in businessrules.cc/vb
  • Added dynamic controller serialization in JSON format to support Offline Data Processor.
Continue to Tab Bar