Reports

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
Reports
Wednesday, February 9, 2011PrintSubscribe
Secure RSS, Spreadsheet, and CSV Data Feeds

The follow-up release of Code On Time introduces significant security enhancements to user identity validation performed when RSS , CSV, and live Microsoft Excel data feeds are generated.

The feeds are retrieved by external applications such as browsers, RSS readers, and Excel via a URL generated by application. User identity is not embedded into the data feed URLs.

These are the examples of the data feeds:

Click on any of the links and you will be prompted to enter a name and password if your application is using ASP.NET Membership authentication. The application framework will detect access to data export resources and will request user name and password through Basic Authentication.

Enter the user name and password and the credentials will be authenticated against the ASP.NET Membership database. The URLs above will allow access to data if you enter admin / admin123% or user / user123% when prompted for username/password. These user accounts are registered on our demo server.

If you sign into the application at http://dev.codeontime.com/demo/websitefactory6 using one of the accounts listed above then try the following.

Live RSS Feed

Select the list of customers and choose Action | View RSS Feed option on the action bar.

image

The RSS feed will be presented.

image

Do not close the feed and return to the browser window with the application, click Logout link on the membership bar. You will be logged out and a fly-over login dialog will be displayed.

image

Return to the RSS feed and click Refresh button. You will be prompted to login via Basic Authentication.

image

Live Excel Spreadsheet

Select Export to Spreadsheet option from the action bar of the customer list.

image

The prompt to download an IQY file will be displayed. The file extension stands for “Internet Query” and is recognized by Microsoft Excel. Click Open button.

image

Microsoft Excel will start and will present an additional warning about security risks linked to the content that comes from Internet. We do know the source of data that we are downloading. The data itself is a simple XML data feed. Click Enable button.

image

Code On Time application will request the user identity. Enter one of the accounts that we have used above.

image

If the user name and password are matched to an ASP.NET Membership record then the data will be downloaded.

image

Use Excel to create dynamic and impactful business charts and refresh charts on-demand to see changes in the live data to reflect in your chart. You can email the spreadsheet to users in your organization. Users with valid application accounts will be able to refresh the data as well.

image

Conclusion

Business users can take full advantage of amazing data reporting and analytical capabilities available in Code On Time applications. Secure data feeds ensure safe shared environment.

Developers can create sophisticated virtual views that will utilize the user identity to filter the data accessible to the user.

Tuesday, February 8, 2011PrintSubscribe
Reporting Enhancements, Search By Hidden Fields, etc.

Numerous enhancements to Code On Time web application generator were released with this update.

Reporting

Hidden fields are now available in the search bar. Previously the hidden fields were searchable through “quick find” only.

Dynamic report template has received multiple improvements in ASP.NET 4.0 version of the generated applications.

New option “Word Document” is now available in Report menu on action bar of views. The option will produce a Microsoft Word version of the report. All reports are being rendered by Microsoft Report Viewer component. There is a long standing bug confirmed by Microsoft - the page footer from the first page of the Word document duplicates to the other pages of the report. This makes the new reporting option less exciting.

User defined filters are now displayed on reports. This is a unique feature available only with Code On Time applications.

Aggregate functions defined on data fields of a view are now reproduced on dynamic reports as well.

New view property Report Label allows specifying a title that must print on dynamic reports. Previously the label property of a view was used for the same purpose.

“Report” action command now supports extended arguments. For example, command argument “mytemplate.xslt,grid2” will print a dynamic report with the data supplied by grid2. Command argument “CusotmerList.rdlc",customerGridView” will print a static report based on a custom RDLC template using cusotmerGridView view as a source of data.

Business Rules

Read-only fields are now being transferred along with the writable fields from the client to the server, which allows accessing this data in business rules. Previous implementation was ignoring read-only fields including fields that were not accessible to the user due to role restrictions. This is a big change.

The values are passed as instances of FieldValue class. This class provides new ReadOnly property. If the value of the property is set to True then the field is ignored by the application framework when INSERT, UPDATE, and DELETE statements are being constructed.

The Controller class has been refactored. The entire functionality of the data controller implementation has been moved to DataControllerBase class. The Controller class has been declared as a partial class based on DataControllerBase. This allows creating custom partial implementation of Controller class that may override virtual methods of the base such as CreateConnection. This may be useful if you wish to supply an alternative method to produce a connection string for your application at runtime.

Client Library

Client library now features new shortcut that can be used to locate user interface elements rendered by client library.

The prototype of the function is presented below.

function $dvget(controller, view, fieldName, containerOnly)

The last parameter can be used to find a DOM element that includes the header, value, and error elements of the corresponding data field if the value of the parameter is set to true. Otherwise the function will return the actual physical DOM element that holds the value of the data field.

Framework

New and long awaited field property ItemsDataView now complements ItemsDataController and allows specifying a lookup view other than grid1 in the lookup fields.

New view property Group allows sharing of user-defined filters. For example, declare two views grid1 and grid2 in a data controller. Run the application and apply filters to grid1. Select grid2 in the view selector and observe that filters are absolutely independent. Set property Group on both views to X and observe that filters assigned in one view will be “transferred” to the second view.

New view property Show In Selector allows declaring views that are not selectable in view selector (the box on the right hand side of the action bar). Simply uncheck the check box to hide the view from the selector.

New data view property Show Quick Find allows hiding the “quick find” box from the grid views of a data controller on a page.

New data view property Show Search Bar allows hiding the search bar controls from the grid views of a data controller on a page.

Code Generator

The code generator has been enhanced to display the page with release notes when updates are being installed.

The code generator will hint if Microsoft SQL Express is not available on the computer when ASP.NET Membership option is enabled in the project.

The code generator will detect the physical location of Visual Studio / Visual Web Developer if the IDE is installed into a custom location.

Future Enhancements

We are getting ready to release support for My SQL and Sybase as data sources of Code On Time projects.

Enhanced image/file processing with automatic support for content type, content length, file name, and custom location for uploaded content is coming soon.

New “basket” lookup style is being worked on as well. This will be a combination of “check box list” and “lookup” functionality.

The date time picker will be introduced to allow selecting time component of dates in AJAX fashion.

Tree view will offer a great mechanism of working with hierarchies.

Azure Factory project will allow deployment of the generated apps to the cloud.

Monday, January 24, 2011PrintSubscribe
Chart View

Code On Time applications now offer a new type of data rendering – “Chart” view. Chart view is just another way of presenting a set of data records retrieved from the database. Chart view supports many end-user features including sorting and adaptive filtering.

image

Creating a Chart View

Generate a new web application from the Northwind database.  Browse the generated web site and select Reports | Sales by Category menu option. The following data view will be displayed. Columns CategoryID, Category Name, Product Name, and Product Sales are visible in the grid view.

image

The data controller is based on the database view dbo.[Sales by Category]. This view is a part of the Northwind database and is defined as follows.

create view [dbo].[Sales by Category] AS
SELECT Categories.CategoryID, Categories.CategoryName, Products.ProductName, 
    Sum("Order Details Extended".ExtendedPrice) AS ProductSales
FROM     Categories INNER JOIN 
        (Products INNER JOIN 
            (Orders INNER JOIN "Order Details Extended" ON 
               Orders.OrderID = "Order Details Extended".OrderID) 
        ON Products.ProductID = "Order Details Extended".ProductID) 
    ON Categories.CategoryID = Products.CategoryID
WHERE Orders.OrderDate BETWEEN '19970101' And '19971231'
GROUP BY Categories.CategoryID, Categories.CategoryName, Products.ProductName

Start the code generator, select the project name, and click Design button.

Select the data controller SalesbyCategory and click on Views tab.

Add a new view, set its Id to chart1, select Chart as view type, and select command1 as command.

Set label to Sales Chart.

Enter “Total sales by product category.”  in the header text.

Save the view and click on its name in the list of available data controller views, select Data Fields tab.

Add new data field with the field name set to CategoryName. Set its Chart property under Miscellaneous section to X. Save the field.

Add another data field with the field name set to ProductSales. Enter letter “c” without double quotes into Data Format String. Set the Aggregate Function property of the data field to Sum. Set its Chart property to Bar (Cylinder).

The list of data views in Designer will look as follows.

image

Exit the Designer and generate your application. Activate the same page and select Sales Chart option in the view selector in the right hand corner of the action bar. The following chart will be displayed.

image

Activate the filter in the view selector and select “Filter…”  item in the popup menu of the Category Name option.

image

Select several filter options to review subset of data presented in the chart.

image

Displaying Multiple Values

The chart view is capable of displaying multiple data series. Let’s add a calculated field to the same data controller to simulate the “Previous Product Sales”.

Select the data controller in Designer and activate Fields tab.

Add a new field with name PreviousProductSales, indicate that the field value is calculated by SQL formula and enter the following SQL formula

cast(ProductSales * Rand() as Numeric(10,2))

into SQL Formula text box.

Set the label of the field to “Previous Product Sales”.  Set its Data Format String to “c” without quotes.

Save the field and select Views tab. Select chart1 in the list of available views.

Bind the new field to the chart1 view and set its properties to make them look as shown in the screenshot. Notice that we are using a different Chart type Column(Cylinder) for ProductSales.

image

Run the generated application. The following chart view will be presented if you activate Sales Chart in the view selector. The actual spline that you will see may look different due to randomization factor of the formula that we have specified to simulate the previous sales.

image

Legend

You can activate a legend if you select the chart view in Designer and mark the check box “Enable legend in the chart area”. The data field header will be used as the text displayed in the chart legend.

image

Custom charts

Chart views are based on the standard Microsoft Data Visualization component included with ASP.NET 4.0. Unlimited customization options are available to developers. You can quickly customize a chart view if you select “Custom” as Chart property of the data field.

All charts are generated as ASP.NET user controls stored in ~/Controls folder of your web application. For example, the name of the chart in this sample is ~/Controls/Chart_SalesbyCategory_chart1.ascx. The name of a chart user control always starts with Chart and includes the name of the data controller and the chart view ID.

“Custom” charts are generated once only. If a “Custom” chart exists then the code generator will not make an attempt to generate the chart again. You can safely modified hundreds of the chart control properties.

What’s Next

The upcoming updates of the code generation library will include support for Filter Groups on the view level to allow transitioning of grid view data filters applied to a selected chart view and vice versa. Additional chart types will also be supported. We are also working on bring interactive features of the chart such as tool tips and hyperlinks into the code generation library.

Continue to Charting Preview