Web App Generator

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
Web App Generator
Thursday, April 12, 2012PrintSubscribe
Interactive History of Recently Viewed Data

It is common for users in a line-of-business application to interact with the same data objects for extended periods of time. In this case, it may help to allow rapid switching between recently viewed objects. This capability can be enabled in the project settings of your Code On Time web application.

Start creating a sample Northwind web application. When you reach the Features page, switch to the Permalinks and History section using the box on the left side of the screen. Toggle the checkbox next to “Enable interactive history of most-recent data objects”.

'Enable interactive history of most-recent-used data objects' option under 'Permalinks and History' of Code On Time Project Wizard

Continue through the wizard. On the Themes page, select Social theme.

'Social' Theme selected in Code On Time Project Wizard

Finish configuring project settings and generate the application. When your default web browser opens, navigate to the Categories page. View several category records. Try viewing master records on other pages of the application. Any record that is displayed in the summary card on the left side of the page will be automatically added to the History of the current browsing session.

Next, click on the History link in the top left corner of the application.

History link in Code On Time web application

An interactive display of summary cards will take up the screen. When you mouse over a card, it will be brought forward. You can click on the spyglass icon to cycle through the cards.

Interactive History in Code On Time web application

Click on any card to navigate directly to the record.

Selected record in Code On Time web application

You can also click on the white space in the background or press the Esc button on your keyboard to close the History.

Thursday, March 1, 2012PrintSubscribe
Dynamic Access Control Rules, New Themes, Custom Master Pages

Code On Time release 6.0.0.21 includes numerous new features and enhancements.

New http://codeontime.com has been launched. Use the search feature of the web site to find everything related to our products including documents, tutorials, video, blog, support, and community resources.

Search engine for everything related to Code On Time

Several originally planned features were excluded from this release. We are still testing Code On Time Sync and will likely release it to production in the next two weeks. The server infrastructure of Sync is in place now.

  • Business rules are invoked correctly if data operations are initiated by data access objects.
     
  • Previous version was incorrectly displaying annotations when users start creating a new record. The annotation fields are now displayed only when user edits an existing record. Future updates will support annotations when creating new records.
     
  • LastView property in now available in PageRequest, ViewPage and ActionArgs classes.
    The application framework takes advantage of this property and automatically copies the "View Filter" from a grid view to a form view at runtime if the form view does not have its own "View Filter". Learn more about view filter expressions at http://codeontime.com/learn/security/multi-tenant-applications/view-filter-expressions.
     
  • Custom master pages are now supported. Learn more at  http://codeontime.com/learn/pages/custom%20master%20page.
     
  • Code generator now features integrated support for Google Translate API Key in globalization settings of projects. Lear more at http://codeontime.com/learn/globalization-and-localization/automatic-translation.
     
  • New Controller.ConvertToType method is used in Data Access Objects and business rules engine to convert client values to native .NET types.
     
  • Fixed the exception with filtering of DateTimeOffset fields.
     
  • Culture manager prevents duplicated initialization.
     
  • Class Controller allows overriding the new GetDataControlStream method. The method can return a stream of XML data controller definition from any source based on arbitrary condition.
     
  • Implemented data controller virtualization. Two methods are required in a business rules class: SupportsVirutalization and VirtualizeController.
     
  • Access control rules support filtering expressions with the data controller field names wrapped in square brackets. Learn more at http://codeontime.com/learn/security/multi-tenant-applications/data-segregation-and-filtering.
     
  • All available user interface are now supported right-to-left languages.
     
  • The collection of themes has expanded. You can see new theme samples at http://codeontime.com/learn/introduction/user-interface/themes-a-c.
     
  • Dynamic access control rules are now available in Premium and Unlimited editions. Learn more at http://codeontime.com/learn/security/multi-tenant-applications/dynamic-access-control-rules.
     
  • New ContainsField method is now available in ViewPage class. There is also a utility class SqlParam used with Dynamic Access Control Rules.
     
  • Business rules correctly process a single null or DBNull.Value as a restriction of an access control business rule method. Learn more at http://codeontime.com/learn/security/multi-tenant-applications/restricting-access-to-null-values.
     
  • Data Views number support Show Row Number property. The logical row number is displayed in the first column if Show Row Number is set to true. Learn more at http://codeontime.com/learn/pages/data-views/displaying-row-number.
     
  • Search Options are now supported in Premium and Unlimited edition. Learn more at http://codeontime.com/blog/2012/02/search-mode-options.
     
  • Report handler is now declared as partial class. It will allow overriding the File Name composed when a report is rendered with Report Viewer. The method name is FormatFileName.
     
  • Method DataViewExtender.AssignFilter will correctly clear the data view filter when called in response to ASP.NET events.
     

        protected void Button1_Click(object sender, EventArgs e)
        {
            dve1.AssignFilter(new FieldFilter[] {
                new FieldFilter(
                    "CategoryCategoryName",
                    RowFilterOperation.None) });
        }

  • Setting property Hyperlink Format String to a URL with _blank prefix will open a new tab in IE8/9. If user click the link while holding Shift key then the new popup window will open.
     
  • In-line creation of lookup values in a Data Sheet view will not result in an exception. Cancellation of modal lookup will not cancel editing in a Data Sheet view.
     
  • Reversed description of Hidden/System fields in the project wizard.
     
  • RichText in data fields will not cause a security exception raised by ASP.NET when executing any "Report..." action.
     
  • Modified the globalization mechanism to use the new "culture" folders under [Documents]\Code OnTime\Library\_Localization.
     
  • The code generator will not crash if a decimal point value is entered as Columns or Rows property of a data field.
     
  • Fixed the incorrect display of multi-layered modal views. Previously the subsequently opened modal views would not cover the previous view. Users were able to interact with them. Now the modal view covers with the semi-transparent background the entire area underneath.
     
  • Fixed the exception error message displayed in Designer Preview if a modal view was open at the time of closing when user exists the Designer.
     
  • The latest release generates applications with Ajax Control Tookit 51116. Learn more at http://ajaxcontroltoolkit.codeplex.com/.
     
  • Class DistinctValueRequest is now declared as partial. Developers may find it useful overriding the property MaximumValueCount to control the number of distinct values returned to the client.

    using System;
    using System.Web;

    namespace MyCompany.Data
    {
        public partial class DistinctValueRequest : DistinctValueRequestBase
        {
            public override int MaximumValueCount
            {
                get
                {
                    if (Controller == "Customers")
                        return 10;
                    return base.MaximumValueCount;
                }
                set
                {
                    base.MaximumValueCount = value;
                }
            }
        }

  • Multi-byte search values entered in Advanced Search Panel and custom column filters are now working correctly.
     
  • Code generator will refresh the Application baseline to reflect changes in the project settings when your execute project Refresh. If any customization has been applied to the application design then only new pages composed by the code generator to host application data controller will be affected by the changed settings.
     
  • Attributes AccessControl and ControllerAction allow a regular expression to be entered as a Controller property. This allows a shorthand definition of a business rule method that can cover multiple controllers with a certain name pattern.
     
  • Project action Refresh now incorporates any new pages or data controllers inserted or modified directly in *.Baseline.xml files. Custom data controllers must not have nativeSchema or nativeTableName attribute in the definition to be included in the application design.
     
Friday, December 16, 2011PrintSubscribe
Search and Core Library Enhancements

Code On Time has released update 6.0.0.17 that includes several enhancements and bug fixes described below.

  • Search in Quick Find or Automatic Search Bar will clear the selected record and hide any related details link to previously selected master. Applying a filter will also reset the selected record.
     
  • Date and numeric “fuzzy” values are now accepted in automatic search bar and filter filters. For example, users can now enter "Thu" in the search field of DateTime type or enter a date as 12162011 (for 12/16/2011).
     
  • Virtual method HandleException can be implemented to perform global exception processing for all exceptions raised when actions are executed.
     
  • Data access objects and BLOB processing code of the application framework now uses class ControllerUtilities to determine the "standard" views that must be used to execute SELECT / UPDATE / INSERT / DELETE operations.
     
    All operations with the exception of INSERT are using "editForm1". INSERT is using "createForm1". The utility class allows overriding the decision making process, which allows a non-generic view name to be returned for certain data controller when executing specific actions.
     
  • Calls to UpdateFieldValue in the business rule method execute in response to Command Name = "Custom" and Command Argument = "abc.." will refresh updated fields.
    This can be used as an alternative to "Calculated" fields to update values in the record in response to user-initiated action.
     
  • BLOB processing will allow caching if IE 6,7,8 is downloading the binary object over SSL. Otherwise it is impossible to see the downloaded file on the client.
     
  • Time dropdown is displayed for fields with Data Format String of "{0:g} or "{0:G}". The dropdown now correctly handles am/pm values.
     
  • User-defined filter "'Field' Does Not Equal 'Empty'" will now work correctly.
     
  • Prevents an exception raised when an empty area of Project Explorer is clicked and selected node is not available.
     
  • Fixed the bug with processing of "_display" argument that can specified in the URL along with data controller URL parameters.
     
  • Preview and Generate actions executed from within Project Designer will not raise and exception if IIS Express is not installed on the computer. The code generator will try to use the local web development server that comes standard with Visual Studio.
     
  • Code generator validates presence of resources referenced in the "*.*proj" files of generated projects. If the resource (file) does not exist then the reference is excluded.
    The major side effect is the ability to change the theme in the projects other than Web Site Factory without breaking the generated web app. Developers can try all available themes in all types of projects without issues.
     
  • Various cosmetic changes to the code generator UI.

Examples of ControllerUtilities class and sample implementation of HandleException are presented below.

The first class instructs the application framework to use myCreateForm when application data access objects are trying to insert records through MyController data controller.

The second class shows how to display a custom message instead of a generic error reported by SQL Server when DELETE statement fails due to foreign key constraints.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MyCompany.Data
{

    public partial class ControllerUtilities
    {
        public override string GetActionView(string controller, string view, string action)
        {
            if (controller == "MyController" && action == "Insert")
                return "myCreateForm";
            return base.GetActionView(controller, view, action);
        }
    }
}

namespace MyCompany.Data
{

    public partial class Controller
    {
        protected override void HandleException(Exception ex, ActionArgs args, ActionResult result)
        {
            if (ex.Message.Contains("DELETE"))
                result.Errors.Add("Can't delete a record");
            else
                base.HandleException(ex, args, result);
        }
    }
}