Blog

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
Tuesday, December 14, 2021PrintSubscribe
Roadmap 2022/2024

This roadmap does not represent a guarantee that the features will be delivered on the specified dates as described in this document. The delivery dates may change, and features may be added or removed at any time. It is merely an outline of our thoughts for the future, and is subject to change at our discretion.

Roadmap: January - April 2022 

Full implementation of project configuration in the browser with v9 Live Project Designer. This will be followed by the official announcement of Code On Time v9. 

The new Project Designer is activated directly in the “development” mode of the application.  The screenshot of the app in the development mode is shown next. Application is sized to fit a particular device and orientation. 


The main elements of the Project Designer are the Project Explorer and Properties Window. Both are activated in the sidebar that overlays the live application. The end user can inspect any visible user interface element of the application with a click. Project Explorer will synchronize the hierarchy of the project configuration with the developer’s selection. Properties Window will display all available properties of the selection. Standard properties such as Label or Header Text will be presented together with the “virtual” properties derived from the various tags supported in the application framework. Hunting for the tag description in the blog posts will be no more!

Project Explorer and Properties Window are driven by the project configuration database. The first components of the database will begin shipping with the regular product releases by the end of January 2022. The first target of the live project configuration will be the contents of ~/touch-settings.json and the main project settings currently configured in the Project Wizard. The developers will be able to continue using the current project designer and the new browser-based designer simultaneously. The browser-based designer will communicate with the ~/bin/addon.appbuilder.dll through the REST API. This DLL is required only during development and works if Code On Time is installed on the development machine.  The DLL is removed from the output when the app is published for deployment.

The project configuration database is also shared with the new content management system that replaced the current https://codeontime.com and https://my.codeontime.com. The content management system (CMS) is implemented as a Code On Time application. It will offer the community forum, help desk, blog, and documentation library. The CMS is integrated with the Live Project Designer. Developers will jump straight to the relevant  documentation and will have an option to contribute the content, start discussion on the community forum, or open a help desk ticket. The new CMS will be offered as an add-on for purchase to help infuse the powerful content publishing features into custom applications created with Code on Time. The live project designer itself will also be packaged as an add-on for integration into custom apps built with Code On Time. 

The current user interface of Code On Time generator will become hidden when the new Live Project Designer meets and exceeds the configuration capabilities of the “original” Project Wizard and Project Designer. The app generator will put itself into the icon tray when started.  Management of projects and configuration will become entirely browser-based. We expect to complete this process over multiple regular product releases by the middle of Spring 2022. The app generator project number will change to v9.0.0.0 at that time.

Roadmap: Summer - Fall 2022

Transition of HTTP request/response processing of the server-side framework to a shared class and implementation of this class for .NET Core. This will enable cross platform deployment to Windows, Mac OS, and Linux. Code On Time version number will switch to v10.

We will begin the transitioning to .NET Core right on the heels of the v9.0.0.0 release to production. The server-side framework in the foundation of the generated application is overriding the handling of request/response by .NET Framework.  First, the server-side code references to HttpContext class and its various properties will be replaced with the new wrapper class implementation. Next, we will migrate an app created with Code On Time to the .NET Core 6. The wrapper class will be changed to make use of the .NET Core facilities.  Finally, a new target will become available in the project configuration settings as we put together the new code generation templates. 

The changes will not affect the application framework and will not require any additional knowledge from developers.  Selection of the .NET Core as the target for the project will produce the output that can be deployed to Windows, Mac OS, and Linux. We expect to complete the work before the end of the year 2022. 

Code On Time v9 allows configuration of the apps entirely in the browser.

Code On Time v10 makes it possible to deploy the server-side components of  applications on multiple operating systems.

Roadmap: Winter - Summer 2023

The app generator will migrate from .NET Framework to .NET Core and allow cross platform development on Windows, Mac, and Linux. Code On Time version number will switch to v11.

Cross platform frontend and its development tools along with the cross platform deployment  will leave behind the only element of Code On Time tooling tied to Windows - the app generator itself. Presently the app generator is implemented as the Windows Forms Application with the Project Wizard and Project Designer with the WebBrowser control instances hosting the locally stored HTML files to enable the project configuration. The code generator can also run in the command-line mode to perform various tasks. 

With the release of Code On Time v9 the “original” Project Wizard and Project Designer will become dormant since the entire project configuration process will be browser-based. Instead the command-line capabilities of the app generator will be heavily in use. 

Our research shows that the implementation of all tasks can be ported to the .NET Core. Successful migration will make Code On Time into a fully cross-platform development environment with the cross platform deployment of the frontend and backend. 

Cross platform server-side code can be deployed in a container to various cloud providers. The cross-platform frontend will not know the difference given that it can also execute in the offline/disconnected mode. 

Roadmap: Fall 2023 - Winter 2024

Visual Database Schema Builder. Hosted version of Code On Time becomes a reality. 

Extending the Live Project Designer with the ability to create data models on top of the automatically generated database tables appears to be the next logical step. Our Model Builder makes use of the existing relational databases to create the denormalized views of data suitable for consumption by human beings through the user interface. 

Code On Time will introduce the Visual Database Schema Builder that will automatically create the corresponding models and physical database tables. Multiple database engines will be supported. The schema builder will create the database tables with the structure “preferred” by Code On Time data models. Tight integration with the Model Builder will radically simplify the app development. 

Visual Database Schema Builder and Live Project Designer will deliver the enterprise-quality application production in the hands of the developers with any level of expertise. Code On Time will be offered a cloud container available with a subscription and also as a standalone tool that is available today!

Labels: Features
Tuesday, December 14, 2021PrintSubscribe
RESTful Apps With Hypermedia

Code On Time release 8.9.24.0 creates apps with the hypermedia-enabled RESTful API Engine. The hypermedia controls elevate the engine to the Level 3 of Richardson Maturity Model.

The new engine significantly increases the value of your applications. It also offers new opportunities to leverage your Code On Time expertise in modern application development. The best part is that you accomplish both with just a few keystrokes!

Learn to navigate and use the RESTful Hypermedia of your application.

Top-level resource of a RESTful API is infused with hypermedia.
Top-level resource of a RESTful API is infused with hypermedia.

Why Are We Building It?

The long-time fans follow the saga of our effort to rebuild the new community site. We have designed an ambitious content management system (CMS) called the Content Hub. This CMS can be integrated into any application created with Code On Time to infuse them with the built-in community forum, help desk, blog, and documentation platform. We are getting ready to roll it out soon! The new REST API is the foundation of the Content Hub backend.

The REST API engine also answers the persistent stream of requests from our customers to allow taking advantage of the data services of the applications they create. The new API is built on top of the HTTP architecture, making use of the resource-based URLs, HTTP methods, and content caching. The hypermedia makes it uniquely easy to learn and use. The REST API engine turns Code on Time into the middleware provider, while the app developers are becoming the expert backend gurus.

Code On Time applications can serve as the backend for custom mobile and web apps, cloud process orchestration services, and much more. Start selling your data and business logic with state-of-the-art technology!

Our previous roadmaps have pointed to GraphQL as the core backend technology for Code On Time applications. The query demonstrated in the discussion of over-fetching is written with the GraphQL syntax. The follow-up releases will introduce the full GraphQL runtime for queries and mutations with the automatic generation of data and input types. The runtime will automatically resolve queries into the RESTful API Engine requests.

Assistant UI, the new text-based user interface for Code On Time applications is also in the works. It will allow the end users to text, email, and talk to your applications with the help of hypermedia!

RESTful Workshop

Start your journey into the RESTful World with a collection of curated tutorials.

Learn how to build a RESTful backend application without coding. Create embedded and standalone single page applications for the backend. Master the OAuth 2.0 Authorization Code Flow with PKCE. Use OpenID Connect to request a JSON Web Token (JWT) from the backend to find the picture and email with the explicit user approval.

Start the RESTful Workshop now!
Monday, October 4, 2021PrintSubscribe
2-Factor Authentication, "Actions" Lookup Style, Tap to Copy, Login Responses

 Code On Time release 8.9.23.0 is introducing the enterprise-grade security feature that helps secure the user accounts. 2-Factor Authentication is opt-in by default. It can also be applied to all users accounts in the existing and new apps automatically. Another highlight of the release is the option to inject the actions directly into the flow of the data fields in the forms. Multiple enhancements and bug fixes are also included in this release.

2-Factor Authentication

The new feature will require the verification code to be entered after the valid combination of username and password was provided by the user during login. The verification code can be delivered by an authenticator app installed on the personal mobile device. Other options include an email, text message, or voice call. Developers may even choose to hide the password field in the login form if the 2-Factor Authentication setup mode is automatic. 


The new multi-factor authentication enhances the protection of the user accounts. This feature was sponsored by Peter Marchal of Wonderland Office, Belgium. 

“Actions” Lookup Style

The new lookup style “Actions” makes it easy to inject the actions in the flow of data fields of a form. Action buttons placed right next to the relevant data fields gain better context and improve the user experience. The visibility of the individual action is controlled by “When…” properties associated with the action. The visibility of the entire cluster of action buttons is controlled through the Visible When property of the data field that has its lookup style set to Actions and the Name set to match the Id of the corresponding action group. 


Tap to Copy

The new tag text-action-copy will cause the “Copy” button displayed next to the data field value. Tapping or clicking on the button will cause the field value to be copied into the clipboard. See this feature in action in the screenshot above. The text is copied to the clipboard and also displayed in the notification at the bottom of the screen when the button is clicked.

Custom Login Responses

If the user login has failed, then the generic message “Your user name and password are not valid” is displayed by the apps. If the login was successful then the user is silently signed in. Sometimes a custom message or system response is desired. 

Consider the following examples:
  • The user account is locked and it is preferable to let the user know what actions must be performed to recover the account. 
  • Developers may need to inform the user about the number of remaining login attempts before the account is locked.
  • Multi-factor authentication must force the user to enter the verification code if the login was successful. 
Learn about Custom Login Responses in Code On Time apps.

Releases Notes

The the following features, enhancements and bug fixes are included in the release:
  • (Classic UI) Removed the link that allowed downloading the import template. 
  • (Touch UI) Fixed the incorrect reference to the API function in the import processor. This was causing the error with the long running imports when the status was updated.
  • (App Gen) Replaced the legacy community reference with my.codeontime.com.
  • (Virtual Keyboard)  The keyboard is minimized when the window loses focus and re-activates when the focus is restored.
  • (Framework) Moved methods and classes from ApplicationServices.cs(vb) to ApplicationServices.Auth.cs(vb).
  • (Class Library Apps) Files touch-edit.js and touch-input.js are copied to the ~/app/js/daf folder of the apps with the class library to enable debugging in Unlimited Edition apps.
  • (Framework) Method $app.prettyText formats international names as "pretty" strings.
  • (Universal Input) List box/ Check Box List / Radio Button List with 1 item has a compact presentation.
  • (Input) Qr code does not show the tooltip if the field is tagged as input-qrcode-tooltip-hidden.
  • (TouchUI) Check Box List item state transition is twice faster.
  • (Touch UI) Survey actions support the position=before|after option. If the option is not specified then actions are inserted just before the Cancel button. Actions with "before" position are placed before the "Submit" button. Actions with the position "after" are placed after the Cancel button.
  • (Framework) Method dataView.data('survey') returns the context data or a "survey" dataview. Used in the Property Grid and 2FA forms.
  • (Touch UI) The first row in the form category without the header will have a slightly large top padding.
  • (Touch UI) Freezing of the column in the grid with aggregates will not cause the exception.
  • (Touch UI) Keys F2 and Arrow Down will focus the first row in the focused DataView field in the form.
  • (Framework) Transaction processor correctly parses the temporary UIDs and resolves negative primary keys into "old" values encoded as UID if the corresponding new value is also the UID.
  • (Framework) Method Commit resolves the temporary primary key presented as negative integer or as uid in the format 000000000000-0000-0000-0000-00000001 with the key value recorded in the last segment.
  • (ODP) Client-side temp GUID primary keys are generated in the following format: 00000000-0000-0000-0000-00000000001. Only the last 12 digits are used to encode the temporary primary key, while the leading characters are set to 0.  The server-side framework resolves such GUIDs with the physical database values.
  • (Model Builder) Data View fields created in the model builder will have the filter fields correctly matched to the corresponding field names. Previously the original column name was used instead. If the output field name based on the column was not spelled in the same way then there will be incorrect filtering at runtime.
  • (App Gen) The codedom compiler now supports << (left shift) and >> (right shift) operators in C# and VB.
  • (Touch UI) Tag merge-with-prevous will cause the row to render without a separator line at the top to allow creating a contiguous group of fields in the form layout.
  • (Surveys) Setting the "text" of the question to "false" will cause the label to be blank.
  • (Touch UI) Setting the Label or Header Text of a field to $blank will result in a blank label of the field.
  • (Touch UI) Removed legacy references to the class ui-group-theme-a and ui-panel-page-container-a.
  • (Framework) If the style of field items is set to Actions then the field is marked as "virtual".
  • (Universal Input) Tag input-qrcode-size-192x192 will also trigger a custom input creation. The only input implemented now is "qrcode".
  • (Surveys) Survey definitions support causesCalculate on the actions and htmlEncode on the questions.
  • (Framework) Server-side method PopulateStaticItems will correctly assign Controller and View of the request to the internal ViewPage instance to ensure correct population of Many-to-many field with the static values (Check Box List, Drop Down List basket, List Box basket) when the Context Fields property of the many-to-many field property is set to X=Y. (X is the name of the filter and Y is the name of the field that will provide the value for X).
  • (Virtual Keyboard) Event beforefocus.keypboard.app is triggered on the data input prior to the keyboard gaining the focus. The handler can assign the callback method to the e.context.change property through the "e" argument of the event handler to be notified about changes to the text in the keyboard input.
  • (Virtual Keyboard) The virtual keyboard API is loaded when [data-input] elements are detected on the page to reduce the initial JS payload of the page.
  • (Universal Input) New virtual keyboard "pin" is now included with the framework. Tag a field as kbd-pin to have the keyboard displayed on touch devices.
  • (Universal Input) Virtual keyboard will not shift focus to the next input on tab or enter key if the user interface is in transition to another page at the moment of closure.
  • Thank you Roberto Ivon for contributing the "es" localization files.



Labels: Release Notes