Offline

Blog
Offline
Thursday, May 30, 2019PrintSubscribe
VS 2019, Multi File Upload, Command Line Mode
Code On Time release 8.7.11.0 brings support for Visual Studio 2019, Multi-File Upload in Touch UI applications, and new command line options that allow creating apps with automated scripts.

Start using Visual Studio 2019 with your projects. The new development environment is fully integrated in the app generator. If you do have an existing project and want to migrate to the latest tools from Microsoft, then select the app on the start page of the generator and choose Open option. File Explorer will show the project files. Either delete the file with *.sln extension and regenerate your app or right-click the solution file, open it with Visual Studio 2019, select the solution file item in Solution Explorer, and press Ctrl+S.

Multi-file Upload is now available in Touch UI if you add Upload action to a compatible data controller. End users of your app will be able to choose multiple files to upload. The app will create a database record for each file, have the file submitted to the server, and persist it to the first BLOB field.


Command Line support is now available in the app generator.

Enter the following in the command line to generate a database app that works on mobile devices and in the web browser:

codeontime -Generate "c:\apps\myapp3" -DbConnection "Data Source=;Initial Catalog=northwind-cmd;Integrated Security=True;" -run

Build mobile and web database apps in seconds in command line. Use generated apps to validate your ideas, prototype data input forms, enter sample data, and much more. Apps built with Code On Time are metadata-driven. Create you own customization tools to invoke codeontime.exe in command line mode. The upcoming Code On Time v9 will be using command line mode extensively since the entire development environment is incorporated directly in the apps.


The following features and fixes also included in this release:
  • (Model Builder) All words in field labels are capitalized when a model is created.
  • (Touch UI) Optimized packaging of JSON properties of FieldValue object instances to minimize footprint for offline/disconnected logging.
  • (Client Library) Values of static Check Box List are correctly displayed when more than one item is selected.
  • (Framework) Blob adapter configuration is not included in the JSON controller descriptor.
  • (Touch UI) Selection of files in BLOB input will make the input focused.
  • (Framework) New TemporaryFileStream class is used for temporary storage of BLOB content.
  • (Touch UI) Method $app.confim support chained alternative execution of code with promises when confirmation is canceled.
  • (Offline Sync) Concurrent uploading of BLOBs is implemented with optional reconciliation of failed to upload blobs.
  • (Offline Sync) End user can opt to sync without data refresh. The option will remain selected until data refresh is explicitly requested. This makes possible working offline and only uploading changes to the server.
  • (Framework) Batch Editing of many-to-many fields works correctly when the primary key field is explicitly included in the view.
  • (Framework) Batch Editing will not erase values of many-to-many fields that are not selected in the Batch Edit form.
  • (Framework) Surveys accept inline functions and non-string values as "Visible When" and "Read Only When" expressions in questions and topics.
  • (Framework) Signature prompt is vertically aligned to the middle.
  • (Touch UI) Download icon is not displayed anymore next to "DOWNLOAD" button.
  • (Offline Sync) Added support for signatures.
  • (Touch UI) Placing $none in "Notify" property of action will prevent notification from being displayed.
  • (ODP) Completed implementation of thumbnail production on the client.
  • (Model Builder) New implementation of multi-level construction of Copy property of lookups for both 1-to-Many and 1-to-1 relationships.
  • (Classic) Implementation of BLOB uploading is now moved to Offline Data Processor.
  • (Framework) Download cookie is set on the server only when specified in the request.
  • (Framework) Azure Blob Adapter now uses HTTPS by default.
  • (Touch UI) Fixed signature resizing.
  • (Model Builder) "Enter" key in the property of the last field will post changes and re-select the same field property.
  • (Localization) Italian localization contributed by Massimo Ciurleo.
  • (ODP) Signatures in child data views are fully supported in transactional mode (when odp is enabled).
  • (Project Wizard) New "Addons" section in Features.
  • (Framework) Filter expression in the model will not cause errors when advanced search is executed.
  • (Framework) Default transaction scope is "sequence",
  • (Offline Sync) If transaction scope is "sequence" then ODP-assigned sequence is overridden with an offline sequence number. If transaction scope is explicitly set to "all", then the sequence is assigned to 0 for all transactions in the log.
  • (Touch UI) Button "driving directions" correctly composes Google Maps query based on fields tagged as map-latitude and map-longitude.
  • (Client Library)  Failed blob will be abandoned since there is not much that the user can do. The row was either inserted or updated already. The blob was rejected by the server. Abandoning of blob eliminates infinite loop of submission.
  • (Framework) A registration record for on-demand fields with blank "On Demand Handler" is not generated in Blob.generated.cs(vb) to prevent duplicate "empty" handlers when more than one such field is defined.
  • (Classic) Rich Text editor correctly sets the value produced in custom editors.
  • (Classic UI) Data views correctly synchronize with the inserted record.
  • (Touch UI) Forced notifications without text will not cause an empty alert displayed when ui.notification.enabled = false.
  • (Framework) Generated data access object has a unique name to prevent clashing with parameters created from access control rules.
  • (Framework) New property ApplicationServices.DisplayName returns application name. The value is derived either from the default app name or from the value stored in appName property in ~/touch-settings.json.
  • (Framework) Method ApplicationServices.ValidateBlobAccess ensures that user can access the row that contains the BLOB field. The field must also be accessible to the user. Otherwise access to blob is denied.
  • (Touch UI) Context menu options for child data views that were defined in their own containers are not displayed anymore. Use fields of DataView type to display child data instead. Previously visible context options have caused exceptions at runtime.
  • (Framework) Method NodeSetCollection.SetTag correctly sets tags for both data fields and views in both singular and chained calls.
  • (Touch UI) Inline editing in child data views will not cause identity fields to be marked as "Modified" and allow entering rows without errors
  • (Touch UI) Refactored panel opening and closing.
Our next goal is to release Offline Data Processor and Offline Sync in update 8.9.0.0 due out by the end of June 2019. We are skipping 8.8.0.0 release numbering since both features are being released together. Cloud On Time for Android will be out in July 2019. The new roadmap has been prepared and will be unveiled soon!


Wednesday, March 13, 2019PrintSubscribe
Faster Than Ever, Unlimited Trial With Fewer Limits
Release 8.7.10.0 is yet another steps towards the wonderful v9. This release features exceptional speed of code generation when you are making project design iterations. If you have an existing project created awhile ago, then make sure that you can generate it with the new release to get ready for Live Project Designer in Code On Time v9.

Unlimited Edition Trial is also included. The new release removes the limit on the number of data models in the project. You can create apps with any number of entities.

We are accepting requests for private live demonstrations of Offline Sync. A number of framework enhancements are introduced in the release in the preparation for the launch of this new exciting product. Just a few clicks will magically convert your online database app into disconnected (always offline) application.

If you would like to see the demo of Offline Sync then please open a support ticket and let us know your availability. Numerous changes to the Offline Data Processor (ODP) are included in the release. The completion date of ODP is rapidly approaching. We will switch the version numbering to 8.8.0.0 when ODP is released to production.

The following features and bug fixes are included in release 8.7.10.0:

  • (Touch UI) Calendar view correctly evaluates values of primary key fields when the presented in summary mode (dashboard).
  • (Client Library) Visible When and Read Only When expressions correctly evaluate $master.FieldName expressions.
  • (Offline Sync) Data download is initiated when "starting.app" event is triggered to prevent blinking.
  • (Framework) If an app without authentication is asked to confirm the user identity by Cloud On Time on branded app then a suggestion to add membership to the app is displayed. The app without a security system will not be installed.
  • (Model Builder) Command "Add all entities" will create data models for each remaining entity in alphabetic order.
  • (Touch UI) Tab bar algorithm shows "More" button with invisible tabs in fewer situations. Most of the time all tabs will be visible if there is a real estate on screen. Previously "..." option was rendered even when there was some space to fit the tabs at the bottom of the screen.
  • (Framework) Cached ~/touch-settings.json will be reloaded if it has changed or if web.config has changed.
  • (Project Wizard) New Project form does not show the name of the previously selected project in the window title anymore.
  • (Framework) Commit result is marked with date+time in "Date" property when returned to Offline Data Processor.
  • (Touch UI) Method $app.touch.toSmartDate(d) will return a smart date produced from the supplied date value.
  • (Framework) Exception is not raised when calling headerField() method on a data view that was not fully initialized.
  • (Touch UI) The text of static lookup items is presented correctly in grid/list/cards. Radio Button List, Check Box List, and List Box correctly show the selected value in edit mode for such items.
  • (Touch UI) The background of the field name in context menu displayed for field values is matched with the background color of the popup.
  • (ODP) If the entire set of rows is provided and the partially-loaded  set of rows does not exist then the row-by-row processing with key comparison is not performed.
  • (ODP) If pageSize is not defined in ODP configuration then the default value is 100.
  • (Touch UI) If event menuitem.app has stopped selection of menu item then the visual "selected" style is applied to the previously selected item.
  • (AppGen) Data access objects and Blob.generated.cs(vb) files are re-generated when controllers are changed.
  • (AppGen) Adaptive code generation minimizes transformation of unchanged files.
  • (AppGen) Publishing of the app will cause refresh of the ApplicationServices.Generated.cs(vb) file during the next code generation session.
  • (Framework) Arguments in the URL specified in the root of the app will not cause an exception when CMS is enabled.


Monday, March 11, 2019PrintSubscribe
Cloud On Time for Windows 1.2.6
The new release of Cloud On Time for Windows 1.2.6 introduces the same host API that is presently available on iOS, Mac OS, and Windows 10.

It has also been verified with the upcoming Offline Sync Addon. This new product turns your online apps created with Code On Time into disconnected/offline applications. You don't have to write a single line of code to go completely offline!
Continue to Cloud On Time for iOS