App Studio

New editions, sidebar enhancements, and navigation menu tree.

Labels
AJAX(112) App Studio(9) 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(178) 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(184) 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(3) 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
App Studio
Friday, March 1, 2024PrintSubscribe
Enterprise Edition, Resizable Sidebar, Tree Menu

Code On Time app builder version 8.9.37.0 introduces new product editions, resizable sidebar, menu items rendered as tree, multiple Offline Data Processor enhancements, and miscellaneous bug fixes.

Enterprise Edition

The new “Enterprise Edition” of Code On Time app builder combines Offline Sync with the formerly Unlimited Edition. Offline Sync is the magical ingredient that turns an online app into an offline application capable of running without Internet connection in all major browsers and in the native mode.

Community Edition

The new “Community Edition” is the special version of the Enterprise Edition. Developers can use this new product to create any number of apps with any number of users for educational, nonprofit, and commercial purposes. Download the Community Edition now and start building your first offline or online app!.

Resizable Sidebar

An app displays a sidebar when the device screen or browser window is large enough and has a landscape orientation. Users can resize the app sidebar by dragging the right border separating the sidebar from the page contents. A double-click on the sidebar divider will toggle its width between the default and mini state. Developers can now set their preferred sidebar width in the Client / User Interface section of the App Studio settings.

image1.png
The screenshot shows the sidebar resized to take up half of the app window. The list of suppliers shows the cards formatted by a custom render. The user-defined width of the sidebar will be adjusted to make sure that it never exceeds the 50/50 proportion when the display orientation or window size is changed.

The sidebar will switch to a mini state when users drag the sidebar divider all the way to the left.

Tree Menu

The new Tree presentation style of navigation menu is activated when developers use the App Studio to set the Settings / Client / User Interface / Menu / Location property to have the Sidebar value.

image2.png
Developers may choose to display the app navigation menu in the sidebar. The default presentation style of the sidebar menu is set to Tree. The compact navigation hierarchy blends seamlessly in the user interface.

The ThreeView is the new user interface component of Touch UI. It was first introduced in the App Studio tools to present hierarchies of the data controllers, navigation menu, data models, and settings. The future product released will demonstrate other exciting uses for this simple and powerful feature.

Features

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

  • (Framework) Integrated jQuery 3.7.1 in the application framework.
  • (Framework) Upgraded to the latest Newtonsoft.Json and YamlDotNet.
  • (Touch UI) The sidebar is now resizable.
  • (Touch UI) Added the TreeView-based menu to the app sidebar.
  • (ODP) The offline data processor detects the undefined context values and converts them to null when populating the static lookup items with the context dependency.
  • (ODP) The offline data processor is using the controller metadata to construct the filter when performing requests. Previously the data fields in the PageView instance were used instead, which provided an insufficient set of fields in some instances.
  • (Framework) Fixed incorrect population of the static lookup values for the fields with context mapping when the value of such a field is first changed and then restored by the user.
  • (Framework) The SQL exception is not raised when users search/filter views that have both the many-to-many fields and "formula" fields.
  • (App Gen) Add-ons section is disabled in the Project Wizard. All existing and future add-on features are now added to the apps created with the Enterprise Edition.
  • (Data Aquarium) The JavaScript business rules engine will report the runtime exceptions in a notification.
  • (Touch UI) Context menu renderer ignores the leading dividers that may be occasionally available under some conditions. This eliminates the "thick" dividing lines in the sidebar and list menus.
  • (Reporting) BLOB-based images in the RDLC reports are using the hash of the validation key for the request validation purposes.
  • (Touch UI) The $app.touch.notify() method invoked with the "block:true" option will block the incoming notifications until the specified notification is dismissed. This prevents the App Studio from blocking an exception raised when an app is started in development and the server-side exception is reported on the start.
  • (Framework) The new ReportBase.ToReportDefinition(string) method allows overriding the contents of the RDLC report definition XML document at runtime.
  • (Touch UI) Removed the legacy theming of the "native" apps.
  • (Framework) The cache key for the combined CSS included the theme, accent, and the authentication status of the current user. The latter was not included previously.
  • (Touch UI) The menu treeview in the sidebar is positioned below the list of context actions if 'ui.menu.position' is set to 'bottom'.
  • (Offline Sync) The Settings option is not available to the offline users on offline pages.
  • (Touch UI) The "My Account" option is not available if the device is not online.
  • (Offline Sync) The standard offline/offline123% user account is automatically created when the membership is installed in the database.
  • (App Studio) The "thin" scrollbar is displayed in the code generation log when the app is generated or synchronized in the studio.
  • (App Studio) The app is surrounded with a thin border when the studio mode is activated.
  • (Offline Sync) The "cloud" icon on the toolbar will reflect the pending uploads when the static pages are without data.
  • (PWA) The worker closes the "offline" database in the IndexedDB if there "blob" store is not found.
  • (Offline Sync) The offline-sync.js is linked to the app payload only if the user is in the “Offline” role.
  • (Offline Sync) The offline capability is integrated in the apps created with the Enterprise Edition and Community Edition of Code On Time.
  • (Touch UI) The menu options, app buttons, and user avatar icon are instantly visible on the content pages, fullscreen data pages, and summary pages when the physical HTML page is loaded in the browser window.
  • (App Studio) The correct theme is loaded for the App Studio when the user toggles the Light|Dark theme in the settings.
  • (Touch UI) The Quick Find displays the auto-complete results fetched from the data visible in the view. This functionality was broken in the previous release.
  • (App Gen) The legacy versions of jQuery are removed from the project when the solution file is revised.
  • (Touch UI) The default sidebar width is specified in the ui.sidebar.width parameter in ~/app/touch-settings.json.
Wednesday, November 1, 2023PrintSubscribe
November 2023 Hotfix

The following features and bug fixes are included in the release 8.9.35.0:

  • (Framework) The errors are displayed as notifications when evaluating the availability of actions in the given context. Developers will see a notification displayed if there is an error while evaluating the When Client Script expression specified on an action. Such expressions are written in JavaScript and allow implementing the conditional availability of actions.
  • (Framework) The legacy syntax [FieldName] will not conflict with the new recommended method of referencing fields in the When Client Script expressions of actions. The recommended syntax is this.FieldName. For example, this.UnitPrice > 100.
  • (Designer) The Windows-based legacy designer does not crash when selecting the Controllers, Fields and a few other nodes in the Project Explorer.

We are aggressively executing on the roadmap of the App Studio, the new embedded development environment for applications created with Code On Time. The App Studio is available in the apps with the HTML page model and Touch UI. Make sure to inspect the various user interface elements of your application and view their properties in the new Project Explorer hierarchy.

Developers that rely on the ASPX page implementation or Classic UI will have an opportunity to try the new tools in the upcoming releases. The project list and the standalone tools will appear directly in the same page that presently provides the newsfeed when the app generator is started.

image1.png
The Project Explorer hierarchy is displayed when a field in form or grid/list/cards is inspected. An individual without any understanding of the application will have instant access to the project configuration directly from the live app running on the locahost in their favorite browser. The hierarchy is working in the readonly mode in this release.

A few clicks allow making changes to the application behavior in the Settings hierarchy in a live application running on the localhost.

image2.png
Click the Settings button on the App Studio toolbar to activate the Settings hierarchy. Multiple properties can be configured directly in the live application right now.
Tuesday, October 31, 2023PrintSubscribe
Hierarchies Are Taking Shape

The release 8.9.34.0 introduces numerous visual and behavioral enhancements to the App Studio hierarchies. There are also important features and bug fixes that will improve the performance of applications created with Code On Time.

image1.png
The tree in a hierarchy is now provided with a dedicated toolbar. The system Refresh, Collapse All and Properties buttons will allow developers to operate the hierarchies in a consistent manner. The Pin command will create a reference to the selected configuration element on the surface of the Studio in the future releases. The node-specific actions will appear on the toolbar.

App Studio Hierarchies

The hierarchy is the core feature of the App Studio, the new development environment embedded directly into the applications created with Code On Time. This release provides an extended set of options available for configuration in the Settings hierarchy. Developers can inspect the live app and see the properties of the data controller fields. The Project Explorer hierarchy provides the read-only access in this release. The Models hierarchy is unchanged and provides access to the data models and their columns.

The following enhancements are available in this release:

  • The RESTful API limit default is set to 2500 to ensure that all controllers, fields, etc are visible in the hierarchies. The original default value was set to 100.
  • Extended the UI Automation rules.
  • Added the basic server.rest configuration.
  • Added the visible expressions to the barcode and ui-automation configuration to hide properties when not enabled.
  • Added the "group" nodes to the controller, e.g. command, actions, etc.
  • Added the 2FA settings in the Membership and Authentication section of settings.
  • The studio is available in the live apps based on the HTML page implementation model only. Apps based on the Classic UI and ASPX page model will be configurable directly in the App Studio application without the live preview and ability to inspect the user interface.
  • (App Studio) The "...not fully implemented..." message shows the App Generator version instead of the app version.
  • (PropGrid) The hierarchies have a dedicated "close" button. Another option to close is to tap out.
  • (PropGrid) The "Properties” command executed in the tree will center the selected node if it was scrolled away.
  • (PropGrid) The "tree" can gain the keyboard focus.
  • (PropGrid) Double-clicking the information pane divider will toggle between its default height and the height that ensures that the entire content is visible.
  • (PropGrid) Expanding a category or complex property will scroll the inner content to maximize its visibility as needed.
  • (TreeView) Expansion of nodes and navigation between the nodes in the same hierarchy is smooth instead of being instant.

A hierarchy is built with two new features of Touch UI, the TreeView and the PropGrid. Both features will be made available to developers for use in their own projects in the future.

Features and Bug Fixes

The following bug fixes and enhancements are a part of the release:

  • (Touch UI) Advanced Search displays the available lookup values for the fields in the form while taking into account both the operators that require a value and those that do not require a value. For example, setting the "DateTime" field operator to "last week" will reduce the number of options available in the dropdowns of the other fields in the search form. Previously the operators without a value were ignored.
  • (Touch UI) Notification bar/toast will not push the modal form upward when the form transition is taking place. The notification will be delayed until the end of the transition.
  • (Touch UI) The data controller notifications start displaying right away. Previously a non-controller related notification had to be displayed first for the controller notifications to begin showing.
  • (Touch UI) Enhanced styling of the single-column and multi-column forms. The automatic form templates always make use of the “collapsible” containers.
  • (Touch UI) The simple and collapsible containers in forms are hidden unless they contain at least one visible data container or if there are no data containers but there are visible children.
  • (Data Aquarium) Dynamically generated JavaScript business rules are precompiled and reused for better performance.
  • (Touch UI) The Expand/Collapse tooltip of the collapsible container in a form will appear only if the toggle is clicked.
  • (Touch UI) The ability to configure the complex sort expression through the context menu of a grid/list/cards view is restored. It was broken in the previous release.
  • (Framework) The new this.FieldName syntax is fully supported in the When Client Script property of the data controller actions.
  • (UI Automation) The automated forms will remain visible when the automation rules are executed if the ui.automation.debugging is set to true in the ~/app/touch-settings.json configuration file. This is a useful feature that accelerates the development of applications driven by barcode readers.
  • (UI Automation) Fixed the typo that prevented the subsequent execution of the "then" rules during the automation.
  • (Action State Machine) The Select and Edit commands initiated in the form are executed by the parent view after the form is closed. All other commands are executed in the context of the active form.
  • (RESTful) The names of the data controllers, views, fields, etc. with "_" are allowed to be specified in the path of the resources.
  • (RESTful) The foreign key fields in the resources with the compound primary keys are correctly resolved during the navigation.
  • (RESTful) The "public" API Keys are included in the path of the "lookup-" resources.
  • (TreeView) The data-studio-link navigation is instant.
  • (TreeView) The tree remains invisible during the initial rendering and performs the instant scrolling of the visible node into view.
  • (Touch UI) The $app.touch.scrollIntoView(element, block) method will scroll the element into view if it is not fully visible. The optional block parameter accepts 'start', 'center', and 'end' values that will indicate the new location of the scrolled element in the owner's boundaries.
  • (TreeView) The $app.touch.treeView.context() method returns the context data of the TreeView in the active form if the child node is not specified.
  • (Prop Grid) The selection of a node will cause the navigation toolbar to update its contents and state of the buttons.
  • (Touch UI) Added new resources related to the property grid.
  • (PropGrid) The vertical scrollbar is correctly refreshed when another tree node is selected.
  • (PropGrid) If there is no selected property then the "information" pane is cleared.
  • (PropGrid) Native "dblclick" event will reset the dimensions of the dynamic components of the Properties Window.
  • (PropGrid) The event propgrid.app is triggered with the 'propGrid.eventName' set to 'action' when a button is pressed on the toolbar of the tree or properties.
  • (TreeView) The partially visible node is scrolled into view before the 'select' is triggered when the node is selected by the user.
  • (Prop Grid) The dedicated toolbar is displayed above the navigation tree.
  • (Prop Grid) Expansion of a category or complex property will cause the contents to scroll upward to ensure maximum visibility of the expanded content.
  • (Prop Grid) Reduced the height of the hierarchy title.
  • (Prop Grid) The 'visible' attribute of a category is propagated either to its "primary" property or assigned to the first property that has no "visibility" expression of its own.
  • (PropGrid) A tap on the "readonly" property value will select its label.
  • (Prop Grid) A click on the "horizontal" line separating two properties will select the one above. Previously the entire line was "dead" to the click and it caused the impression that the grid is not responding to the click.
  • (TreeView) The container representing a tree node is now marked as app-node. The text of the node is marked as app-text.