Difference between revisions of "New Report Design - 2009"

From Catglobe Wiki
Jump to: navigation, search
m (Lesson learn)
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
<accesscontrol>Main:MyGroup</accesscontrol>
 +
[[Category:Miscellaneous]]
 
== Introduction ==
 
== Introduction ==
 
[[Image:ReportEngine.jpg]]
 
[[Image:ReportEngine.jpg]]
Line 78: Line 80:
 
* [[Integrating Ajax.Pro and MS AJAX.NET Json Serialization]]
 
* [[Integrating Ajax.Pro and MS AJAX.NET Json Serialization]]
 
* [[Full CrossDigramImplementation]]
 
* [[Full CrossDigramImplementation]]
 +
* [[TrackingDiagram]]
 +
* [[Support for IFKA cross diagram layout]]
 +
* [[XmlVisitor]]
 +
* [[Pdf table layout]]
 +
* [[Make pdf generation process in parallel mode]]
  
 
== Presentations ==
 
== Presentations ==
* [[http://wiki.catglobe.com/images/5/51/NewReportSystem.ppt NewReportSystem.ppt]]
+
* [http://wiki.catglobe.com/images/5/51/NewReportSystem.ppt NewReportSystem.ppt]
* [[http://wiki.catglobe.com/images/8/87/NewReportSystem_-_Unit_Test.ppt NewReportSystem - Unit Test.ppt]]
+
* [http://wiki.catglobe.com/images/8/87/NewReportSystem_-_Unit_Test.ppt NewReportSystem - Unit Test.ppt]
* [[http://wiki.catglobe.com/images/e/ef/NewReportSystem_-_Table_chart_builder.ppt NewReportSystem - Table chart builder.ppt]]
+
* [http://wiki.catglobe.com/images/e/ef/NewReportSystem_-_Table_chart_builder.ppt NewReportSystem - Table chart builder.ppt]
* [[http://wiki.catglobe.com/images/5/5d/NewReportSystem_-_Diagram_generation.ppt NewReportSystem - Diagram generation.ppt]]
+
* [http://wiki.catglobe.com/images/5/5d/NewReportSystem_-_Diagram_generation.ppt NewReportSystem - Diagram generation.ppt]
  
 
== Test cases ==
 
== Test cases ==
Line 95: Line 102:
  
 
* [[Code that MUST be improved]]
 
* [[Code that MUST be improved]]
* [[http://wiki.catglobe.com/images/9/90/Transferring_Array_object_among_different_javascript_context.ppt Transferring Array object among different javascript context]]
+
* [http://wiki.catglobe.com/images/9/90/Transferring_Array_object_among_different_javascript_context.ppt Transferring Array object among different javascript context]
* [[http://wiki.catglobe.com/images/b/bf/Associated_array_vs_MS.AJAX_NET_vs_for_each_loop.ppt Associated array vs MS.AJAX NET vs for each loop]]
+
* [http://wiki.catglobe.com/images/b/bf/Associated_array_vs_MS.AJAX_NET_vs_for_each_loop.ppt Associated array vs MS.AJAX NET vs for each loop]
  
 
== Current implementation status ==
 
== Current implementation status ==
 
{| border="1"
 
{| border="1"
 
|-
 
|-
| '''Task name'''  
+
| '''Modules'''  
 
| '''Done'''  
 
| '''Done'''  
| '''Not yet done'''  
+
| '''To be done'''  
 
| '''Time estimation'''
 
| '''Time estimation'''
 
|-
 
|-
| Generation process
+
| CrossDiagram
 
|  
 
|  
* Generation path is well defined and tested => '''Stable'''
+
* Rather stable with lot of unit tests
* '''Cross diagram''' is fully implemented (statistic)
 
 
|
 
|
* Apply data generation for other Diagrams
+
* Missing feature (VN2950REP - CrossDiagram - Support missing features in 5.8):
* Optimize values calculation
+
** Weight
* Save calculation result to XML
+
** Left header
 +
** Show error
 
|
 
|
 
''TODO''
 
''TODO''
Line 119: Line 126:
 
| Nevron (image) charts
 
| Nevron (image) charts
 
|
 
|
* Bar/Line/Pie/Radar charts have been implemented for single case of CrossDiagram
+
* Bar/Line/Pie/Radar charts have been implemented for single case of CrossDiagram => However the design is not good enough !
* 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
+
* A new design and implement will be done (VN2894REP - Reimplement NevronBuilder)
 
|
 
|
 
''TODO''
 
''TODO''
Line 129: Line 134:
 
| Table charts
 
| Table charts
 
|
 
|
* Table adaptors have been defined and tested => '''Stable'''
+
* Rather complete
* 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
+
* Support exporting to PDF with nice layout (VN2808REP - Make PDF output look nice without fiddling with stylesheet)
* Full support for Excel and Ppt
+
* More request from the customer (VN2813REP - Conditional Formatting)
 
|
 
|
 
''TODO''
 
''TODO''
Line 152: Line 152:
 
| Tabulation Script
 
| Tabulation Script
 
|
 
|
* The main script library has been moved to CatGlobe.Report assembly
+
* Rather complete
* 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
+
* Add missing features (VN2951REP - TabulationScript - Support all PDF related scripts)
* On-screen testing
 
 
|
 
|
 
''TODO''
 
''TODO''
Line 164: Line 160:
 
| Web controls
 
| Web controls
 
|
 
|
* DiagramViewer control has been created
+
* GUI for crossdiagram is nice enough
* 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
+
* More advance implementation with real Skin support (VN2895REP - Support skin for Setting control)
* Replace current diagram viewer page
+
* Increase the ratio of unit testing on GUI
* Implement ReportViewer control and page
 
 
|
 
|
 
''TODO''
 
''TODO''
Line 177: Line 169:
 
| Unit tests
 
| Unit tests
 
|  
 
|  
* Unit testing framework for report is created => '''Stable'''
+
* Rather complete for crossdiagram
* Testers have been trained for writing unit tests => '''Stable'''
+
* 3D image assertion => ''at last resort compare byte to byte, another approach is comparing by calculating hash value''
* 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
 
* Integrate with CruiseControl for running everyday
 
* Web-testing for testing controls
 
* Web-testing for testing controls
* Ppt/Excel assertion => ''Use new XML format of Office''
+
* Ppt/Excel assertion => ''Use new XML format of Office'' (VN2779REP - Upgrade Slide component)
* 3D image assertion => ''at last resort compare byte to byte, another approach is comparing by calculating hash value''
 
 
* Configuration settings for hard-coded values
 
* Configuration settings for hard-coded values
 
|
 
|
Line 236: Line 222:
 
| Update implementation status
 
| Update implementation status
 
| 57470
 
| 57470
 +
|-
 +
| 0.4
 +
| 31.12.2009
 +
| Nguyen Trung Chinh
 +
| Update status and new projects
 +
| 59167
 
|}
 
|}

Latest revision as of 03:10, 18 October 2013

<accesscontrol>Main:MyGroup</accesscontrol>

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

Presentations

Test cases

Lesson learn

This section lists all the:

  • Mistakes
  • Useful knowledge

that we have encountered during implementation.

Current implementation status

Modules Done To be done Time estimation
CrossDiagram
  • Rather stable with lot of unit tests
  • Missing feature (VN2950REP - CrossDiagram - Support missing features in 5.8):
    • Weight
    • Left header
    • Show error

TODO

Nevron (image) charts
  • Bar/Line/Pie/Radar charts have been implemented for single case of CrossDiagram => However the design is not good enough !
  • A new design and implement will be done (VN2894REP - Reimplement NevronBuilder)

TODO

Table charts
  • Rather complete
  • Support exporting to PDF with nice layout (VN2808REP - Make PDF output look nice without fiddling with stylesheet)
  • More request from the customer (VN2813REP - Conditional Formatting)

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
  • Rather complete
  • Add missing features (VN2951REP - TabulationScript - Support all PDF related scripts)

TODO

Web controls
  • GUI for crossdiagram is nice enough
  • More advance implementation with real Skin support (VN2895REP - Support skin for Setting control)
  • Increase the ratio of unit testing on GUI

TODO

Unit tests
  • Rather complete for crossdiagram
  • 3D image assertion => at last resort compare byte to byte, another approach is comparing by calculating hash value
  • Integrate with CruiseControl for running everyday
  • Web-testing for testing controls
  • Ppt/Excel assertion => Use new XML format of Office (VN2779REP - Upgrade Slide component)
  • Configuration settings for hard-coded values

TODO

Optimization
  • Stylesheet rendering is being optimized for using with AJAX
  • Code profiling must be done => minor change in design
  • Performance counter must be implemented
  • Generation time must less than current system

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
0.3 27.10.2009 Nguyen Trung Chinh Update implementation status 57470
0.4 31.12.2009 Nguyen Trung Chinh Update status and new projects 59167