Cloud

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(8) OAuth Scopes(1) OAuth2(11) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(10) PKCE(2) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(179) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(80) 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
Cloud
Thursday, July 24, 2014PrintSubscribe
Touch UI for Any Data, Anywhere (Stored Procedures, Web Services, etc.)

Code On Time release 8.0.7.0 introduces ability to generate custom data controllers directly from Project Designer. The source of data is up to you – the app generator will handle any data anywhere! Create amazing Touch and Desktop UI for data returned from stored procedures, web services, file system, etc.  The release also introduces a collection of important bug fixes and performance improvements. Continue reading for the full list.

Generating Controllers from Project Explorer

Create a new data controller, right-click the corresponding node in Project Explorer and choose Generate from SQL option to create a data controller based on a free-form SELECT statement , stored procedure, or any other SQL script .

'Generate from SQL' and 'Generate from Fields' options in Code On Time app generator.

“Command Text”  Controller

If the script is an arbitrary SELECT statement, then indicate that the script defines a command text. This option will configure a custom command for the data controller and ensure the maximum efficiency at runtime. You can also specify an optional “base” table name if you want the controller to support Update, Insert, and Delete.

Configuring a data controller based on arbitrary SELECT statement in Code On Time app generator.

Verify the script and click OK. Copy and paste the new controller on any page.

An app with Touch UI created with Code On Time.

“Business Rule” Controller

If you want to configure a data controller based on a stored procedure, then you will need to indicate that the script defines a business rule.

Configuring a data controller based on a stored procedure in Code On Time.

The controller will be enhanced with a collection of business rules. There will be no command.

Rule enableResultSet will instruct application framework to use the custom result set.

set @BusinessRules_EnableResultSet = 1
-- Enable caching of the result set. Duration is specified in seconds.
-- set @BusinessRules_ResultSetCacheDuration = 30 

Rule getData will produce the result set.

EXEC    [dbo].[Employee Sales by Country]
        @Beginning_Date = N'1/1/1980',
        @Ending_Date = N'1/1/2014'

Note that Update, Insert, and Delete are prevented by default.

set @BusinessRules_PreventDefault = 1
-- implement insert here

Implement your own business logic in the corresponding SQL or “Code” business rules. The output of the stored procedure will be stored in an instance of DataTable class. Developers can specify optional cache duration to improve performance of controllers based on “slow” stored procedures.

Business rules of a data controller based on a stored procedure displayed in Project Explorer of Code On Time app generator for desktop and mobile devices.

Drop the controller on a page to see it in action.

A data controller based on a stored procedure displayed in Touch UI application created with Code On Time.

“Thin Air” Controller

If you data is not coming from the database, then use another approach. Define a collection of fields for the new data controller. Right-click the data controller and choose Generate from Fields option. This will create a collection of “Code” business rules that produce an empty DataTable class instance with the columns matching the data controller fields.

A custom data controller produces data from 'thin' air in an app created with Code On Time.

Implement the code to populate the DataTable instance in the file that contains GetData business rule.

Imports MyCompany.Data
Imports System
Imports System.Collections.Generic
Imports System.Data
Imports System.Linq
Imports System.Text.RegularExpressions
Imports System.Web
Imports System.Web.Security

Namespace MyCompany.Rules

    Partial Public Class CustomDataSource3BusinessRules
        Inherits MyCompany.Data.BusinessRules

        ''' <summary>
        ''' This method will execute in any view before an action
        ''' with a command name that matches "Select".
        ''' </summary>
        <Rule("GetData")> _
        Public Sub GetDataImplementation()
            ResultSet = CreateCustomDataSource3DataTable()
        End Sub

        Private Function CreateCustomDataSource3DataTable() As DataTable
            Dim dt As DataTable = New DataTable()
            dt.Columns.Add("Title", GetType([String]))
            dt.Columns.Add("Published", GetType(DateTime))
            dt.Columns.Add("Reviewed", GetType(DateTime))
            '
            ' Populate rows of table "dt" with data from any 
' source (web service, file system, database, etc.) '
Dim r As DataRow = dt.NewRow() r("Title") = "Building modern applications with Code On Time" r("Published") = New DateTime(2014, 12, 15) dt.Rows.Add(r) Return dt End Function End Class End Namespace

Note that Update, Insert, and Delete commands are prevented by default. You can implement your own routines when needed. Also make sure that you have specified the primary key fields to allow selection of data .

Here is the data controller in a live application.

A data from 'thin' air displayed in an app with Touch UI created with Code On Time app generator.

This feature is available in all product editions. Detailed tutorials with step-by-step instructions will be published later this week.

Bug Fixes and Enhancements

The release includes an important fix for Unlimited edition users. Generated applications were failing previously if the browser was not supplying Accept Encoding header in HTTP requests, which resulted in a non-function page displayed to the end users in both Desktop and Touch UI. The web server was reporting HTTP error 400 (Bad request).

Application framework will also not execute custom business rules twice. The bug was introduced in the previous release.

Business rules are not executed for the selected and unchecked row when multiple selection is enabled in Desktop UI.

This is the list of other enhancements and bug fixes included in the release:

  • Non-IE desktop browsers will not report “Invalid date” message in Touch UI.
  • Touch UI updates all visible summary views in Touch UI when a page is resized.
  • Filter information and "Clear" option are displayed correctly in master and detail context menus in Touch UI.
  • Summary views in Touch UI do not wrap "See All" option on the next line.
  • Touch UI displays "Showing N items." message in the view description.
  • Item styles RadioButtonList, ListBox and CheckBoxList are now supported in Touch UI. The latter enables many-to-many fields.
  • Method $app.mobile.activeLink will not strip "focus" from the active tab on touch-enabled devices.
  • Touch UI now uses action header text, command name, and command argument to eliminate duplicate actions from the context menu. Previous implementation has relied on command name and argument only, which have resulted in “lost” context menu options.
  • Fixed the bug in Quick Find that was causing incorrect search results when fields "shorter" than the search sample are present in a grid/list view.
  • Navigating to a "hashed" url of a protected page will not cause a duplicate history event in webkit browsers.
  • Page title is displayed inline when sidebar is visible to allow more space for toolbar buttons.
  • Taphold on field value in a grid column will display a popup with a complete text of the field value if the value is partially hidden.
  • Touch UI allows static text selection with a mouse in desktop browsers.
  • Fixed page height decrease caused by a refresh of a summary view in Touch UI.
  • Removed "keyup" and "keydown" events causing appscrolling  event in wrappers in Touch UI applications.
  • Taphold can be done with Ctrl+Click when using a mouse in Touch UI applications. The other option is to press the mouse button down and holding it at least 750 milliseconds before release.
  • Fixed ResetSkipCount method to ensure that a correct page is loaded from Result Set under all conditions.
  • User and Role manager have been improved for a consistent behavior in Desktop and Touch UI apps.
  • Sync of selected key value is performed by application framework if the number of submitted key values matches the number of primary key fields.
  • Focus on an input field in Touch UI will also select the field value.
  • Blob key field is converted to a string when a check for "null" BLOB field is performed in Touch UI.
  • Removed icons-png folder from the ~/touch/images folder of generated apps. The complete set of SVG icons available in Touch UI are now listed in ~/touch/icons.html file includes in every project.
  • Fixed Export exception when server rules are null.
  • Ensured EnableMinifiedCss is generated for all users.

The next release will be out in early August of 2014. We expect to include further enhancements to the Touch UI and a new server-side Reporting API that will produce binary reports on the server. The feature will also be extended to Email Business Rules to enable reports as attachments.

Thursday, December 26, 2013PrintSubscribe
Mobile Database Apps for iPhone/iPad/Android, Visual Studio 2013
Code On Time release 8.0.2.0 introduces an updated Universal Mobile/Desktop Client in the apps created with Premium and Unlimited editions. The new mobile client offers editing capabilities and Responsive Web Design. The same exact app will take a full advantage of the client mobile device and offer the most efficient method of presenting data. Continue reading for full release notes after the screen shots.
See the live mobile demo at http://demo.codeontime.com/northwind/pages/home.aspx?_mobile=true.
These are the screen shots of iPhone 5s with the product list and a single product in an edit form.
Mobile client rendering of a product list in the app created with Code On Time app generator.  Mobile client rendering of an edit form 'editForm1' in the app created with Code On Time app generator.
Modern tablets feature high resolution screens. iPad Air with portrait orientation in shown in the screen shot below with the display of the same product list. List items are wider and a fixed context sidebar is automatically visible on the right-hand side of the screen.
Mobile client rendering of a product list in iPad Air with visible context sidebar in the app created with Code On Time app generator.
This screen shot shows the product list in iPad Air with landscape orientation. The context sidebar has been undocked to offer three columns of list items.
Mobile client rendering of a product list in iPad Air with landscape orientation in the app created with Code OnTime app generator.
Don’t forget that apps created with Unlimited edition also support Desktop client devices. See the desktop version of the demo at http://demo.codeontime.com/northwind/pages/home.aspx?_mobile=false.
Mobile client rendering of a product list in iPad Air with landscape orientation in the app created with Code OnTime app generator.
Application framework automatically detects the type of client device and hooks either mobile or desktop client library to rendered application pages ensuring the most friendly presentation.
The following features and bug fixes are included in this release:
  • Updated mobile client library with full editing capabilities and Responsive Web Design.
     
  • Production release of jQuery Mobile 1.4 is the foundation of the mobile client library.
     
  • Visual Studio 2013 is now supported.
     
  • Windows Azure SDK 2.2. is now supported.
     
  • Client library supports "lookup-details-hidden" tag to hide "arrow" that allows view object details from lookup fields.
     
  • Thumbnails of images are now rendered on transparent background. Previous releases where rendering images with white background and thin gray frame.
     
  • Web.Config.Release and Web.Config.Debug transformations are now supported in Web App Factory and Azure Factory apps.
     
  • Application page builder will prevent creation of duplicate pages and configure the first foreign key field as Filter Source field if multiple FK fields are referencing the same controller.
     
  • Import processor passes the name of the temporary file to ImportProcessorFactory to allow overriding and correction of the submitted import file.
     
  • Import processor will automatically bind records imported into child data views to the primary key of a selected master on any level of hierarchy.
     
  • Thank you Ed Blum for contributing "nl-NL" enhanced localization.
     
  • Method DataViewExtender.AssignFilter will accept an array of values for Include and Exclude filters.
     
  • Removed extraneous ")" from the project build file that was preventing Web App Factory from generating the Login page.
     
  • Spansh style of "a.m./p.m" designator is using "space" in the middle on Window 8.1. The client library will correctly parse time.
     
  • Legacy apps without /project/features/framework/@scriptOnly set to "true" in DataAquiarum.Project.xml file will not try to render Mobile Client.
     
  • Desktop client correctly positions Calendar in all browsers.
     
  • Desktop client correctly processes selected lookup values in FireFox.
     
  • Desktop client does not apply the URL command parameters to object Details when a user clicks on an arrow.
     
  • Removed "x" button in IE10 and above in desktop apps.
Next release is planned for January of 2014. There will be numerous enhancements to the mobile client to further narrow the gap between Desktop and Mobile features. Here is a partial list of things we are working on:
  • Blob upload/download.
  • Confirmation data controllers
  • Multi-field copy and context fields in lookups.
  • Dedicated presentation for Auto Complete, Check Box, and Check Box List lookup styles.
  • Filtering capabilities.
  • Mobile version of Advanced Search Bar.
  • Display of aggregates in context sidebar.
  • “Tabular” display of data lists.
  • Multiple-selection of list items.
  • Conditional visibility of categories and fields.
  • Conditional read-only fields.
  • Calculated fields.
We are also preparing to showcase http://cloudontime.com. We have done tremendous amount of work to bring built-in dynamic page creation, workflows, blogging and support forum capabilities to the apps created with Unlimited edition of Code On Time. Stay tuned.
Monday, October 21, 2013PrintSubscribe
Miscellaneous Hot Fixes

Code On Time releases 8.0.1.0 introduces the following features and hot fixes:

  • Learn about new synchronization service and how to share Project Designer changes with other developers involved in your project. Use Team Foundation Service to implement version control of application source code.
     
  • SharePoint Factory apps will not raise exceptions when a Web Part is inserted in a live page of a SharePoint site.
     
  • New property Access allows the data controller views to be exposed on public pages. The default value of the property is “Private”. Anonymous users are not authorized to see data views placed by developers on publicly available application pages. Set "Access" property to "Public" to allow anonymous users to interact with the view.
     
  • Rich text input mode of data fields will not cause an exception in a mobile client.
     
  • Synchronized Project Designer change logs of legacy applications will be correctly merged after automatic refresh.
     
  • Property ApplicationServices.Version correctly treats application version as a string. The previous implementation may have resulted in a compilation error when generated on computers with some European locales.
     
  • Permalinks will not cause exceptions in the Mobile Client.