Difference between revisions of "New Report Design - 2009"

From Catglobe Wiki
Jump to: navigation, search
(Why a new system?)
(Finish 0.2)
Line 21: Line 21:
 
** Table chart  
 
** Table chart  
 
** Image chart which include many kinds of chart like: pie, bar, line, funnel, area, radar etc.
 
** Image chart which include many kinds of chart like: pie, bar, line, funnel, area, radar etc.
 
== Concepts ==
 
* [[Diagram]]
 
* [[StyleSheet]]
 
* [[Tabulation Script]]
 
* [[Data cache]]
 
* [[Diagram viewer]]
 
* [[Report viewer]]
 
* [[Dashboard]]
 
* [[Monitor]]
 
  
 
== Why a new system? ==
 
== Why a new system? ==
Line 48: Line 38:
 
* Testing API must be simple enough for testers to join writing test cases
 
* Testing API must be simple enough for testers to join writing test cases
 
* Report API must be keep as simplest as possible
 
* 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 ==
 
== Design details ==
Line 60: Line 72:
  
 
== Current implementation status ==
 
== Current implementation status ==
* Report unit testing system: rather complete and testers have joined writing a lot of test cases
+
{| border="1"
 
+
|-
* CrossDiagram
+
| '''Task'''
:* Support for one column/row axis
+
| '''Current status'''
:* Cell types
+
| '''Planned actions'''
 
+
|-
* Presentation type
+
| Implementation
:* Support Nevron image chart
+
|
 
+
* Generation process
 +
** Data generation is well defined and tested
 +
* 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
 +
* Table charts
 +
** Table adaptors have been defined and tested
 +
** Prototype for splitting huge table into sub-tables has been done
 +
** Full support for HTML
 +
** Acceptable support for PDF
 +
* Stylesheet
 +
** The stylesheet is kept as is intentionally to isolate to keep changing as the minimal level
 +
* 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
 +
** Diagram can be created using script
 +
* Web controls
 +
** DiagramViewer control has been created
 +
** DiagramSettings control has been created also, however this need more time to implement custom business and testing
 +
|
 +
* Generation process
 +
** Apply data generation for the full CrossDiagram  
 +
** Apply data generation for other Diagrams
 +
** Optimize values calculation
 +
** Save calculation result to XML
 +
* Image charts
 +
** Full testing (manual) is required after DiagramViewer page have finished
 +
* Table charts
 +
** Apply external stylesheet
 +
** Apply the table splitting code
 +
** Support for PPT/Exel
 +
* Stylesheet
 +
** Redefine the hierarchy of stylesheet classes
 
* Tabulation Script
 
* Tabulation Script
:* Support for ''createCrossDiagram''
+
** Move all implementations to new assembly
:* Support for setting inline stylesheet
+
* Web controls
 
+
** Implement ReportViewer control and page
* Diagram viewer control
+
** Apply DiagramViewer to Dashboard and Monitor
 
+
** Apply ReportViewer to TabulationScript result viewer page
== Next action ==
+
|-
* Report viewer control
+
| Intergration
* Integrating with Dashboard
+
|
* Integrating with Monitor
+
* Code has been committed
 
+
* Side-by-side Nevron's assemblies deployment is fine
 +
* However, the project files (to actually build the new code into trunk) are not yet committed
 +
* DiagramViewer page has been created
 +
|
 +
* Commit everything after version 5.8 has been released
 +
* Finish DiagramViewer page => replace the current page
 +
* Start the ReportViewer page
 +
* Start integrating to Monitor
 +
* Start integrating to Dashboard
 +
* Start integrating to Tabulation Script
 +
|-
 +
| Optimization
 +
|
 +
|
 +
* Unit/Integration tests code coverage must be checked => acceptable ratio is 85%
 +
* Code profiling must be done => minor change in design
 +
* Performance counter must be implemented
 +
* Generation time must less than current system
 +
|-
 +
| Testing
 +
|
 +
* Test data generation API is completed
 +
* Testers have created most of the current test cases
 +
|
 +
* Configuration settings for hard-coded values
 +
* Check code coverage => define more test cases
 +
* Ppt/Excel assertion
 +
* Integrate CatGlobe.Report.Test project back to DomainTester project
 +
* Testing of controls and javascript code
 +
|}
  
 
== Document revisions ==
 
== Document revisions ==
Line 88: Line 161:
 
| '''Changed By'''  
 
| '''Changed By'''  
 
| '''Description'''
 
| '''Description'''
 +
| '''Svn revision'''
 
|-
 
|-
 
| 0.1  
 
| 0.1  
Line 93: Line 167:
 
| Nguyen Trung Chinh  
 
| Nguyen Trung Chinh  
 
| Create the first version for working with a single case of CDG
 
| Create the first version for working with a single case of CDG
 +
| NA
 
|-
 
|-
 
| 0.1  
 
| 0.1  
Line 98: Line 173:
 
| Nguyen Trung Chinh  
 
| Nguyen Trung Chinh  
 
| Refine the document
 
| Refine the document
 +
| NA
 +
|-
 +
| 0.2
 +
| 30.07.2009
 +
| Nguyen Trung Chinh
 +
| Finish version 0.2
 +
| 54885
 
|}
 
|}

Revision as of 08:19, 30 July 2009

Introduction

ReportEngine.jpg

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

Current implementation status

Task Current status Planned actions
Implementation
  • Generation process
    • Data generation is well defined and tested
  • 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
  • Table charts
    • Table adaptors have been defined and tested
    • Prototype for splitting huge table into sub-tables has been done
    • Full support for HTML
    • Acceptable support for PDF
  • Stylesheet
    • The stylesheet is kept as is intentionally to isolate to keep changing as the minimal level
  • 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
    • Diagram can be created using script
  • Web controls
    • DiagramViewer control has been created
    • DiagramSettings control has been created also, however this need more time to implement custom business and testing
  • Generation process
    • Apply data generation for the full CrossDiagram
    • Apply data generation for other Diagrams
    • Optimize values calculation
    • Save calculation result to XML
  • Image charts
    • Full testing (manual) is required after DiagramViewer page have finished
  • Table charts
    • Apply external stylesheet
    • Apply the table splitting code
    • Support for PPT/Exel
  • Stylesheet
    • Redefine the hierarchy of stylesheet classes
  • Tabulation Script
    • Move all implementations to new assembly
  • Web controls
    • Implement ReportViewer control and page
    • Apply DiagramViewer to Dashboard and Monitor
    • Apply ReportViewer to TabulationScript result viewer page
Intergration
  • Code has been committed
  • Side-by-side Nevron's assemblies deployment is fine
  • However, the project files (to actually build the new code into trunk) are not yet committed
  • DiagramViewer page has been created
  • Commit everything after version 5.8 has been released
  • Finish DiagramViewer page => replace the current page
  • Start the ReportViewer page
  • Start integrating to Monitor
  • Start integrating to Dashboard
  • Start integrating to Tabulation Script
Optimization
  • Unit/Integration tests code coverage must be checked => acceptable ratio is 85%
  • Code profiling must be done => minor change in design
  • Performance counter must be implemented
  • Generation time must less than current system
Testing
  • Test data generation API is completed
  • Testers have created most of the current test cases
  • Configuration settings for hard-coded values
  • Check code coverage => define more test cases
  • Ppt/Excel assertion
  • Integrate CatGlobe.Report.Test project back to DomainTester project
  • Testing of controls and javascript code

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