Tutorials

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
Tutorials
Wednesday, March 7, 2018PrintSubscribe
App Factory vs App Factory (Advanced)

When users create a new project in the app generator using release 8.6.6.0 and later, the project type will now be App Factory.

App Factory projects will create an ASP.NET-hosted web site project, deployable to any server running Microsoft Internet Information Services (IIS).

These projects contain both a REST API web server and stream HTML, CSS, and JavaScript to web browsers, to support user interaction through a publicly accessible web site. App Factory projects also function as a REST API server for native Mobile Apps.

Developers can also enable App Factory integration with DotNetNuke and SharePoint.

App Factory project folder directory root contains metadata files required by the app generator, as well as the Visual Studio solution file. An “app” folder contains the generated code required to run the server.

Project structure of App Factory projects.

Note that projects created before release 8.7.0.0 will use the “WebSite” folder name instead.

The app folder contains a set of resources required for the application to function. The App_Code folder contains the application framework. Upon running the application, the code in that folder is automatically compiled and executed.

All styling is stored under ~/css folder. All client-side scripts are stored under ~/js folder. Standard styling and script files are read by the framework, joined together, and streamed to the client (native app or web browser). The “_ignore.txt” file located in the two directories enumerates which non-standard files and directories are included in the output.

App folder of App Factory projects.

App Factory (Advanced)

An additional checkbox is now present on the New Project screen – “Implement application framework as class library (for experienced users only).”

Implement application framework as class library.

When this option is enabled, the application framework code is placed in a separate class library project, named after the project’s namespace.

Folder structure of App Factory (Advanced) projects.

The developer must have an instance of Visual Studio 2010, 2012, 2013, 2015, or 2017 installed on the development computer in order for the application to run. At compile-time, the Microsoft Visual Studio compiler must compile and package the application source code stored in the namespace folder into a *.dll file under the app folder. Only then will hosting software (Microsoft IIS) will be able to run the application.

App Factory (Advanced) projects store standard CSS and JS files under the class library. Upon compilation, these files are saved as embedded resources and read from the class manifest.

Custom CSS files can be placed under a “css” folder under the “app” directory. Custom JS files can be placed under the “js” folder under the “app” directory. The framework will read any files in those directories and not excluded by the “_ignore.txt” file, and stream them with every page request.

Pros of App Factory (Advanced)

  • Application source code is stored in a re-usable class library.
  • Hosting provider or customer is unable to view or edit the application source code.
  • Developer can only modify code during debugging if solution platform is switched to x86.

Cons of App Factory (Advanced)

  • Microsoft Visual Studio is required.
  • Application takes longer to generate and compile.
  • Developer cannot modify code files while application is running.

Old Project Types

A number of project types have been deprecated or disabled:

  1. Web Site Factory – renamed to App Factory.
  2. Web App Factory – renamed to App Factory (Advanced).
  3. Mobile Factory – a variant of Web Site Factory with Classic disabled. Deprecated. Use App Factory with User Interface set to “Touch UI” instead.
  4. DotNetNuke Factory – a variant of Web App Factory designed to work as a DNN module in DNN 7 and below. Deprecated. Use App Factory with DotNetNuke Connector instead.
  5. SharePoint Factory – a variant of Web App Factory designed to work as a SharePoint extension in SP 2010. Deprecated. Use App Factory with SharePoint Add-in instead.
Wednesday, January 24, 2018PrintSubscribe
Cloud On Time App

Cloud On Time app runs cloud applications created with Code On Time products directly on your device with an optional offline mode. Integrated access to device camera and sensors contributes to enhanced user experience.

Employee Registry cloud running hosted in the native Universal Windows Platform app Cloud On Time.

The entire front-end of the cloud application is downloaded and installed on the device for a smooth and responsive user experience.

Installed cloud application front-end is automatically updated whenever the cloud is changed. You can maintain multiple accounts for each installed app with automatic secure sign-in.

If you are installing a cloud application with Offline Sync enabled, then the relevant data is also downloaded on your device. You will work with the local data in offline mode whether your device is online or disconnected. Synchronize data with the cloud when online connection becomes available.

Connect to a compatible application in the Cloud On Time app by specifying the name or URL. If the cloud application can be connected, then its name, icon, and description are displayed in the prompt to install.

Adding Order Management cloud to native Universal Windows Platform app Cloud On Time.

Cloud On Time app will redirect to the application in the cloud and prompt to sign in to authorize access on the device. Enter username and password to confirm your identity.

Logging in to add Order Management cloud to native Universal Windows Platform app Cloud On Time.

If your identity has been confirmed by the application in the cloud, then Cloud On Time app will download a manifest of files required to run the application front-end. Files listed in the manifest are downloaded to the device.

Optionally, the data that you can access in the cloud is download to the device during the last step of installation. This requires the cloud application to be configured for offline mode.

A list of cloud applications installed on the device is displayed on the home screen of Cloud On Time app.

List of clouds displayed in native Universal Windows Platform app Cloud On Time.

List of clouds displayed in native Universal Windows Platform app Cloud On Time.

Tap the application name or select “Launch” in the “more” menu to start the app. Choose “Delete” option to remove the app from the device.

Removing a cloud from native Universal Windows Platform app Cloud On Time.

Cloud On Time app will compare the local manifest of files with the one available in the cloud when the installed application is launched from the home screen. Any missing or changed files are downloaded before the front-end of the selected Cloud is displayed.

If the launched app is working with the local data in offline mode, then the manifest verification is skipped. The manifest will be processed when you initiate data synchronization and successfully commit local changes to the cloud.

If the Cloud On Time app is closed and started again, then the last used front-end is started automatically.

Use “Exit” option in the application front-end to get back to the home screen of Cloud On Time app.

Exiting a cloud in native Universal Windows Platform app Cloud On Time.

The cloud app launched from the home screen will operate under the same identity that was confirmed by the cloud application during installation. If you need to use multiple identities on the same device, then launch the installed application front-end and add an account. Cloud On Time app will redirect you to the cloud to confirm the new identity.

Adding an identity to a cloud in native Universal Windows Platform app Cloud On Time.

Unique files of the front-end specific to the confirmed identity are downloaded and the application is launched on the device. Use the account manager of the installed front-end to switch between identities. Cloud On Time app will use the last selected identity when the application is launched from the home screen.

Log out of all identities of the installed front-end to uninstall the application. It will remain to be listed on the home screen of Cloud On Time app until explicitly deleted. User identity will need to be confirmed to run the front-end of the uninstalled cloud application.

Use Cloud On Time app for instant access to applications deployed in the cloud on your native device. Work with your data offline, online, and on-premises.

Cloud On Time app is perfect for enterprise environment. An administrator can compose a simple text file listing names or URLs of custom enterprise business apps in the cloud. The entire collection of the apps is installed when Cloud On Time app is connected to the text file. Cloud On Time app will automatically check for the revisions of the file and update the contents of its home screen. Administrator can optionally disable ability of users to connect to apps manually or delete from the home screen.

Friday, November 17, 2017PrintSubscribe
Notifications

Users love getting a confirmation for their actions but would not appreciate if the flow of data input is interrupted with blocking popups. Touch UI now has a built-in ability to automatically confirm Update, Insert, Delete data manipulations and Sort, Group, Search/Filter actions. In the screenshot below you can see an “Update” notification displayed at the bottom of the screen after product has been changed. Notification slide up from the bottom and stay for a short duration visible to the user without blocking interactions with the app. Notification automatically slides away or disappears if the user taps on it.

A notification confirming user action in app with Touch UI.

Notifications take the full display width on devices with small form factor.

A notification on a small factor device takes the entire width of the screen in the app created with Code On Time.

Modify ~/touch-settings.json to allow displaying notifications on the left side of the screen on large display devices.

{
  "ui": {
    "notify": {
      "location": "left"
    }
  }
}

Action notifications can be displayed on the left side of the screen in apps with Touch UI.

It is easy to setup your own notification on any action. For example, set Notification property of Actions / ag2 (Form) / a4 – Update, Save when Edit action in Products controller as follows:

Property Value
Notification Saved "{ProductName}" priced at {UnitPrice}.

This will result in the following notifications:

Custom notifications in Touch UI apps can reference field values.

The framework will automatically assign standard notifications to Insert, Update, and Delete commands in your data controllers if there is no value there.

Command Name Standard Notification
Insert Saved - {0}
Update Saved - {0}
Delete {$selected} deleted

Specifying {0} will include the value of the first visible data field in the view. Indexes are zero-based.

You can also {$selected} to specify the number of selected items or {$count} to specify the total number of items in the view.

If you want to disable a standard notification for a particular action, then enter $none in the Notification property of the action.

The fastest way to change the format of the standard notification is to change ^Saved^ and ^Deleted^ tokens using Visual Studio in the file Solution Name / Code On Time Items/ ClientLibrary.en-US.txt. Note that the culture in the name of the file may be different for your project. Save the changes in the file and re-generate the project. Use Ctrl+F5 to refresh the page to force the browser to load the update resources.

If the business rule forces a display of a message with Result.ShowMessage or Result.ShowViewMessage, then a corresponding notification will be displayed with medium duration.

Here is an example of SQL Business Rule handling a custom action.

set @Result_ShowMessage = 'Archived "' + @ProductName + '" product.'
set @Result_Continue = 1

A custom notification emitted in an SQL business rule implemented in the app with Touch UI.

Standard notifications are always displayed with short duration.

The standard notifications can be displayed with ui.notify.enabled property. The default duration of the notifications expressed in milliseconds is defined as follows:

{
  "ui": {
    "notify": {
      "enabled": true,
      "duration": {
        "short": 2500,
        "medium": 5000,
        "long": 10000
      }
    }
  }
}

JavaScript business rules can send notifications as follows:

$app.touch.notify("Hello World");
$app.touch.notify({ text: "Hello World", duration: "long" });

The duration can be expressed in milliseconds. If force option is specified with value true, then any visible notification will be dismissed and your own notification will get displayed instead.

Future releases of the framework will further enhance notifications with an ability to provide a custom action or callback function that can activated by a button displayed directly in the notification.

Continue to Video Tutorials