Blog

New editions, sidebar enhancements, and navigation menu tree.

Labels
AJAX(112) App Studio(6) 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(178) 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) 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
Monday, March 18, 2024PrintSubscribe
March 2024 Hotfix #2

The release 8.9.39.0 introduces the following enhancements to the application framework:

  • (OAuth) The TextUtlity.ToUniversalTime() method is used to parse the dates serialized in the OAuth data entries. This resolves the incorrect date parsing that was occuring in some locales. The error was reported as "String was not recognized as valid DateTime".
  • (Framework) The TextUtilities.ParseYamlOrJson() method will parse JSON without attempting to detect the "date" values. The serialized dates must be converted from the "string" type to the corresponding "date" type explicitly (REST Level 2). This avoids incorrect processing during the OAuth 2.0 authorization.
  • (RESTul) The $app.restful() method will correctly process requests with the query parameter when the url is specified explicitly.
  • (App Gen) The app generator will make up to 10 attempts to modify the configuration file of IIS Express when starting apps. This may be required when IIS Express is installed for the first time and performs the construction of its configuration files.
  • (App Gen) Enhanced the detection of the installed Microsoft IIS Express.
  • (App Gen) The App Studio is started even when the [Documents]\IISExpress folder does not exist. This ensures the successful creation of the first project on the workstations that have not had VS or IISExpress installed.
  • (App Gen) The new entries in the Sync.*.xml logs are time-stamped with the UTC dates. This ensures the correct merging of the App Studio and legacy Project Designer log entries.
Wednesday, March 13, 2024PrintSubscribe
March 2024 Hotfix #1

The release 8.9.38.0 introduces the following enhancements to the application framework:

  • (Touch UI) The TreeView will not iterate a template node if the node defines a when expression that does not evaluate as true.
  • (App Studio) Added the Pixel 8 Pro virtual device to the standard list.
  • (Touch UI) Perfected the consistency of the menu refresh in the toolbar after the full screen transitions to the root of a virtual page.
  • (Framework) The $app.urlArgs() method will exclude the "hash" from the URL parameter values.
  • (Universal Input) The multi-line text inputs are styled to have the whitespace as pre-wrap with the "thin" system scrollbars. If such input has the scrollable content then the input caret is always set at the top of the text when it is focused.
  • (OAuth) The callback URL with the authorization_code is constructed with the help of the UriBuilder class to handle all edge cases correctly.
  • (RESTful API) The App Studio is not linked to the app running on the localhost when the OAuth 2.0 authorization request is being handled by the app.
  • (Touch UI) Implemented the instant refresh of the app buttons in the app toolbar when the first virtual page is loaded.
  • (Touch UI) Restored the delayed refreshing of the app toolbar buttons. The last release has caused the wrong timing for the app toolbar button refresh.
  • (Touch UI) The advanced search does not raise an exception when setting focus on the field with the invalid input value.
  • (Touch UI) The inputs with the static drop down button have an increased padding on the right to ensure that the button does not overlap the input boundaries when the input outline is visible.
  • (Framework) Assigning an empty array y to the BusnessRules.ResultSetArray property will result in an empty collection returned by a RESTful API resource.
  • (2FA) The ApplicationServices.AllowUserLoginResponse() method now accepts the password argument to allow a more flexible decision making when forcing the Multi Factor Authentication.

The App Studio allows browsing the data fields and categories in the views with this release.

image1.png

The changes to the values in the Properties Window will be persisted in the next release. The data controller XML files will be modified instantly along with the corresponding entries to the .Log.xml and Syn.*.xml files. This will increase the developer productivity significantly since the code generation will not be required in most cases.

The legacy Project Designer requires the app to be generated for any project configuration changes to take effect. The new App Studio is driven by the database of configuration object properties with the explicit specification of when the code generation must take place. Most properties do not require code generation. The app studio “freezes” the UI of the live app to signify its “changed” state when developers make changes to the properties. A click on the “frozen” app will either instantly reload the app or perform the code generation with subsequent reloading.

Labels: Release Notes
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.

image2.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.

image1.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.