Difference between revisions of "VN3056REP - Same business logic as View Report for View Cross function from Questionnaire list"

From Catglobe Wiki
Jump to: navigation, search
(Introduction)
(Design decisions)
Line 12: Line 12:
 
== Design decisions ==
 
== Design decisions ==
  
* In order to let the cross diagram flexible enough for such changes in the future, we introduce the concept of cross diagram table layout. Future requirements should focus only on defining the layout. To make it simple, the layout is hard coded and each layout implementation must inherit from ''CatGlobe.Framework.Report.Diagrams.Builder.TableChartBuilder''
+
When "View Cross" function of Questionnaire list is clicked:
* Custom statistic can be added using cgscript
+
* If this is the first time that this function is used for selected questionnaire, create a data cache and redirect to cross viewer page.
 +
* If not, use the same business logic as "View Report" function, show the below dialog
 +
 
 +
[[Image:ViewCrossDialog.PNG]]
 +
 
 +
* If option 1 is selected, data cache will be re-setup, rebuild, and then show the cross viewer page.
 +
* If option 2 is selected, just show the cross viewer page with the old data cache.
  
 
== New CGScript functions  ==
 
== New CGScript functions  ==

Revision as of 11:04, 23 March 2010

Introduction

ViewCrossFunction.PNG

The current process of "View cross" function in Questionnaire list:

  • Create / Rebuild the default data cache of selected questionnaire.
  • Check if the data cache has any axises, if yes redirect to a "nearly" cross viewer page, if no, just render an error message.

Disadvantage:

  • The data cache is always rebuilt if there is a change in data of questionnaire.
  • If the questionnaire template of questionnaire is changed, it is too difficult to re-setup the data cache.

Design decisions

When "View Cross" function of Questionnaire list is clicked:

  • If this is the first time that this function is used for selected questionnaire, create a data cache and redirect to cross viewer page.
  • If not, use the same business logic as "View Report" function, show the below dialog

ViewCrossDialog.PNG

  • If option 1 is selected, data cache will be re-setup, rebuild, and then show the cross viewer page.
  • If option 2 is selected, just show the cross viewer page with the old data cache.

New CGScript functions

New CGScript are introduced in to Report library (the one in CatGlobe.Report project - CatGlobe.Framework.Report.Script.CGScript_System_Report).

  • Tabulation_setTableLayout(TableChartLayoutType)

The only argument is a value of enumeration CatGlobe.Framework.Report.Elements.TableChartLayoutType. The result should be store in TabulationConfig object. But due to some constraint transferring data between old and new code, only store the value as string.

  • countAnswer()

The normal count() function is for counting the number of respondents to a question and this function is for counting the number of question that were answered. For example, we have a multi-question "What do you prefer?" which have 3 answer options A, B, C. And we have 2 respondents R1 and R2, R1's answer is A, B while R2's answer is 1, 3. Then:

  • count() => returns 2 (there are 2 respondents to the question)
  • countAnswer() => returns 4 (R1 chose 2 options and R2 chose 2 options)

NOTE: for Data team, please note that there is 2 CGScript_System_Report.cs files, one in the CatGlobe project and the other is in CatGlobe.Report project. If you have to modify this file, please modify the one in CatGlobe.Report project because the new report engine is working with this file only.

Design detail

TableChartBuilder.png

There are currently 3 types of layout that are encoded inside enum TableChartLayoutType. There is also a factory method for getting the right builder base on its layout type.

TableChartBuilder provide all necessary methods for building a table. There are a couple of abstract methods that must be implemented in the concrete implementation. The next important one is the ClassicTableChartLayoutType which build the class layout of cross diagram as image below.

CrossDiagram-Classic.png

The 2 child classes of ClassicTableChartLayoutType provide 2 different layout (left title and ifka) as below images

  • Left title

CrossDiagram-LeftTitleClassic.png

  • IFKA

CrossDiagram-Ifka.png

There is another request that require a lot more effort which is Synchronize tables' size.

Document revisions

Version No. Date Changed By Description Svn revision
0.1 05.02.2010 Nguyễn Trung Chính Add description for cgscript NA
0.2 11.02.2010 Nguyễn Trung Chính Finish 60300