Blog: Posts from August, 2012

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
Posts from August, 2012
Tuesday, August 7, 2012PrintSubscribe
Debugging Custom Input Elements

Implementation of input element enhancements may be very simple or demand a relatively complex code. The client input elements are written in JavaScript and may require debugging.

The first instinct of any developer is to write some code, run the app, and try the code in action. Developing and debugging a custom input element with the entire web application project may become unproductive – you need to sign in, navigate to the correct page, select a view to force the custom input element to be activated. Each step takes valuable time.

We recommend creating a test HTML page and debugging the app without touching the actual application.

Let’s consider creating a test HTML page for the Reorder Level Slider input element shown in this screen shot of a live application.

The custom slider input element attached to 'ReorderLevel' data field in a Code On Time web application

If you have followed the instruction from the tutorial then you have the following folder structure under [Documents]\Code On Time\Client folder.

A standalone html page can be used to debug custom input elements without the need to have them run in the actual application

Create the HTML file ReorderLevelDebugger.htm with the following content in Visual Studio or your favorite text editor.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Edtior Debugger</title>
    <link type="text/css" rel="Stylesheet" href="../../../Library/_Client/Stylesheets/_System/_System.css" />
    <script type="text/javascript" src="../../../Library/Data Aquarium/Scripts/_System.js"></script>
    <!-- 
         Important: 
         link the file(s) that you are debugging after the reference to _System.js 
     -->
    <script type="text/javascript" src="ReorderLevelSlider.js"></script>
    <script type="text/javascript">
        // this code is the emulation of steps executed by the client library
        var reorderLevelEditorFactory = null;
        $(function () {
            // create a slider factory object
            reorderLevelEditorFactory = new MyCompany$ReorderLevelSlider()
            // initialize the debugging buttons
            $('#Attach').click(function () {
                reorderLevelEditorFactory.attach($('#Input1').get(), 'Form');
            });
            $('#Detach').click(function () {
                reorderLevelEditorFactory.detach($('#Input1').get(), 'Form');
            });
        });
    </script>
</head>
<body>
    <div>
        Testing the "Reorder Level" slider:
    </div>
    <div>
        <button id="Attach">
            Attach</button>
        <button id="Detach">
            Detach</button></div>
    <div style="border: solid 1px silver; padding: 8px; margin-top: 8px;">
        <input type="text" id="Input1" value="35" />
    </div>
</body>
</html>

The file declares a script block with the global instance of MyCompany$ReorderLevelSlider object. The startup script also assigns click handlers for Attach and Detach buttons declared in the page body. The script header links the system script and stylesheet included by the code generator in every application.

Save the file and open it in the web browser. This is how the page is rendered in Internet Explorer 9 if you click on the file name in Windows Explorer.

Html debugger displayed in Internet Explorer requires user to enable JavaScript execution

You will need to allow execution of JavaScript in the local webpage. This will not be necessary if you preview the page by selecting View in Browser (Ctrl+Shift+W) in the Visual Studio development environment.

The custom input element HTML debugger page with JavaScript enabled

Click Attach button to see the slider attached to the input field.

The slider is attached to the input element when a user clicks on 'Attach' button

Move the slider to try it out.

The custom input element in action

Click Detach  button to see the slider removed.

The custom input element is removed when a user clicks on 'Detach' button

Buttons Attach and Detach invoke the corresponding methods of the “factory” object to associate custom input enhancement with the input field and to have them removed. This is exactly the same pattern of execution by the client library in the live web application.

Monday, August 6, 2012PrintSubscribe
Feature: Drag and Drop Everywhere

Everything in a Code On Time web application project can be configured with drag and drop and Cut/Copy/Paste with multiple selection. For example, master-detail pages can be quickly configured by dragging and dropping project configuration elements.

Start the Project Designer and create a new page called “Master Detail Page”.

New Page toolbar option in the Project Explorer of web application designer.

Drag the new page to the right side of the Home page and drop to have it moved.

Dropping Master Detail Page on the right side of Home page.      Master Detail Page placed after Home page in the Project Explorer.

While holding down Ctrl key, select Customers, Orders, OrderDetails data controllers and copy them to the clipboard.

Copy context menu option for three selected controllers in the Project Explorer.

Paste the controllers to the Master Detail Page.

Paste context menu option for a page node in the Project Explorer.      Master Detail Page with three new data views in individual containers after pasting.

Drag CustomerID data field node onto view1. The data view view2 will be configured to filter orders by the customer selected in view1 data view.

Dropping CustomerID data field from view2 to view1.      Data view 'view2' is now configured with a master-detail relationship with 'view1'. Records will be filtered according to the selected record in 'view1'.

Drag OrderID data field node onto view2. Data view view3 will be configured to filter order details by the order selected in view2 data view.

Dropping OrderID data field node onto view2.      View3 has been configured to filter order details by the selected order.

View the page in the browser.

View in Browser context menu option in the Project Explorer.

Select a customer, and a list of related orders will appear underneath. Select an order, and related order details will be displayed.

Master Detail Page configured with a three-level master-detail relationship.

Learn more about advanced configuration of master-detail pages.

Monday, August 6, 2012PrintSubscribe
Using Drag and Drop to Configure a Master-Detail Relationship

Master-detail pages can be quickly created in Code On Time web applications using drag and drop operations in the Project Designer.

Creating a Page

Start the Project Designer. In the Project Explorer toolbar, press New Page.

New Page toolbar option in the Project Explorer of web application designer.

Assign the following properties, and press OK to save the page.

Property Value
Name Master Detail Page

The page will appear at the bottom of the page hierarchy in the Project Explorer. Drop it on the right side of Home node to place it in the second position in the navigation menu.

Dropping Master Detail Page on the right side of Home page.     Master Detail Page placed after Home page in the Project Explorer.

Adding Data Views

Switch to the Controllers tab. While holding down Ctrl key, click on the controllers in this order: Customers, Orders, OrderDetails. Right-click on OrderDetails node and select Copy.

Copy context menu option for three selected controllers in the Project Explorer.

Switch back to the Pages tab. Right-click on Master Detail Page and press Paste. The three copied controllers will be pasted as data views each in their own container.

Paste context menu option for a page node in the Project Explorer.     Master Detail Page with three new data views in individual containers after pasting.

Configuring Master-Detail Relationships

The data views have been added to the page, but there are no relationships between them yet.

Expand to Master Detail Page / c102 / view2 / grid1 / CustomerID data field node. Drag CustomerID and drop on view1 node. The data view view2 will be configured to filter orders by the customer selected in view1 data view.

Dropping CustomerID data field from view2 to view1.     Data view 'view2' is now configured with a master-detail relationship with 'view1'. Records will be filtered according to the selected record in 'view1'.

Expand to Master Detail Page / c103 / view3 / grid1 / OrderID data field node. Drag OrderID and drop on view2 node. Data view view3 will be configured to filter order details by the order selected in view2 data view.

Dropping OrderID data field node on 'view2'.     Data view 'view3' is now configured with a master-detail relationship with 'view2'. Records will be filtered according to the selected record in 'view2'.

Testing the Three-level Master-Detail Page

In the Project Explorer, right-click on Master Detail Page node and press View in Browser.

View in Browser context menu option for a page node in the Project Explorer.

The web application will be generated and the page will open in your default browser. Select a customer, and a list of related orders will appear underneath. Select an order, and related order details will be displayed.

Master Detail Page configured with a three-level master-detail relationship.

Further Customization

The standard form views have their fields rendered top down. The screenshot shows form views of related customer and order.

The standard form views have their fields rendered top down.

Let’s customize the presentation of both form views.

Switch back to the Project Designer. In the Project Explorer, double-click on Master Detail Page / c101 / editForm1 / c1 category node.

Category c1 in editForm1 of Customers controller.

Change the Floating property to “Yes”, and press OK to save the category.

Property New Value
Floating Yes

In the Project Explorer, right-click on Master Detail Page / c102 / view2 / editForm1 / c1 node and press New Category.

New Category context menu option for the view 'editForm1'.

Assign the following properties.

Property New Value
Header Text Shipping Info
New Column Yes

Drag all the Ship- data fields from c1 – Orders category and drop them on c2 – Shipping Info category.

Dropping all shipping data fields on 'c2' category.     All shipping data fields have been moved into 'c2' category.

Right-click on Master Detail Page node, and press View in Browser.

View in Browser context menu option for Master Detail Page in the Project Explorer.

When the page loads, select a customer from the list. The form view will be more compact as the fields are floating. Click on an order – the data fields will be split in two columns.

Master Detail Page with customized categories for Customers and Orders. Master Detail Page with customized categories for Customers and Orders.

If you select an order detail record, it will show up in a modal window. This behavior has been configured automatically when the master-detail relationship was established between view3 (Order Details) and view2 (Orders) data views.

If you select an order detail record, it will show up in a modal window.

Continue to Overview of Styles