@sapui5/sap.zen.crosstab 1.84.33 → 1.84.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/package.json +1 -1
  2. package/src/{main/uilib/sap → sap}/zen/crosstab/.library +14 -13
  3. package/src/sap/zen/crosstab/BaseArea.js +933 -0
  4. package/src/sap/zen/crosstab/CellStyleHandler.js +109 -0
  5. package/src/sap/zen/crosstab/ColResizer.js +261 -0
  6. package/src/sap/zen/crosstab/ColumnHeaderArea.js +61 -0
  7. package/src/sap/zen/crosstab/Crosstab.js +1351 -0
  8. package/src/sap/zen/crosstab/CrosstabCellApi.js +141 -0
  9. package/src/sap/zen/crosstab/CrosstabContextMenu.js +96 -0
  10. package/src/sap/zen/crosstab/CrosstabHeaderInfo.js +699 -0
  11. package/src/sap/zen/crosstab/CrosstabRenderer.js +258 -0
  12. package/src/sap/zen/crosstab/CrosstabTestProxy.js +64 -0
  13. package/src/sap/zen/crosstab/DataArea.js +76 -0
  14. package/src/sap/zen/crosstab/DataCell.js +187 -0
  15. package/src/sap/zen/crosstab/DataCellRenderer.js +70 -0
  16. package/src/sap/zen/crosstab/DimensionHeaderArea.js +34 -0
  17. package/src/sap/zen/crosstab/EventHandler.js +664 -0
  18. package/src/sap/zen/crosstab/HeaderCell.js +357 -0
  19. package/src/sap/zen/crosstab/HeaderCellRenderer.js +333 -0
  20. package/src/sap/zen/crosstab/HeaderResizer.js +142 -0
  21. package/src/sap/zen/crosstab/IDataCell.js +34 -0
  22. package/src/sap/zen/crosstab/IHeaderCell.js +30 -0
  23. package/src/sap/zen/crosstab/PropertyBag.js +220 -0
  24. package/src/sap/zen/crosstab/RowHeaderArea.js +78 -0
  25. package/src/sap/zen/crosstab/SelectionHandler.js +892 -0
  26. package/src/sap/zen/crosstab/TextConstants.js +22 -0
  27. package/src/sap/zen/crosstab/TouchHandler.js +413 -0
  28. package/src/sap/zen/crosstab/datahandler/JsonDataHandler.js +777 -0
  29. package/src/sap/zen/crosstab/dragdrop/DragDropAreaRenderer.js +446 -0
  30. package/src/sap/zen/crosstab/dragdrop/DragDropHandler.js +674 -0
  31. package/src/sap/zen/crosstab/dragdrop/DragDropHoverManager.js +474 -0
  32. package/src/sap/zen/crosstab/dragdrop/DragDropUtils.js +579 -0
  33. package/src/sap/zen/crosstab/dragdrop/MemberDragDropHandler.js +1156 -0
  34. package/src/sap/zen/crosstab/keyboard/CrosstabKeyboardNavHandler.js +585 -0
  35. package/src/sap/zen/crosstab/library.js +49 -0
  36. package/src/sap/zen/crosstab/paging/CellMerger.js +266 -0
  37. package/src/sap/zen/crosstab/paging/Page.js +331 -0
  38. package/src/sap/zen/crosstab/paging/PageManager.js +396 -0
  39. package/src/sap/zen/crosstab/paging/PagingConstants.js +19 -0
  40. package/src/sap/zen/crosstab/paging/RequestHandler.js +103 -0
  41. package/src/sap/zen/crosstab/paging/RequestStack.js +112 -0
  42. package/src/sap/zen/crosstab/rendering/CrossRequestManager.js +468 -0
  43. package/src/sap/zen/crosstab/rendering/DataModel.js +260 -0
  44. package/src/sap/zen/crosstab/rendering/DomElementProvider.js +24 -0
  45. package/src/sap/zen/crosstab/rendering/HeaderScrollManager.js +93 -0
  46. package/src/sap/zen/crosstab/rendering/PixelScrollManager.js +189 -0
  47. package/src/sap/zen/crosstab/rendering/RenderEngine.js +2694 -0
  48. package/src/sap/zen/crosstab/rendering/RenderingConstants.js +60 -0
  49. package/src/sap/zen/crosstab/rendering/ScrollManager.js +614 -0
  50. package/src/sap/zen/crosstab/rendering/ScrollbarRenderer.js +560 -0
  51. package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/Chart.less +0 -4
  52. package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/InfoFeeding.less +120 -120
  53. package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_hcb/InfoFeeding.less +85 -85
  54. package/src/sap/zen/crosstab/utils/Measuring.js +236 -0
  55. package/src/sap/zen/crosstab/utils/Utils.js +485 -0
  56. package/ui5.yaml +4 -2
  57. package/src/main/uilib/sap/zen/crosstab/BaseArea.js +0 -1013
  58. package/src/main/uilib/sap/zen/crosstab/CellStyleHandler.js +0 -111
  59. package/src/main/uilib/sap/zen/crosstab/ColResizer.js +0 -264
  60. package/src/main/uilib/sap/zen/crosstab/ColumnHeaderArea.js +0 -52
  61. package/src/main/uilib/sap/zen/crosstab/Crosstab.js +0 -1662
  62. package/src/main/uilib/sap/zen/crosstab/CrosstabCellApi.js +0 -142
  63. package/src/main/uilib/sap/zen/crosstab/CrosstabContextMenu.js +0 -96
  64. package/src/main/uilib/sap/zen/crosstab/CrosstabHeaderInfo.js +0 -698
  65. package/src/main/uilib/sap/zen/crosstab/CrosstabRenderer.js +0 -274
  66. package/src/main/uilib/sap/zen/crosstab/CrosstabTestProxy.js +0 -59
  67. package/src/main/uilib/sap/zen/crosstab/DataArea.js +0 -74
  68. package/src/main/uilib/sap/zen/crosstab/DataCell.js +0 -196
  69. package/src/main/uilib/sap/zen/crosstab/DataCellRenderer.js +0 -71
  70. package/src/main/uilib/sap/zen/crosstab/DimensionHeaderArea.js +0 -25
  71. package/src/main/uilib/sap/zen/crosstab/EventHandler.js +0 -651
  72. package/src/main/uilib/sap/zen/crosstab/HeaderCell.js +0 -329
  73. package/src/main/uilib/sap/zen/crosstab/HeaderCellRenderer.js +0 -374
  74. package/src/main/uilib/sap/zen/crosstab/HeaderResizer.js +0 -131
  75. package/src/main/uilib/sap/zen/crosstab/IDataCell.js +0 -21
  76. package/src/main/uilib/sap/zen/crosstab/IHeaderCell.js +0 -21
  77. package/src/main/uilib/sap/zen/crosstab/PropertyBag.js +0 -209
  78. package/src/main/uilib/sap/zen/crosstab/RowHeaderArea.js +0 -71
  79. package/src/main/uilib/sap/zen/crosstab/SelectionHandler.js +0 -911
  80. package/src/main/uilib/sap/zen/crosstab/TextConstants.js +0 -9
  81. package/src/main/uilib/sap/zen/crosstab/TouchHandler.js +0 -438
  82. package/src/main/uilib/sap/zen/crosstab/datahandler/JsonDataHandler.js +0 -760
  83. package/src/main/uilib/sap/zen/crosstab/dragdrop/DragDropAreaRenderer.js +0 -436
  84. package/src/main/uilib/sap/zen/crosstab/dragdrop/DragDropHandler.js +0 -682
  85. package/src/main/uilib/sap/zen/crosstab/dragdrop/DragDropHoverManager.js +0 -467
  86. package/src/main/uilib/sap/zen/crosstab/dragdrop/DragDropUtils.js +0 -580
  87. package/src/main/uilib/sap/zen/crosstab/dragdrop/MemberDragDropHandler.js +0 -1154
  88. package/src/main/uilib/sap/zen/crosstab/keyboard/CrosstabKeyboardNavHandler.js +0 -635
  89. package/src/main/uilib/sap/zen/crosstab/library.js +0 -38
  90. package/src/main/uilib/sap/zen/crosstab/nonphx/logic.js +0 -11
  91. package/src/main/uilib/sap/zen/crosstab/paging/CellMerger.js +0 -284
  92. package/src/main/uilib/sap/zen/crosstab/paging/Page.js +0 -357
  93. package/src/main/uilib/sap/zen/crosstab/paging/PageManager.js +0 -437
  94. package/src/main/uilib/sap/zen/crosstab/paging/PagingConstants.js +0 -7
  95. package/src/main/uilib/sap/zen/crosstab/paging/RequestHandler.js +0 -97
  96. package/src/main/uilib/sap/zen/crosstab/paging/RequestStack.js +0 -108
  97. package/src/main/uilib/sap/zen/crosstab/rendering/CrossRequestManager.js +0 -462
  98. package/src/main/uilib/sap/zen/crosstab/rendering/DataModel.js +0 -250
  99. package/src/main/uilib/sap/zen/crosstab/rendering/DomElementProvider.js +0 -13
  100. package/src/main/uilib/sap/zen/crosstab/rendering/HeaderScrollManager.js +0 -97
  101. package/src/main/uilib/sap/zen/crosstab/rendering/PixelScrollManager.js +0 -180
  102. package/src/main/uilib/sap/zen/crosstab/rendering/RenderEngine.js +0 -2757
  103. package/src/main/uilib/sap/zen/crosstab/rendering/RenderingConstants.js +0 -56
  104. package/src/main/uilib/sap/zen/crosstab/rendering/ScrollManager.js +0 -638
  105. package/src/main/uilib/sap/zen/crosstab/rendering/ScrollbarRenderer.js +0 -542
  106. package/src/main/uilib/sap/zen/crosstab/utils/Measuring.js +0 -225
  107. package/src/main/uilib/sap/zen/crosstab/utils/Utils.js +0 -480
  108. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/ChartTypeSwitch.less +0 -0
  109. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/Crosstab.less +0 -0
  110. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/FilterBar.less +0 -0
  111. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/FilterPanel.less +0 -0
  112. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/Footerbar.less +0 -0
  113. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/InfoChart.less +0 -0
  114. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/NavigationPanel.less +0 -0
  115. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/chartconfig.less +0 -0
  116. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/img/CornerTornEffect.png +0 -0
  117. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/img/HTornEffect.png +0 -0
  118. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/img/HTornEffectData.png +0 -0
  119. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/img/HTornEffectHeader.png +0 -0
  120. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/img/VTornEffect.png +0 -0
  121. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/img/loading.gif +0 -0
  122. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/img/loading_comp.gif +0 -0
  123. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/library.source.less +0 -0
  124. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/base/zen.less +0 -0
  125. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_belize/library.source.less +0 -0
  126. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_belize_hcb/library.source.less +0 -0
  127. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_belize_hcw/library.source.less +0 -0
  128. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_belize_plus/library.source.less +0 -0
  129. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_bluecrystal/library.source.less +0 -0
  130. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_fiori_3/library.source.less +0 -0
  131. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_fiori_3_dark/library.source.less +0 -0
  132. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_fiori_3_hcb/library.source.less +0 -0
  133. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_fiori_3_hcw/library.source.less +0 -0
  134. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_hcb/Chart.less +0 -0
  135. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_hcb/ChartTypeSwitch.less +0 -0
  136. /package/src/{main/uilib/sap → sap}/zen/crosstab/themes/sap_hcb/library.source.less +0 -0
@@ -1,760 +0,0 @@
1
- jQuery.sap.declare("sap.zen.crosstab.datahandler.JsonDataHandler");
2
- jQuery.sap.require("sap.zen.crosstab.TextConstants");
3
- jQuery.sap.require("sap.zen.crosstab.utils.Utils");
4
- jQuery.sap.require("sap.zen.crosstab.rendering.RenderingConstants");
5
- jQuery.sap.require("sap.zen.crosstab.CrosstabCellApi");
6
-
7
- sap.zen.crosstab.datahandler.JsonDataHandler = function (oCrosstab) {
8
-
9
- var oDimensionHeaderArea = oCrosstab.getDimensionHeaderArea();
10
- var oColHeaderArea = oCrosstab.getColumnHeaderArea();
11
- var oRowHeaderArea = oCrosstab.getRowHeaderArea();
12
- var oDataArea = oCrosstab.getDataArea();
13
-
14
- var iFixedColHeaders = 0;
15
- var iFixedRowHeaders = 0;
16
- var iTotalDataColumns = 0;
17
- var iTotalDataRows = 0;
18
-
19
- var bFillDimensionHeaderArea = false;
20
- var bFillRowHeaderArea = false;
21
- var bFillColHeaderArea = false;
22
-
23
- var oJsonTableControl = null;
24
- var oCrosstabAreasToBeFilled = null;
25
- var iColOffset = 0;
26
- var iRowOffset = 0;
27
-
28
- var oColHeaderHierarchyLevels = {};
29
- var oRowHeaderHierarchyLevels = {};
30
-
31
- function createDefaultCrosstabTextCache () {
32
- if (!sap.zen.CrosstabTextCache) {
33
- sap.zen.CrosstabTextCache = {};
34
- sap.zen.CrosstabTextCache.filled = false;
35
- sap.zen.CrosstabTextCache.oTexts = {};
36
- sap.zen.CrosstabTextCache.oSortingTextLookupTable = {};
37
- sap.zen.CrosstabTextCache.defaultProvided = false;
38
- }
39
- var oPropertyBag = oCrosstab.getPropertyBag();
40
- // The texts are only sent once when the Crosstab is initialized. Therefore, this fallback
41
- // is only necessary if the texts have never before been set
42
- oPropertyBag.addText(sap.zen.crosstab.TextConstants.ROW_TEXT_KEY, "Row");
43
- oPropertyBag.addText(sap.zen.crosstab.TextConstants.COL_TEXT_KEY, "Column");
44
- oPropertyBag.addText(sap.zen.crosstab.TextConstants.COLWIDTH_ADJUST_TEXT_KEY,
45
- "Double Click to adjust Column Width");
46
- oPropertyBag.addText(sap.zen.crosstab.TextConstants.MOBILE_MENUITEM_COLWIDTH_ADJUST_TEXT_KEY,
47
- "Adjust Column Width");
48
- oPropertyBag.addText(sap.zen.crosstab.TextConstants.MEASURE_STRUCTURE_TEXT_KEY, "Measure Structure");
49
-
50
- provideDefaultSortingTexts(oPropertyBag);
51
- sap.zen.CrosstabTextCache.defaultProvided = true;
52
- }
53
-
54
- function readTranslatedTexts (oTexts) {
55
- if (sap.zen.CrosstabTextCache.filled === false) {
56
- var oPropertyBag = oCrosstab.getPropertyBag();
57
- if (oTexts) {
58
- oPropertyBag.addText(sap.zen.crosstab.TextConstants.ROW_TEXT_KEY, oTexts.rowtext || "Row");
59
- oPropertyBag.addText(sap.zen.crosstab.TextConstants.COL_TEXT_KEY, oTexts.coltext || "Column");
60
- oPropertyBag.addText(sap.zen.crosstab.TextConstants.COLWIDTH_ADJUST_TEXT_KEY, oTexts.colwidthtext
61
- || "Double Click to adjust Column Width");
62
- oPropertyBag.addText(sap.zen.crosstab.TextConstants.MOBILE_MENUITEM_COLWIDTH_ADJUST_TEXT_KEY,
63
- oTexts.mobilemenuitemcolwidthtext || "Adjust Column Width");
64
-
65
- oPropertyBag.addText(sap.zen.crosstab.TextConstants.MEASURE_STRUCTURE_TEXT_KEY, oTexts.measurestructtext || "Measure Structure");
66
-
67
- extractSortingTexts(oTexts, oPropertyBag);
68
- }
69
- sap.zen.CrosstabTextCache.filled = true;
70
- }
71
- }
72
-
73
- function provideDefaultSortingTexts (oPropertyBag) {
74
- var oSortingLookup = {};
75
- oSortingLookup.alttext = "Unsorted. Select to sort ascending";
76
- oSortingLookup.tooltipidx = 0;
77
- oPropertyBag.addSortingTextLookup("0", oSortingLookup);
78
-
79
- oSortingLookup = {};
80
- oSortingLookup.alttext = "Sorted ascending. Select to sort descending";
81
- oSortingLookup.tooltipidx = 1;
82
- oPropertyBag.addSortingTextLookup("1", oSortingLookup);
83
-
84
- oSortingLookup = {};
85
- oSortingLookup.alttext = "Sorted descending. Select to sort ascending";
86
- oSortingLookup.tooltipidx = 2;
87
- oPropertyBag.addSortingTextLookup("2", oSortingLookup);
88
- }
89
-
90
- function extractSortingTexts (oTexts, oPropertyBag) {
91
- var oSortingTextList = oTexts.sorting;
92
- if (!oSortingTextList) {
93
- provideDefaultSortingTexts(oPropertyBag);
94
- } else {
95
- var i = 0;
96
- var iListLength = parseInt(oSortingTextList.length, 10);
97
- for (i = 0; i < iListLength; i++) {
98
- var oSortingLookup = {};
99
- oSortingLookup.alttext = oSortingTextList[i].alttext;
100
- oSortingLookup.tooltipidx = oSortingTextList[i].tooltipidx;
101
- oPropertyBag.addSortingTextLookup(i + "", oSortingLookup);
102
- }
103
- }
104
- }
105
-
106
- this.determineBasicAreaData = function (oCrosstabData, bIsFirstPage) {
107
- if (!sap.zen.CrosstabTextCache || (sap.zen.CrosstabTextCache && !sap.zen.CrosstabTextCache.defaultProvided)) {
108
- createDefaultCrosstabTextCache();
109
- }
110
-
111
- oJsonTableControl = oCrosstabData;
112
-
113
- if (oJsonTableControl.rootcause && oJsonTableControl.rootcause === "bookmark") {
114
- oCrosstab.getPropertyBag().setBookmarkProcessing(true);
115
- }
116
-
117
- if (!oJsonTableControl.rows) {
118
- handleMsgInTable(oJsonTableControl);
119
- removeSelections();
120
- oCrosstab.setHasData(false);
121
- } else {
122
- oCrosstab.setHasData(true);
123
- if (bIsFirstPage || oJsonTableControl.changed) {
124
- readTranslatedTexts(oJsonTableControl.texts);
125
-
126
- oColHeaderHierarchyLevels = {};
127
- oRowHeaderHierarchyLevels = {};
128
-
129
- iFixedColHeaders = oJsonTableControl.fixedcolheaders;
130
- iFixedRowHeaders = oJsonTableControl.fixedrowheaders;
131
-
132
- if (!oJsonTableControl.pixelscrolling) {
133
- oCrosstab.setHCutOff(false);
134
- oCrosstab.setVCutOff(false);
135
-
136
- iTotalDataColumns = oJsonTableControl.totaldatacols;
137
- iTotalDataRows = oJsonTableControl.totaldatarows;
138
- } else {
139
- oCrosstab.setHCutOff(oJsonTableControl.totaldatacols > oJsonTableControl.sentdatacols);
140
- oCrosstab.setVCutOff(oJsonTableControl.totaldatarows > oJsonTableControl.sentdatarows);
141
-
142
- iTotalDataColumns = oJsonTableControl.sentdatacols;
143
- iTotalDataRows = oJsonTableControl.sentdatarows;
144
- }
145
-
146
- if (!iFixedColHeaders || !iFixedRowHeaders) {
147
- oDimensionHeaderArea.setRowCnt(0);
148
- oDimensionHeaderArea.setColCnt(0);
149
- if (!iFixedRowHeaders) {
150
- oRowHeaderArea.setRowCnt(0);
151
- oRowHeaderArea.setColCnt(0);
152
- if (iFixedColHeaders) {
153
- oColHeaderArea.setRowCnt(iFixedColHeaders);
154
- oColHeaderArea.setColCnt(iTotalDataColumns);
155
- }
156
- } else if (!iFixedColHeaders) {
157
- oColHeaderArea.setRowCnt(0);
158
- oColHeaderArea.setColCnt(0);
159
- if (iFixedRowHeaders) {
160
- oRowHeaderArea.setRowCnt(iTotalDataRows);
161
- oRowHeaderArea.setColCnt(iFixedRowHeaders);
162
- }
163
- }
164
- } else {
165
- oDimensionHeaderArea.setRowCnt(iFixedColHeaders);
166
- oDimensionHeaderArea.setColCnt(iFixedRowHeaders);
167
-
168
- oRowHeaderArea.setRowCnt(iTotalDataRows);
169
- oRowHeaderArea.setColCnt(iFixedRowHeaders);
170
-
171
- oColHeaderArea.setRowCnt(iFixedColHeaders);
172
- oColHeaderArea.setColCnt(iTotalDataColumns);
173
- }
174
-
175
- oDataArea.setRowCnt(iTotalDataRows);
176
- oDataArea.setColCnt(iTotalDataColumns);
177
-
178
- oCrosstab.setTotalRows(iFixedColHeaders + iTotalDataRows);
179
- oCrosstab.setTotalCols(iFixedRowHeaders + iTotalDataColumns);
180
-
181
- oCrosstab.setOnSelectCommand(oJsonTableControl.onselectcommand);
182
- oCrosstab.getPropertyBag().setDisplayExceptions(oJsonTableControl.displayexceptions);
183
- oCrosstab.getPropertyBag().setEnableColResize(oJsonTableControl.enablecolresize);
184
-
185
- oCrosstab.setScrollNotifyCommand(oJsonTableControl.scrollnotifier);
186
-
187
- oCrosstab.setUpdateColWidthCommand(oJsonTableControl.updatecolwidthcmd);
188
-
189
- // for this to work, the basic area data must have been determined already, plus the selection info
190
- // must have been determined. Don't move this line further up
191
- setUserColWidthsToAreas(oCrosstabData);
192
-
193
- var oCellApi = new sap.zen.crosstab.CrosstabCellApi(oCrosstab, iFixedRowHeaders, iFixedColHeaders,
194
- iTotalDataColumns, iTotalDataRows);
195
- oCrosstab.setCellApi(oCellApi);
196
- }
197
- extractCrossRequestInfo();
198
- // planning
199
- if (!(oCrosstab.getPropertyBag().isMobileMode() || oCrosstab.getPropertyBag().isTestMobileMode())) {
200
- if (oJsonTableControl.transferdatacommand) {
201
- oCrosstab.setTransferDataCommand(oJsonTableControl.transferdatacommand);
202
- } else {
203
- oCrosstab.setTransferDataCommand(null);
204
- }
205
- if (oJsonTableControl.callvaluehelpcommand) {
206
- oCrosstab.setCallValueHelpCommand(oJsonTableControl.callvaluehelpcommand);
207
- }
208
- if (oJsonTableControl.newlinescnt) {
209
- oCrosstab.setNewLinesCnt(oJsonTableControl.newlinescnt);
210
- }
211
- if (oJsonTableControl.newlinespos) {
212
- oCrosstab.setNewLinesPos(oJsonTableControl.newlinespos);
213
- }
214
- }
215
-
216
- if (oJsonTableControl.contextmenucmd) {
217
- oCrosstab.getPropertyBag().setContextMenuCommand(oJsonTableControl.contextmenucmd);
218
- oCrosstab.createContextMenu();
219
- }
220
-
221
- // header width stuff
222
- if (oJsonTableControl.headerscrolling && oJsonTableControl.headerscrolling == true) {
223
- oCrosstab.setHeaderScrollingConfigured(true);
224
-
225
- if (oJsonTableControl.userheaderresize) {
226
- oCrosstab.setUserHeaderResizeAllowed(oJsonTableControl.userheaderresize);
227
- }
228
- if (oJsonTableControl.userheaderwidthcommand) {
229
- oCrosstab.setUserHeaderWidthCommand(oJsonTableControl.userheaderwidthcommand);
230
- }
231
- if (oJsonTableControl.headerwidth) {
232
- oCrosstab.getPropertyBag().setMaxHeaderWidth(oJsonTableControl.headerwidth);
233
- } else {
234
- oCrosstab.getPropertyBag().setMaxHeaderWidth(0);
235
- }
236
-
237
- if (oJsonTableControl.headerwidthcurrent) {
238
- oCrosstab.getPropertyBag().setUserHeaderWidth(oJsonTableControl.headerwidthcurrent);
239
- } else {
240
- oCrosstab.getPropertyBag().setUserHeaderWidth(0);
241
- }
242
- } else {
243
- oCrosstab.setHeaderScrollingConfigured(false);
244
- oCrosstab.setUserHeaderResizeAllowed(false);
245
- oCrosstab.setUserHeaderWidthCommand(null);
246
- oCrosstab.getPropertyBag().setMaxHeaderWidth(0);
247
- oCrosstab.getPropertyBag().setUserHeaderWidth(0);
248
- }
249
-
250
- // selection handling
251
- if(oJsonTableControl.selectionmode) {
252
- oCrosstab.setSelectionProperties(oJsonTableControl.selectionmode, oJsonTableControl.selectionspace, oJsonTableControl.disablehovering, oJsonTableControl.singleonselectevent);
253
- }
254
-
255
- var oSelectionHandler = oCrosstab.getSelectionHandler();
256
- if (oSelectionHandler) {
257
- oSelectionHandler.setSelection(oJsonTableControl.selection);
258
- }
259
-
260
- if (oJsonTableControl.headerinfo) {
261
- oCrosstab.initHeaderInfo(oJsonTableControl.headerinfo);
262
- }
263
-
264
- if (oJsonTableControl.repeattxt && oJsonTableControl.repeattxt === true) {
265
- oCrosstab.getPropertyBag().setRepeatTexts(true);
266
- } else {
267
- oCrosstab.getPropertyBag().setRepeatTexts(false);
268
- }
269
-
270
- // DragDrop handling
271
- if (oJsonTableControl.dragdropcommands) {
272
- oCrosstab.getPropertyBag().setDragDropEnabled(true);
273
- oCrosstab.setDragDropCommands(oJsonTableControl.dragdropcommands);
274
- } else {
275
- oCrosstab.getPropertyBag().setDragDropEnabled(false);
276
- }
277
-
278
- // Zebra
279
- if (oJsonTableControl.zebra) {
280
- oCrosstab.getPropertyBag().setZebraMode(oJsonTableControl.zebra);
281
- } else {
282
- oCrosstab.getPropertyBag().setZebraMode(sap.zen.crosstab.rendering.RenderingConstants.ZEBRA_FULL);
283
- }
284
- }
285
-
286
- };
287
-
288
- function setUserColWidthsToAreas (oCrosstabData) {
289
- var widthList = oCrosstabData.usercolwidths;
290
- if (widthList) {
291
- for (var i = 0; i < widthList.length; i++) {
292
- var entry = widthList[i];
293
- var colIndex = entry.colid;
294
- if (isNaN(entry.colwidth)) {
295
- continue;
296
- }
297
- var iColWidth = Math.max(0, parseInt(entry.colwidth, 10));
298
- var bIgnore = false;
299
- if (entry.ignore !== undefined) {
300
- bIgnore = entry.ignore;
301
- }
302
- if (colIndex === '*') {
303
- if (iFixedColHeaders && iFixedRowHeaders) {
304
- oColHeaderArea.setColUserWidth(colIndex, iColWidth, bIgnore);
305
- oDataArea.setColUserWidth(colIndex, iColWidth, bIgnore);
306
- oDimensionHeaderArea.setColUserWidth(colIndex, iColWidth, bIgnore);
307
- oRowHeaderArea.setColUserWidth(colIndex, iColWidth, bIgnore);
308
- } else {
309
- if (!iFixedRowHeaders) {
310
- oColHeaderArea.setColUserWidth(colIndex, iColWidth, bIgnore);
311
- } else if (!iFixedColHeaders) {
312
- oRowHeaderArea.setColUserWidth(colIndex, iColWidth, bIgnore);
313
- }
314
- oDataArea.setColUserWidth(colIndex, iColWidth, bIgnore);
315
- }
316
- } else {
317
- if (iFixedColHeaders && iFixedRowHeaders) {
318
- // all areas present
319
- if (colIndex >= iFixedRowHeaders) {
320
- // column header and data area
321
- oColHeaderArea.setColUserWidth(colIndex - iFixedRowHeaders, iColWidth, bIgnore);
322
- oDataArea.setColUserWidth(colIndex - iFixedRowHeaders, iColWidth, bIgnore);
323
- } else {
324
- // dimension header and row header area
325
- oDimensionHeaderArea.setColUserWidth(colIndex, iColWidth, bIgnore);
326
- oRowHeaderArea.setColUserWidth(colIndex, iColWidth, bIgnore);
327
- }
328
- } else {
329
- // we don't have a dimension header area. So either row header or col header is missing
330
- if (!iFixedRowHeaders) {
331
- // row header missing. Index goes directly to col header area and data area
332
- oColHeaderArea.setColUserWidth(colIndex, iColWidth, bIgnore);
333
- oDataArea.setColUserWidth(colIndex, iColWidth, bIgnore);
334
- } else if (!iFixedColHeaders) {
335
- // only row header and data area, so find out what to use
336
- if (colIndex >= iFixedRowHeaders) {
337
- oDataArea.setColUserWidth(colIndex - iFixedRowHeaders, iColWidth, bIgnore);
338
- } else {
339
- oRowHeaderArea.setColUserWidth(colIndex, iColWidth, bIgnore);
340
- }
341
- }
342
- }
343
- }
344
- }
345
- }
346
- }
347
-
348
- function extractCrossRequestInfo () {
349
- var oCrossRequestManager = oCrosstab.getRenderEngine().getCrossRequestManager();
350
-
351
- if (oCrossRequestManager) {
352
- // set scroll parameters that come from the server if any
353
- if (oJsonTableControl.clienthpos !== undefined && oJsonTableControl.clientvpos !== undefined
354
- && oJsonTableControl.clienthscrolledtoend !== undefined
355
- && oJsonTableControl.clientvscrolledtoend !== undefined) {
356
- // plausibility check
357
- if (oJsonTableControl.clienthscrolledtoend === true) {
358
- oJsonTableControl.clienthpos = oJsonTableControl.totaldatacols - 1;
359
- }
360
- if (oJsonTableControl.clientvscrolledtoend === true) {
361
- oJsonTableControl.clientvpos = oJsonTableControl.totaldatarows - 1;
362
- }
363
-
364
- if (!oCrossRequestManager.hasSavedVScrollInfo() && !oCrossRequestManager.hasSavedHScrollInfo()) {
365
- oCrossRequestManager.setScrollData(parseInt(oJsonTableControl.clienthpos, 10),
366
- oJsonTableControl.clienthscrolledtoend, parseInt(oJsonTableControl.clientvpos, 10),
367
- oJsonTableControl.clientvscrolledtoend);
368
- }
369
- }
370
-
371
- if (oJsonTableControl.rootcause) {
372
- oCrossRequestManager.setRootCause(oJsonTableControl.rootcause);
373
- if (oJsonTableControl.rootcause === "hierarchy") {
374
- oCrossRequestManager.setHierarchyAction(oJsonTableControl.rootcause_hierarchy); // expanded/collapsed
375
- oCrossRequestManager.setIsHierarchyDirectionDown(oJsonTableControl.rootcause_hierarchy_directiondown);
376
- }
377
- oCrossRequestManager.handleRootCause();
378
- } else {
379
- if (oJsonTableControl.changed === true) {
380
- // clear scroll values
381
- oCrossRequestManager.setScrollData(0, false, 0, false);
382
- }
383
- }
384
-
385
- // Horizontal scrollpos in header if any
386
- var bSetHeaderScrollPositions = false;
387
- if (oJsonTableControl.rootcause && oCrosstab.getPropertyBag().isBookmarkProcessing()) {
388
- bSetHeaderScrollPositions = true;
389
- } else {
390
- if (!oJsonTableControl.dataproviderchanged) {
391
- if (oJsonTableControl.resultsetchanged) {
392
- if (oJsonTableControl.rootcause) {
393
- bSetHeaderScrollPositions = oJsonTableControl.rootcause === "sorting" || oJsonTableControl.rootcause === "hierarchy" || oJsonTableControl.rootcause === "plan" || oJsonTableControl.rootcause === "dragdrop";
394
- }
395
- } else {
396
- bSetHeaderScrollPositions = true;
397
- }
398
- }
399
- }
400
- if (oJsonTableControl.clientheaderhpos && bSetHeaderScrollPositions) {
401
- oCrossRequestManager.setHeaderScrollData({"iHPos": parseInt(oJsonTableControl.clientheaderhpos, 10)});
402
- } else {
403
- oCrossRequestManager.setHeaderScrollData({"iHPos": 0});
404
- }
405
- }
406
- }
407
-
408
- this.jsonToDataModel = function (oPageInfo) {
409
- if (oJsonTableControl.rows) {
410
- oCrosstabAreasToBeFilled = oPageInfo.oCrosstabAreasToBeFilled;
411
- iColOffset = oPageInfo.iColOffset;
412
- iRowOffset = oPageInfo.iRowOffset;
413
-
414
- checkHeaderAreasToBeFilled();
415
-
416
- var aRows = oJsonTableControl.rows;
417
- for (var i = 0, iMaxRows = aRows.length; i < iMaxRows; i++) {
418
- var iRowIndex = aRows[i].row.rowidx;
419
- var aCells = aRows[i].row.cells;
420
- for (var j = 0, iMaxCols = aCells.length; j < iMaxCols; j++) {
421
- var oJsonCellControl = aCells[j].control;
422
- var iColIndex = oJsonCellControl.colidx;
423
- addCell(oJsonCellControl, iRowIndex, iColIndex);
424
- }
425
- }
426
- }
427
- oCrosstab.setColHeaderHierarchyLevels(oColHeaderHierarchyLevels);
428
- oCrosstab.setRowHeaderHierarchyLevels(oRowHeaderHierarchyLevels);
429
- };
430
-
431
- function checkHeaderAreasToBeFilled () {
432
- bFillDimensionHeaderArea = oCrosstabAreasToBeFilled[oDimensionHeaderArea.getAreaType()];
433
- bFillRowHeaderArea = oCrosstabAreasToBeFilled[oRowHeaderArea.getAreaType()];
434
- bFillColHeaderArea = oCrosstabAreasToBeFilled[oColHeaderArea.getAreaType()];
435
- }
436
-
437
- function handleMsgInTable (oJsonTableControl) {
438
- oDimensionHeaderArea.setRowCnt(2);
439
- oDimensionHeaderArea.setColCnt(1);
440
-
441
- var oCell = createHeaderCell(oDimensionHeaderArea, 0, 0);
442
- oCell.setText(oJsonTableControl.messagetitle);
443
- oDimensionHeaderArea.insertCell(oCell, 0, 0);
444
-
445
- oCell = createHeaderCell(oDimensionHeaderArea, 1, 0);
446
- oCell.setText(oJsonTableControl.messagetext);
447
- oDimensionHeaderArea.insertCell(oCell, 1, 0);
448
- }
449
-
450
- function removeSelections() {
451
- var oSelectionHandler = oCrosstab.getSelectionHandler();
452
- if(oSelectionHandler){
453
- oSelectionHandler.setSelection(null);
454
- }
455
- }
456
-
457
- var addCell = function (oJsonCellControl, iRowIndex, iColIndex) {
458
- var iModelRow = iRowIndex - 1;
459
- var iModelCol = iColIndex - 1;
460
-
461
- if (iColIndex > iFixedRowHeaders && iRowIndex > iFixedColHeaders) {
462
- addDataCell(oJsonCellControl, iModelRow + iRowOffset, iModelCol + iColOffset);
463
- } else if (bFillDimensionHeaderArea && iColIndex <= iFixedRowHeaders && iRowIndex <= iFixedColHeaders) {
464
- addDimensionAreaCell(oJsonCellControl, iModelRow, iModelCol);
465
- } else if (bFillColHeaderArea && iRowIndex <= iFixedColHeaders && iColIndex > iFixedRowHeaders) {
466
- addColumnHeaderCell(oJsonCellControl, iModelRow, iModelCol + iColOffset);
467
- } else if (bFillRowHeaderArea && iColIndex <= iFixedRowHeaders && iRowIndex > iFixedColHeaders) {
468
- addRowHeaderCell(oJsonCellControl, iModelRow + iRowOffset, iModelCol);
469
- }
470
- };
471
-
472
- function createDataCell (iRow, iCol) {
473
- var oDataCell = new sap.zen.crosstab.DataCell();
474
- oDataCell.setArea(oDataArea);
475
- oDataCell.setRow(iRow);
476
- oDataCell.setCol(iCol);
477
- oDataCell.addStyle(oCrosstab.getPropertyBag().isCozyMode() ? sap.zen.crosstab.rendering.RenderingConstants.STYLE_DATA_CELL_COZY : sap.zen.crosstab.rendering.RenderingConstants.STYLE_DATA_CELL);
478
- return oDataCell;
479
- }
480
-
481
- var addDataCell = function (oJsonCellControl, iModelRow, iModelCol) {
482
- // coordinates in data area
483
- var iRowIndex = iModelRow - iFixedColHeaders;
484
- var iColIndex = iModelCol - iFixedRowHeaders;
485
-
486
- var oDataCell = createDataCell(iRowIndex, iColIndex);
487
- oDataCell.setTableRow(iModelRow);
488
- oDataCell.setTableCol(iModelCol);
489
- parseCommonCellData(oJsonCellControl, oDataCell);
490
-
491
- if (oCrosstab.getPropertyBag().getZebraMode() !== sap.zen.crosstab.rendering.RenderingConstants.ZEBRA_OFF) {
492
- if (iRowIndex % 2 === 1) {
493
- oDataCell.addStyle(sap.zen.crosstab.rendering.RenderingConstants.STYLE_ALTERNATING);
494
- }
495
- }
496
-
497
- oDataArea.insertCell(oDataCell, iRowIndex, iColIndex);
498
- };
499
-
500
- var addDimensionAreaCell = function (oJsonCellControl, iModelRow, iModelCol) {
501
- addHeaderCell(oJsonCellControl, oDimensionHeaderArea, iModelRow, iModelCol, iModelRow, iModelCol);
502
- };
503
-
504
- var addRowHeaderCell = function (oJsonCellControl, iModelRow, iModelCol) {
505
- var iActualModelRow = iModelRow;
506
- if (oJsonCellControl.axisidx !== undefined) {
507
- iActualModelRow = oJsonCellControl.axisidx + iFixedColHeaders;
508
- }
509
- addHeaderCell(oJsonCellControl, oRowHeaderArea, iModelRow - iFixedColHeaders, iModelCol, iActualModelRow,
510
- iModelCol);
511
- };
512
-
513
- var addColumnHeaderCell = function (oJsonCellControl, iModelRow, iModelCol) {
514
- var iActualModelCol = iModelCol;
515
- if (oJsonCellControl.axisidx !== undefined) {
516
- iActualModelCol = oJsonCellControl.axisidx + iFixedRowHeaders;
517
- }
518
- addHeaderCell(oJsonCellControl, oColHeaderArea, iModelRow, iModelCol - iFixedRowHeaders, iModelRow,
519
- iActualModelCol);
520
- };
521
-
522
- function createHeaderCell (oArea, iRow, iCol) {
523
- var oHeaderCell = new sap.zen.crosstab.HeaderCell();
524
- oHeaderCell.setArea(oArea);
525
- oHeaderCell.setRow(iRow);
526
- oHeaderCell.setCol(iCol);
527
- oHeaderCell.addStyle(oCrosstab.getPropertyBag().isCozyMode() ? sap.zen.crosstab.rendering.RenderingConstants.STYLE_HEADER_CELL_COZY : sap.zen.crosstab.rendering.RenderingConstants.STYLE_HEADER_CELL);
528
- return oHeaderCell;
529
- }
530
-
531
- var addHeaderCell = function (oJsonCellControl, oHeaderArea, iAreaRowIndex, iAreaColIndex, iModelRow, iModelCol) {
532
- var oHeaderCell = createHeaderCell(oHeaderArea, iAreaRowIndex, iAreaColIndex);
533
- oHeaderCell.setTableRow(iModelRow);
534
- oHeaderCell.setTableCol(iModelCol);
535
-
536
- parseCommonCellData(oJsonCellControl, oHeaderCell);
537
- parseHeaderCellData(oJsonCellControl, oHeaderCell, oHeaderArea);
538
-
539
- if (oCrosstab.getPropertyBag().isRtl() && oHeaderCell.getRow() === oCrosstab.getDimensionHeaderArea().getRowCnt() - 1 && oHeaderCell.getCol() === oCrosstab.getDimensionHeaderArea().getColCnt() - 1) {
540
- oHeaderCell.setText(sap.zen.crosstab.utils.Utils.swapPivotKeyText(oHeaderCell.getText()));
541
- }
542
-
543
- oHeaderArea.insertCell(oHeaderCell, iAreaRowIndex, iAreaColIndex);
544
- };
545
-
546
- var parseCommonCellData = function (oJsonCellControl, oCommonCell) {
547
- var oFormatter = getFormatter(oJsonCellControl);
548
- if (oFormatter) {
549
- oCommonCell.setFormatter(oFormatter);
550
- }
551
-
552
- var sText = oJsonCellControl._v;
553
- if (sText) {
554
- var oPreparedTextObject = sap.zen.crosstab.utils.Utils.prepareStringForRendering(sText);
555
- oCommonCell.setText(oPreparedTextObject.text);
556
- oCommonCell.setNumberOfLineBreaks(oPreparedTextObject.iNumberOfLineBreaks);
557
- }
558
-
559
- var exceptionVisualizations = oJsonCellControl.exceptionvisualizations;
560
- if (exceptionVisualizations) {
561
- for ( var index in exceptionVisualizations) {
562
- if (exceptionVisualizations.hasOwnProperty(index)) {
563
- var viz = exceptionVisualizations[index];
564
- if (viz) {
565
- sap.zen.crosstab.CellStyleHandler.setExceptionStylesOnCell(oCommonCell, viz.formattype,
566
- viz.alertlevel);
567
- }
568
- }
569
- }
570
- }
571
-
572
- if (oJsonCellControl.isemphasized) {
573
- oCommonCell.addStyle(sap.zen.crosstab.rendering.RenderingConstants.STYLE_EMPHASIZED);
574
- }
575
-
576
- // planning
577
- if (!(oCrosstab.getPropertyBag().isMobileMode() || oCrosstab.getPropertyBag().isTestMobileMode())) {
578
- if (oJsonCellControl.isdataentryenabled) {
579
- oCommonCell.addStyle(sap.zen.crosstab.rendering.RenderingConstants.STYLE_DATA_ENTRY_ENABLED);
580
- oCommonCell.setEntryEnabled(true);
581
- if (oJsonCellControl.unit) {
582
- oCommonCell.setUnit(oJsonCellControl.unit);
583
- }
584
- }
585
-
586
- if (oJsonCellControl.hasinvalidvalue) {
587
- oCommonCell.addStyle(sap.zen.crosstab.rendering.RenderingConstants.STYLE_INVALID_VALUE);
588
- }
589
-
590
- if (oJsonCellControl.hasnewvalue) {
591
- oCommonCell.addStyle(sap.zen.crosstab.rendering.RenderingConstants.STYLE_NEW_VALUE);
592
- }
593
-
594
- if (oJsonCellControl.islocked) {
595
- oCommonCell.addStyle(sap.zen.crosstab.rendering.RenderingConstants.STYLE_LOCKED);
596
- }
597
- }
598
-
599
- if (oJsonCellControl.isresult) {
600
- if (oCommonCell.setResult) {
601
- oCommonCell.setResult(oJsonCellControl.isresult);
602
- }
603
- oCommonCell.addStyle(sap.zen.crosstab.rendering.RenderingConstants.STYLE_TOTAL);
604
- }
605
-
606
- if (oJsonCellControl.passivetype) {
607
- oCommonCell.setPassiveCellType(oJsonCellControl.passivetype);
608
- }
609
-
610
-        if(oJsonCellControl.additionalstyles) {
611
-        for (var i = 0; i < oJsonCellControl.additionalstyles.length; i++) {
612
-         oCommonCell.addStyle(oJsonCellControl.additionalstyles[i].style.stylename);
613
-         }
614
-         }
615
- };
616
-
617
- var parseHeaderCellData = function (oJsonCellControl, oHeaderCell, oHeaderArea) {
618
- if (oJsonCellControl.rowspan) {
619
- oHeaderCell.setRowSpan(oJsonCellControl.rowspan);
620
- } else {
621
- oHeaderCell.setRowSpan(1);
622
- }
623
-
624
- if (oJsonCellControl.colspan) {
625
- oHeaderCell.setColSpan(oJsonCellControl.colspan);
626
- } else {
627
- oHeaderCell.setColSpan(1);
628
- }
629
-
630
- if (oJsonCellControl.key) {
631
- oHeaderCell.setMergeKey(oJsonCellControl.key);
632
- }
633
-
634
- if (oJsonCellControl.sort) {
635
- oHeaderCell.setSort(oJsonCellControl.sort);
636
- }
637
- if (oJsonCellControl.sorttxtidx) {
638
- oHeaderCell.setSortTextIndex(parseInt(oJsonCellControl.sorttxtidx, 10));
639
- }
640
-
641
- if (oJsonCellControl.sortaction) {
642
- oHeaderCell.setSortAction(oJsonCellControl.sortaction);
643
- }
644
- if (oJsonCellControl.alignment) {
645
- oHeaderCell.setAlignment(oJsonCellControl.alignment);
646
- }
647
- if (oJsonCellControl.memberid) {
648
- oHeaderCell.setMemberId(oJsonCellControl.memberid);
649
- }
650
- if (oJsonCellControl.parentmemberid) {
651
- oHeaderCell.setParentMemberId(oJsonCellControl.parentmemberid);
652
- }
653
- // level 0 is valid!
654
- if (typeof (oJsonCellControl.level) != "undefined") {
655
- oHeaderCell.setLevel(oJsonCellControl.level);
656
- saveHierarchyLevelInfo(oHeaderArea, oHeaderCell, oJsonCellControl.level);
657
- } else {
658
- oHeaderCell.setLevel(-1);
659
- }
660
- if (oJsonCellControl.drillstate) {
661
- if (oJsonCellControl.drillstate !== "A") {
662
- // Attribute is not a drillstate for rendering. It occurs when a [KEY][TEXT] or similar display is
663
- // chosen.
664
- // The attribute data must not be rendered with indentations
665
- oHeaderCell.setDrillState(oJsonCellControl.drillstate);
666
- }
667
- }
668
- if (oJsonCellControl.hierarchyaction) {
669
- oHeaderCell.setHierarchyAction(oJsonCellControl.hierarchyaction);
670
- }
671
- if (oJsonCellControl.hierarchytooltip) {
672
- oHeaderCell.setHierarchyTooltip(oJsonCellControl.hierarchytooltip);
673
- }
674
- if (oJsonCellControl.nodeAlignment) {
675
- oHeaderCell.setNodeAlignment(oJsonCellControl.nodeAlignment);
676
- }
677
-
678
- if (oCrosstab.getPropertyBag().getZebraMode() === sap.zen.crosstab.rendering.RenderingConstants.ZEBRA_FULL) {
679
- if (oHeaderArea.isRowHeaderArea() && oHeaderCell.getRow() % 2 === 1 && oHeaderCell.getRowSpan() === 1) {
680
- var oHeaderInfo = oCrosstab.getHeaderInfo();
681
- if (oHeaderInfo) {
682
- if ((oHeaderCell.getCol() + oHeaderCell.getColSpan() - 1) >= oHeaderInfo.getStartColForInnermostDimension()) {
683
- oHeaderCell.addStyle(sap.zen.crosstab.rendering.RenderingConstants.STYLE_ALTERNATING);
684
- }
685
- }
686
- }
687
- }
688
- };
689
-
690
- var saveHierarchyLevelInfo = function (oArea, oCell, iLevel) {
691
- if (oArea.getAreaType() === sap.zen.crosstab.rendering.RenderingConstants.TYPE_COLUMN_HEADER_AREA) {
692
- var iRow = oCell.getRow();
693
- if (oColHeaderHierarchyLevels[iRow] != undefined) {
694
- if (oColHeaderHierarchyLevels[iRow] < iLevel) {
695
- oColHeaderHierarchyLevels[iRow] = iLevel;
696
- }
697
- } else {
698
- oColHeaderHierarchyLevels[iRow] = iLevel;
699
- }
700
- } else if (oArea.getAreaType() === sap.zen.crosstab.rendering.RenderingConstants.TYPE_ROW_HEADER_AREA) {
701
- var iCol = oCell.getCol();
702
- if (oRowHeaderHierarchyLevels[iCol] != undefined) {
703
- if (oRowHeaderHierarchyLevels[iCol] < iLevel) {
704
- oRowHeaderHierarchyLevels[iCol] = iLevel;
705
- }
706
- } else {
707
- oRowHeaderHierarchyLevels[iCol] = iLevel;
708
- }
709
- }
710
- };
711
-
712
- function getFormatter(oJsonCellControl) {
713
- var oFormatter;
714
-
715
- if (oJsonCellControl.valueType) {
716
- var sPattern = validateFormatString(oJsonCellControl.formatString);
717
-
718
- var oFormatOptions;
719
- if (oJsonCellControl.valueType === "Integer" || oJsonCellControl.valueType === "Double") {
720
- oFormatOptions = {
721
- groupingEnabled: true, // show thousand separators
722
- maxFractionDigits: oJsonCellControl.decimals, // amount of decimals
723
- pattern: sPattern, // CLDR pattern (example "* #,### Tests" -> "* 10.000 Tests")
724
- showMeasure: true // show measure in pattern
725
- };
726
- oFormatter = sap.ui.core.format.NumberFormat.getCurrencyInstance(oFormatOptions);
727
- } else if (oJsonCellControl.valueType === "Amount" || oJsonCellControl.valueType === "Price" || oJsonCellControl.valueType === "Quantity") {
728
- oFormatOptions = {
729
- groupingEnabled: true, // show thousand separators
730
- maxFractionDigits: oJsonCellControl.decimals, // amount of decimals
731
- pattern: sPattern, // CLDR pattern (example "* #,### Tests" -> "* 10.000 Tests")
732
- showMeasure: true // show measure in pattern
733
- };
734
- oFormatter = sap.ui.core.format.NumberFormat.getCurrencyInstance(oFormatOptions);
735
- }
736
- }
737
-
738
- return oFormatter;
739
- }
740
-
741
- function validateFormatString(sFormatString) {
742
- var sPattern;
743
-
744
- if (sFormatString) {
745
- sPattern = sFormatString;
746
-
747
- // fix thousand separator
748
- regString = "#(?![#|" + "," + "]).(?=#)";
749
- regex = new RegExp(regString, "g");
750
- sFormatString = sFormatString.replace(regex, "#" + ",");
751
-
752
- // fix decimal separator
753
- regString = "0(?![0|" + "." + "]).(?=0)";
754
- regex = new RegExp(regString, "g");
755
- sPattern = sPattern.replace(regex, "0" + ".");
756
- }
757
-
758
- return sPattern;
759
- }
760
- };