Difference between revisions of "New Report Design - 2009"
(→Lesson learn) |
(→Current implementation status: => UPDATEd) |
||
Line 92: | Line 92: | ||
{| border="1" | {| border="1" | ||
|- | |- | ||
− | | '''Task''' | + | | '''Task name''' |
− | | ''' | + | | '''Done''' |
− | | ''' | + | | '''Not yet done''' |
+ | | '''Time estimation''' | ||
|- | |- | ||
− | | | + | | Generation process |
| | | | ||
− | * Generation | + | * Generation path is well defined and tested => '''Stable''' |
− | + | * '''Cross diagram''' is fully implemented (statistic) | |
− | * | + | | |
− | + | * Apply data generation for other Diagrams | |
− | + | * Optimize values calculation | |
− | * Table charts | + | * Save calculation result to XML |
− | + | | | |
− | + | ''TODO'' | |
− | + | |- | |
− | * | + | | Nevron (image) charts |
− | * | + | | |
− | * | + | * Bar/Line/Pie/Radar charts have been implemented for single case of CrossDiagram |
− | + | * All stylesheet and dom operations are split into different files to ease the maintenance, however the files are still messy and need cleanup | |
− | + | * Nevron 2009 is applied and can be deployed side-by-side with Nevron 2007 | |
− | + | | | |
− | * | + | * Full testing (manual) is required after DiagramViewer page have finished |
− | + | | | |
− | * | + | ''TODO'' |
− | * | + | |- |
+ | | Table charts | ||
+ | | | ||
+ | * Table adaptors have been defined and tested => '''Stable''' | ||
+ | * Full support for HTML | ||
+ | * Full support for PDF | ||
+ | * Draft support for Excel and Ppt | ||
+ | * Table layout in PDF is in acceptable mode with 1x1 tables => '''Wait for real sample of 2x2 cases''' | ||
+ | * Stylesheet is fully applied => '''Still in testing mode''' | ||
+ | | | ||
+ | * Full testing for stylesheet | ||
+ | * Full support for Excel and Ppt | ||
+ | | | ||
+ | ''TODO'' | ||
+ | |- | ||
| | | | ||
− | + | Stylesheet | |
− | + | | | |
− | * | + | * The stylesheet is kept as is intentionally in order to keep changing at the minimal level |
− | + | | | |
− | + | * Redefine the hierarchy of stylesheet classes | |
− | + | | | |
− | + | ''TODO'' | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Tabulation Script |
+ | | | ||
+ | * The main script library has been moved to CatGlobe.Report assembly | ||
+ | * The code is hacked (with minimum impact) to allow plugging of new report's script library | ||
+ | * Full support for tabulation script => Lots of unit tests have been written | ||
+ | * Tabulation script editor screen has been changed allowing running with new report code | ||
+ | | | ||
+ | * Move all implementations to new assembly | ||
+ | * On-screen testing | ||
+ | | | ||
+ | ''TODO'' | ||
+ | |- | ||
+ | | Web controls | ||
+ | | | ||
+ | * DiagramViewer control has been created | ||
+ | * DiagramSettings control has been created | ||
+ | * Diagram viewer page has also been created | ||
+ | * Diagram settings and viewer has been applied to monitor and dashboard => still in prototype phase | ||
| | | | ||
− | * | + | * Full testing on Diagram viewer page |
− | * | + | * Replace current diagram viewer page |
− | + | * Implement ReportViewer control and page | |
− | + | | | |
+ | ''TODO'' | ||
+ | |- | ||
+ | | Unit tests | ||
| | | | ||
− | * | + | * Unit testing framework for report is created => '''Stable''' |
− | * | + | * Testers have been trained for writing unit tests => '''Stable''' |
− | * | + | * Unit test coverage has been checked => which part needs unit tests? |
− | * | + | ** Excel and Ppt table chart |
− | * | + | ** Pseudo calculator for displaying calculation formulas |
− | * | + | ** Filter |
+ | ** Significance | ||
+ | | | ||
+ | * Integrate with CruiseControl for running everyday | ||
+ | * Web-testing for testing controls | ||
+ | * Ppt/Excel assertion => ''Use new XML format of Office'' | ||
+ | * 3D image assertion => ''at last resort compare byte to byte, another approach is comparing by calculating hash value'' | ||
+ | * Configuration settings for hard-coded values | ||
+ | | | ||
+ | ''TODO'' | ||
|- | |- | ||
| Optimization | | Optimization | ||
| | | | ||
+ | * Stylesheet rendering is being optimized for using with AJAX | ||
| | | | ||
− | |||
* Code profiling must be done => minor change in design | * Code profiling must be done => minor change in design | ||
* Performance counter must be implemented | * Performance counter must be implemented | ||
* Generation time must less than current system | * Generation time must less than current system | ||
− | | | + | | |
− | + | ''TODO'' | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
Revision as of 03:51, 27 October 2009
Contents
Introduction
The components/modules that are using Report engine are: Dashboard, Monitor, Tabulation Script, Report Viewer, Diagram Viewer. These modules send request of generation to report engine including:
- A data cache which contains all source data
- Stylesheets (including external and inline stylesheet) to apply
- Kind of presentation that the report should be exported as (pdf, excel, ppt, word, html, image)
- Other kinds of settings
The report engine takes the request, make calculation using the Interpreter, and then export the result into desired format.
A report consists of elements like: diagrams, images, text blocks, pages, paragraphs. The most important element is Diagram, which can be discriminated based on:
- Data
- Cross Diagram
- Standard Diagram
- Tracking Diagram
- Campaign Diagram
- Presentation type
- Table chart
- Image chart which include many kinds of chart like: pie, bar, line, funnel, area, radar etc.
Why a new system?
Current system drawbacks
- Heavy XML processing
- Heavy code duplication
- Inconsistent generation process
Thus it makes the cost of fixing bugs and maintain the old system greater than the cost of making an new system.
New system goals
- Remove the drawbacks of current system
- Side by side working with the old system
- Fully unit testing
- Unit/Integration tests can be run automatically
- Testing API must be simple enough for testers to join writing test cases
- Report API must be keep as simplest as possible
- Design documents must be officially registered on wiki page
Approach to new system
Steps are defined for approaching the new system, which are described below:
- Take the smallest possible case for prototyping (CrossDiagram with one axis for both row and column)
- Design the core functions to server the single case with full testing
- Approach in depth to:
- Tabulation Script
- Diagram Viewer
- StyleSheet
- Different presentation types
- Move on with Report and Report Viewer
- Move on with Monitor
- Move on with Dashboard
- Move on with data calculation optimization
- Performance refining => change design and test cases
- Full implementation for:
- Cross Diagram
- Other diagrams
- All presentation types
- Replace the old system's gui components
Design details
- Report unit testing system
- Diagram generation process
- DiagramInfo
- Tabulation Script
- Tabulation Script for setting inline style to Table Chart
- Diagram viewer control
- Cross diagram settings control
- Report viewer control
- Integrating with Dashboard
- Integrating with Monitor
- Generic object visitor pattern
- Generic XML de-/serialization
- DiagramInfo de-/serialization
- Table chart builder
- Integrating Ajax.Pro and MS AJAX.NET Json Serialization
- Full CrossDigramImplementation
Lesson learn
This section lists all the:
- Mistakes
- Useful knowledge
that we have encountered during implementation.
- Code that MUST be improved
- Transferring Array object among different javascript context
- Associated array vs MS.AJAX NET vs for each loop
Current implementation status
Task name | Done | Not yet done | Time estimation |
Generation process |
|
|
TODO |
Nevron (image) charts |
|
|
TODO |
Table charts |
|
|
TODO |
Stylesheet |
|
|
TODO |
Tabulation Script |
|
|
TODO |
Web controls |
|
|
TODO |
Unit tests |
|
|
TODO |
Optimization |
|
|
TODO |
Document revisions
Version No. | Date | Changed By | Description | Svn revision |
0.1 | 27.04.2009 | Nguyen Trung Chinh | Create the first version for working with a single case of CDG | NA |
0.1 | 20.07.2009 | Nguyen Trung Chinh | Refine the document | NA |
0.2 | 30.07.2009 | Nguyen Trung Chinh | Finish version 0.2 | 54885 |