@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,635 +0,0 @@
1
- jQuery.sap.declare("sap.zen.crosstab.keyboard.CrosstabKeyboardNavHandler");
2
- jQuery.sap.require("sap.zen.crosstab.rendering.RenderingConstants");
3
-
4
- sap.zen.crosstab.keyboard.CrosstabKeyboardNavHandler = function (oCrosstab, oEventHandler) {
5
- "use strict";
6
-
7
- var iFocusRow = -1;
8
- var iFocusCol = -1;
9
- var iOldFocusRow = -1;
10
- var iOldFocusCol = -1;
11
- var iNavDx = 0;
12
- var iNavDy = 0;
13
- var that = this;
14
- var bEnabled = false;
15
- var oDataArea = oCrosstab.getDataArea();
16
-
17
- this.reset = function() {
18
- this.disableCell(iFocusRow, iFocusCol);
19
- this.disableCell(iOldFocusRow, iOldFocusCol);
20
- iFocusRow = -1;
21
- iFocusCol = -1;
22
- iOldFocusRow = -1;
23
- iOldFocusCol = -1;
24
- iNavDx = 0;
25
- iNavDy = 0;
26
- };
27
-
28
- this.setEnabled = function (pbEnabled) {
29
- bEnabled = pbEnabled;
30
- };
31
-
32
- this.attachEvents = function (oJqDiv) {
33
- if (!bEnabled) {
34
- return;
35
- }
36
- oJqDiv.off("keydown", this.keyboardNavKeyHandler);
37
- oJqDiv.on("keydown", this.keyboardNavKeyHandler);
38
- // this must be used to make a div accept keydown events and focus-enabled
39
- oJqDiv.attr("tabindex", sap.zen.crosstab.rendering.RenderingConstants.TABINDEX);
40
- };
41
-
42
- this.getFocusScrollDiv = function (oCell) {
43
- var oDomScrollDiv = null;
44
- if (oCell.getArea().isDataArea() || oCell.getArea().isColHeaderArea()) {
45
- oDomScrollDiv = document.getElementById(oCrosstab.getId() + '_lowerRight_scrollDiv');
46
- } else if (oCell.getArea().isRowHeaderArea()) {
47
- oDomScrollDiv = document.getElementById(oCrosstab.getId() + '_lowerLeft_scrollDiv');
48
- }
49
- return oDomScrollDiv;
50
- };
51
-
52
- this.movePixelCellIntoFocus = function (oCell, oDomCell, oScrollDivRect, bUserSelected, bLookAheadMode, bNewLine) {
53
- var bHasScrolled = false;
54
-
55
- var oCellDivRect = oCrosstab.getUtils().getRtlAwareBoundingClientRect(oDomCell);
56
- var iScrollDivRectWidth = oScrollDivRect.width;
57
- var iContentDivRectWidth = oCellDivRect.width;
58
- var iScrollDivRectHeight = oScrollDivRect.height;
59
- var iContentDivRectHeight = oCellDivRect.height;
60
-
61
- // horizontal
62
- if (iContentDivRectWidth < iScrollDivRectWidth) {
63
- if (oCellDivRect.end > oScrollDivRect.end) {
64
- var iOldScrollPos = oCrosstab.getHScrollbar().getScrollPosition();
65
- oCrosstab.scrollHorizontal(iOldScrollPos + oCellDivRect.end - oScrollDivRect.end);
66
- bHasScrolled = true;
67
- } else if (oCellDivRect.begin < oScrollDivRect.begin) {
68
- var iOldScrollPos = oCrosstab.getHScrollbar().getScrollPosition();
69
- oCrosstab.scrollHorizontal(iOldScrollPos - (oScrollDivRect.begin - oCellDivRect.begin));
70
- bHasScrolled = true;
71
- }
72
- }
73
- // vertical
74
- if (bUserSelected || bLookAheadMode || bNewLine) {
75
- if (iContentDivRectHeight < iScrollDivRectHeight) {
76
- if (oCellDivRect.bottom > oScrollDivRect.bottom) {
77
- var iOldScrollPos = oCrosstab.getVScrollbar().getScrollPosition();
78
- oCrosstab.scrollVertical(iOldScrollPos + oCellDivRect.bottom - oScrollDivRect.bottom);
79
- bHasScrolled = true;
80
-
81
- } else if (oCellDivRect.top < oScrollDivRect.top) {
82
- var iOldScrollPos = oCrosstab.getVScrollbar().getScrollPosition();
83
- oCrosstab.scrollVertical(iOldScrollPos - (oScrollDivRect.top - oCellDivRect.top));
84
- bHasScrolled = true;
85
- }
86
- } else {
87
- // cell is higher than scrolldiv -> scroll to beginning of cell
88
- var iOldScrollPos = oCrosstab.getVScrollbar().getScrollPosition();
89
- oCrosstab.scrollVertical(iOldScrollPos - (oScrollDivRect.top - oCellDivRect.top));
90
- bHasScrolled = true;
91
- }
92
- }
93
-
94
- return bHasScrolled;
95
- };
96
-
97
- this.moveRowHeaderAreaCellHorizontally = function(oCell, oDomCell) {
98
- var oScrollDivRect = oCrosstab.getUtils().getRtlAwareBoundingClientRect(document.getElementById(oCrosstab.getId() + "_lowerLeft_scrollDiv"));
99
- var oCellDivRect = oCrosstab.getUtils().getRtlAwareBoundingClientRect(oDomCell);
100
-
101
- var iScrollDivRectWidth = oScrollDivRect.width;
102
- var iContentDivRectWidth = oCellDivRect.width;
103
-
104
- var oHeaderHScrollbar = oCrosstab.getHorizontalHeaderScrollbar();
105
-
106
- if (iContentDivRectWidth < iScrollDivRectWidth) {
107
- if (oCellDivRect.end > oScrollDivRect.end) {
108
- var iOldScrollPos = oHeaderHScrollbar.getScrollPosition();
109
- oCrosstab.scrollHeaderHorizontal(iOldScrollPos + oCellDivRect.end - oScrollDivRect.end);
110
- } else if (oCellDivRect.begin < oScrollDivRect.begin) {
111
- var iOldScrollPos = oHeaderHScrollbar.getScrollPosition();
112
- oCrosstab.scrollHeaderHorizontal(iOldScrollPos - (oScrollDivRect.begin - oCellDivRect.begin));
113
- }
114
- }
115
- };
116
-
117
- this.moveRowColCellIntoFocus = function (oCell, oDomCell, oScrollDivRect, bUserSelected, bLookAheadMode, bNewLine) {
118
- var bHasScrolled = false;
119
-
120
- var oCellDivRect = oCrosstab.getUtils().getRtlAwareBoundingClientRect(oDomCell);
121
- var iScrollDivRectWidth = oScrollDivRect.width;
122
- var iContentDivRectWidth = oCellDivRect.width;
123
-
124
- var iRenderStartCol = oCrosstab.getDataArea().getRenderStartCol();
125
- var iRenderStartRow = oCrosstab.getDataArea().getRenderStartRow();
126
-
127
- var iMaxRow = oCrosstab.getDataArea().getRowCnt() - 1;
128
-
129
- // horizontal check: only for data cells. Header cells do not scroll horizontally
130
- if (oCell.getArea().isDataArea() || oCell.getArea().isColHeaderArea()) {
131
- var oHScrollbar = oCrosstab.getHScrollbar();
132
- if (oHScrollbar) {
133
- if (iContentDivRectWidth < iScrollDivRectWidth) {
134
- // check if the cell's content div fits in into the visible area
135
- // horizontal
136
- if (oCellDivRect.end > oScrollDivRect.end) {
137
- oCrosstab.scrollHorizontal(iRenderStartCol + 1);
138
- bHasScrolled = true;
139
- } else if (oCellDivRect.begin < oScrollDivRect.begin) {
140
- oCrosstab.scrollHorizontal(iRenderStartCol - 1);
141
- bHasScrolled = true;
142
- }
143
- }
144
- }
145
- }
146
-
147
- // horizontal header scrolling if relevant
148
- if (oCrosstab.isHeaderHScrolling() === true && oCell.getArea().isRowHeaderArea()) {
149
- this.moveRowHeaderAreaCellHorizontally(oCell, oDomCell);
150
- }
151
-
152
- // vertical correction: only for data and row header cells
153
- if (iRenderStartRow === oCell.getTableRow() - oCrosstab.getTableFixedColHeaderRowCnt()) {
154
- // cell is already at the top. Don't try to shift it in from below.
155
- // this is especially important for cells with such large rowspans that the
156
- // whole cell does never fit into the crosstab viewport.
157
- // This check will be made further down too after the cell was scrolled into focus and
158
- // before the "fine tuning" begins
159
- return bHasScrolled;
160
- }
161
-
162
- if (oCell.getArea().isDataArea() || (oCell.getArea().isRowHeaderArea() && bUserSelected) || bLookAheadMode || bNewLine) {
163
- var oVScrollbar = oCrosstab.getVScrollbar();
164
- if (oVScrollbar) {
165
- var iRenderedRows = oCrosstab.getDataArea().getRenderRowCnt();
166
- var iCurrentVScrollPos = oVScrollbar.getScrollPosition();
167
- var iRow = oCell.getTableRow() - oCrosstab.getTableFixedColHeaderRowCnt();
168
- // cell sticks out at the top
169
- if (iRow < iRenderStartRow) {
170
- oCrosstab.scrollVertical(iRow);
171
- bHasScrolled = true;
172
- } else if (iRow + oCell.getRowSpan() > (iRenderStartRow + iRenderedRows)) {
173
- // cell sticks out at the bottom
174
- var iCellRowsVisible = iRenderStartRow + iRenderedRows - oCell.getRow();
175
- var iScrollDelta = oCell.getRowSpan() - iCellRowsVisible;
176
- var iNewScrollPos = Math.max(0, Math.min(iCurrentVScrollPos + iScrollDelta + 1, iMaxRow));
177
-
178
- if (iScrollDelta !== 0) {
179
- oCrosstab.scrollVertical(iNewScrollPos);
180
- bHasScrolled = true;
181
- }
182
- iRenderStartRow = oCrosstab.getDataArea().getRenderStartRow();
183
- // trying to shift in a cell from the bottom that doesn't fit at the top -> go to top
184
- if (iRenderStartRow > iRow) {
185
- oCrosstab.scrollVertical(iRow);
186
- bHasScrolled = true;
187
- }
188
- }
189
-
190
- iRenderStartRow = oCrosstab.getDataArea().getRenderStartRow();
191
- if (iRenderStartRow === oCell.getTableRow() - oCrosstab.getTableFixedColHeaderRowCnt()) {
192
- // cell was already scrolled to the top. Don't try to shift it in from below.
193
- // this is especially important for cells with such large rowspans that the
194
- // whole cell does never fit into the crosstab viewport
195
- return bHasScrolled;
196
- }
197
-
198
- if (bHasScrolled) {
199
- oDomCell = document.getElementById(oCell.getId());
200
- oCellDivRect = oCrosstab.getUtils().getRtlAwareBoundingClientRect(oDomCell);
201
- iCurrentVScrollPos = oVScrollbar.getScrollPosition();
202
- }
203
- // final correction due to vertical "half cells"
204
- if (oCellDivRect.bottom > oScrollDivRect.bottom) {
205
- while (oCellDivRect.bottom > oScrollDivRect.bottom && iCurrentVScrollPos < iMaxRow) {
206
- oCrosstab.scrollVertical(Math.min(iCurrentVScrollPos + 1, iMaxRow));
207
- iCurrentVScrollPos = oVScrollbar.getScrollPosition();
208
- oDomCell = document.getElementById(oCell.getId());
209
- oCellDivRect = oCrosstab.getUtils().getRtlAwareBoundingClientRect(oDomCell);
210
- bHasScrolled = true;
211
- }
212
- } else if (oCellDivRect.top < oScrollDivRect.top) {
213
- oCrosstab.scrollVertical(Math.max(0, iCurrentVScrollPos - 1));
214
- bHasScrolled = true;
215
- }
216
- }
217
- }
218
-
219
- return bHasScrolled;
220
- };
221
-
222
- this.getCellIntoDom = function (oCell, oOldCell, bNewLine) {
223
- var iNewPos = 0;
224
- if (iNavDy === 0) {
225
- var oHScrollbar = oCrosstab.getHScrollbar();
226
- if (oHScrollbar && !bNewLine) {
227
- if (iNavDx > 0) {
228
- iNewPos = oHScrollbar.getScrollPosition() + oOldCell.getColSpan();
229
- } else if (iNavDx < 0) {
230
- iNewPos = oCell.getTableCol() - oCrosstab.getTableFixedRowHeaderColCnt();
231
- }
232
- oCrosstab.scrollHorizontal(iNewPos);
233
- }
234
- } else if (iNavDx == 0) {
235
- var oVScrollbar = oCrosstab.getVScrollbar();
236
- if (oVScrollbar) {
237
- if (iNavDy > 0) {
238
- iNewPos = oVScrollbar.getScrollPosition() + oOldCell.getRowSpan();
239
- } else {
240
- if (iNavDy < 0) {
241
- iNewPos = oCell.getTableRow() - oCrosstab.getTableFixedColHeaderRowCnt();
242
- }
243
- }
244
- oCrosstab.scrollVertical(iNewPos);
245
- }
246
- }
247
- };
248
-
249
- this.getRowLookAheadCell = function (oCell) {
250
- var oLookAheadCell = null;
251
- var oTempCell = null;
252
- var iMaxCol = 0;
253
- var iMinCol = 0;
254
- if (oCell.getRowSpan() > 1) {
255
- if (iNavDx > 0) {
256
- iMinCol = oCell.getTableCol();
257
- iMaxCol = oCrosstab.getRenderStartCol() + oCrosstab.getRenderColCnt()
258
- + oCrosstab.getTableFixedRowHeaderColCnt();
259
- for (var i = iMinCol; i <= iMaxCol; i++) {
260
- oTempCell = oCrosstab.getTableCellWithSpans(iFocusRow, i);
261
- if (oTempCell.getRowSpan() === 1) {
262
- oLookAheadCell = oTempCell;
263
- break;
264
- } else {
265
- if (oLookAheadCell) {
266
- if (oTempCell.getRowSpan() < oLookAheadCell.getRowSpan()) {
267
- oLookAheadCell = oTempCell;
268
- }
269
- } else {
270
- oLookAheadCell = oTempCell;
271
- }
272
- }
273
- }
274
- }
275
- } else {
276
- oLookAheadCell = oCell;
277
- }
278
- return oLookAheadCell;
279
- };
280
-
281
- this.scrollCellIntoFocus = function (oCell, bUserSelected, bNewLine, oOldCell) {
282
- var oLookAheadCell = oCell;
283
- var bLookAheadMode = false;
284
- if (!bUserSelected && oCell.getArea().isRowHeaderArea() && bNewLine === true && oCrosstab.getVScrollbar() && !oCrosstab.isHeaderHScrolling()) {
285
- // find the cell that is needed for positioning when scrolling. Only during horizontal forward navigation!
286
- if (iNavDx > 0 && iNavDy === 0) {
287
- oLookAheadCell = this.getRowLookAheadCell(oCell);
288
- }
289
- }
290
-
291
- if (oLookAheadCell !== oCell) {
292
- oCell = oLookAheadCell;
293
- bLookAheadMode = true;
294
- }
295
-
296
- var oDomScrollDiv = this.getFocusScrollDiv(oCell);
297
- if (!oDomScrollDiv) {
298
- return false;
299
- }
300
-
301
- var bHasScrolled = false;
302
- var isPixelScrolling = oCrosstab.getPropertyBag().isPixelScrolling();
303
-
304
- var oDomCell = document.getElementById(oCell.getId());
305
- if (!oDomCell && !isPixelScrolling) {
306
- this.getCellIntoDom(oCell, oOldCell, bNewLine);
307
- }
308
-
309
- if (!oDomCell) {
310
- return false;
311
- }
312
- // the bounding client rects
313
- var oScrollDivRect = oCrosstab.getUtils().getRtlAwareBoundingClientRect(oDomScrollDiv);
314
-
315
- if (isPixelScrolling) {
316
- bHasScrolled = this.movePixelCellIntoFocus(oCell, oDomCell, oScrollDivRect, bUserSelected, bLookAheadMode, bNewLine);
317
- } else {
318
- bHasScrolled = this.moveRowColCellIntoFocus(oCell, oDomCell, oScrollDivRect, bUserSelected, bLookAheadMode, bNewLine);
319
- }
320
-
321
- return bHasScrolled;
322
- };
323
-
324
- this.keyboardNavKeyHandler = function (e) {
325
- // check handling the right crosstab
326
- if (iFocusRow > -1 && iFocusCol > -1) {
327
- iNavDx = 0;
328
- iNavDy = 0;
329
- if (e.which === 9) {
330
- // TAB
331
- iNavDx = 1;
332
- } else if (e.which === 38) {
333
- iNavDy = -1;
334
- // ARROW UP
335
- } else if (e.which === 40) {
336
- // ARROW DN
337
- iNavDy = 1;
338
- } else if (e.which === 37) {
339
- // ARROW LEFT
340
- iNavDx = -1;
341
- } else if (e.which === 39) {
342
- // ARROW RIGHT
343
- iNavDx = 1;
344
- }
345
- if (iNavDx === 0 && iNavDy === 0) {
346
- // no changes
347
- return true;
348
- } else {
349
- if (!oCrosstab.hasLoadingPages()) {
350
- that.moveCellFocus();
351
- }
352
- sap.zen.crosstab.utils.Utils.cancelEvent(e);
353
- return false;
354
- }
355
- }
356
- return true;
357
- };
358
-
359
- this.restoreFocusOnCell = function () {
360
- if (!bEnabled) {
361
- return;
362
- }
363
- if (iFocusRow > -1 && iFocusCol > -1 && !oCrosstab.hasLoadingPages()) {
364
- var oRestoreCell = oCrosstab.getTableCellWithSpans(iFocusRow, iFocusCol);
365
- if (oRestoreCell && !oRestoreCell.isLoading()) {
366
- this.disableCell(iOldFocusRow, iOldFocusCol);
367
- this.navigateToCellAction(oRestoreCell, -1, -1);
368
- }
369
- }
370
- };
371
-
372
- function focusNoScroll (oJqElement, oDomScrollDiv) {
373
- var x = oDomScrollDiv.scrollLeft;
374
- var y = oDomScrollDiv.scrollTop;
375
-
376
- oJqElement.focus();
377
-
378
- if (oDomScrollDiv.scrollLeft !== x) {
379
- oDomScrollDiv.scrollLeft = x;
380
- }
381
- if (oDomScrollDiv.scrollTop !== y) {
382
- oDomScrollDiv.scrollTop = y;
383
- }
384
- }
385
-
386
- // Actions to be carried out when cell is reached via keyboard navigation
387
- this.navigateToCellAction = function (oCell, iSelectionStartPos, iSelectionEndPos) {
388
- var oJqCell = null;
389
- var oJqContentDiv = null;
390
- var oDomScrollDiv = null;
391
- var oJqTextContentDiv = null;
392
-
393
- oJqCell = $(document.getElementById(oCell.getId()));
394
- oJqCell.addClass("sapzencrosstab-CellFocus");
395
- oJqContentDiv = $(document.getElementById(oCell.getId() + "_contentDiv"));
396
- oJqTextContentDiv = oJqCell.find("#" + $.sap.encodeCSS(oCell.getId() + "_textContentDiv"));
397
-
398
- if (!oCell.isEntryEnabled()) {
399
- oDomScrollDiv = this.getFocusScrollDiv(oCell);
400
- if (oJqTextContentDiv.length > 0) {
401
- oJqContentDiv = oJqTextContentDiv;
402
- }
403
- if ($.browser.mozilla) {
404
- focusNoScroll(oJqContentDiv, oDomScrollDiv);
405
- }
406
- // Text selection
407
- var oDomContentDiv = oJqContentDiv[0];
408
- if (oDomContentDiv && iSelectionStartPos === -1 && iSelectionEndPos === -1) {
409
- sap.zen.crosstab.utils.Utils.selectTextInElement(oDomContentDiv);
410
- }
411
-
412
- focusNoScroll(oJqContentDiv, oDomScrollDiv);
413
- } else {
414
- oEventHandler.provideInputEnabledCell(oCell, oCell.getId(), oJqContentDiv, iSelectionStartPos, iSelectionEndPos);
415
- }
416
- };
417
-
418
- // Actions to be carried out when cell is moved away from via keyboard navigation
419
- this.navigateFromCellAction = function (oCell) {
420
- var oJqCell = $(document.getElementById(oCell.getId()));
421
- // marked cell may have been scrolled out of displayed area
422
- if (oJqCell.length > 0) {
423
- oJqCell.removeClass("sapzencrosstab-CellFocus");
424
- }
425
- var oInputField = oJqCell.find("input");
426
- oInputField.focusout();
427
- };
428
-
429
- // This is only called when user clicks a cell
430
- this.focusNewCell = function (oCell, iSelectionStartPos, iSelectionEndPos) {
431
- if (!bEnabled) {
432
- return false;
433
- }
434
- if (!oCell) {
435
- return false;
436
- }
437
- var bHasScrolled = false;
438
- if (iFocusRow > -1 && iFocusCol > -1) {
439
- this.disableCell(iFocusRow, iFocusCol);
440
- }
441
-
442
- iFocusRow = oCell.getTableRow();
443
- iFocusCol = oCell.getTableCol();
444
- iOldFocusRow = iFocusRow;
445
- iOldFocusCol = iFocusCol;
446
-
447
- var oVScrollbar = oCrosstab.getVScrollbar();
448
- var oHScrollbar = oCrosstab.getHScrollbar();
449
-
450
- if (oVScrollbar || oHScrollbar) {
451
- // row adjustment
452
- if (oVScrollbar) {
453
- bHasScrolled = this.scrollCellIntoFocus(oCell, true, false, null);
454
- }
455
- }
456
- this.navigateToCellAction(oCell, iSelectionStartPos, iSelectionEndPos);
457
- return bHasScrolled;
458
- };
459
-
460
- this.scrollToCell = function (oCell) {
461
- var iDataRow = oCell.getTableRow() - oCrosstab.getTableFixedColHeaderRowCnt();
462
- var iDataCol = oCell.getTableCol() - oCrosstab.getTableFixedRowHeaderColCnt();
463
-
464
- var bVScroll = iDataRow < oCrosstab.getRenderStartRow()
465
- || iDataRow > (oCrosstab.getRenderStartRow() + oCrosstab.getRenderRowCnt());
466
-
467
- var bHScroll = false;
468
- if (oCell.getArea().isDataArea() || oCell.getArea().isColHeaderArea()) {
469
- bHScroll = iDataCol < oCrosstab.getRenderStartCol()
470
- || iDataCol > (oCrosstab.getRenderStartCol() + oCrosstab.getRenderColCnt());
471
- }
472
- if (oCrosstab.getVScrollbar() && bVScroll) {
473
- oCrosstab.scrollVertical(oCell.getTableRow() - oCrosstab.getTableFixedColHeaderRowCnt());
474
- }
475
- if (oCrosstab.getHScrollbar() && oCell.getArea().isDataArea() && bHScroll) {
476
- oCrosstab.scrollHorizontal(oCell.getTableCol() - oCrosstab.getTableFixedRowHeaderColCnt());
477
- }
478
- };
479
-
480
- this.disableCell = function (iTableRow, iTableCol) {
481
- var oCell = null;
482
- if (iTableRow > -1 && iTableRow > -1) {
483
- oCell = oCrosstab.getTableCellWithSpans(iTableRow, iTableCol);
484
- if (oCell && !oCell.isLoading()) {
485
- // deactivate old cell in any case
486
- this.navigateFromCellAction(oCell);
487
- }
488
- }
489
- };
490
-
491
- this.moveCellFocus = function () {
492
- if (!bEnabled) {
493
- return;
494
- }
495
- // take given oCell when defined, otherwise operate using the deltas.
496
- // For delta handling, a cell must be focused
497
- // ASSUMPTION: we only move in steps with abs(step) = 1, i. e. +1 and -1!
498
- var oNewCell = null;
499
- var iScrollToCol = -1;
500
- var iScrollToRow = -1;
501
-
502
- var iMaxRow = oCrosstab.getTableRowCnt() - 1;
503
- var iMaxCol = oCrosstab.getTableColCnt() - 1;
504
- var iMinRow = oCrosstab.getTableFixedColHeaderRowCnt();
505
-
506
- iOldFocusRow = iFocusRow;
507
- iOldFocusCol = iFocusCol;
508
-
509
- var bNewLine = false;
510
- var bUserSelected = false;
511
-
512
- var oCurrentCell = oCrosstab.getTableCellWithSpans(iOldFocusRow, iOldFocusCol);
513
- if (oCurrentCell && !oCrosstab.hasLoadingPages()) {
514
- // this is needed if somebody focused a cell and then scrolls away from it so it no longer is in the DOM
515
- // When a key is pressed, this cell must be brought back into the DOM and
516
- // navigation again starts from there.
517
- // Hence, do this only if a key event was registered, not a click to a new cell
518
- if (iNavDx !== 0 || iNavDy !== 0) {
519
- this.scrollToCell(oCurrentCell);
520
- }
521
- }
522
-
523
- if (iNavDy < 0) {
524
- if (oCurrentCell.getTableRow() === iMinRow) {
525
- return;
526
- }
527
- } else if (iNavDy > 0) {
528
- if ((oCurrentCell.getTableRow() + oCurrentCell.getRowSpan() - 1) === iMaxRow) {
529
- return;
530
- }
531
- }
532
-
533
- this.disableCell(oCurrentCell.getTableRow(), oCurrentCell.getTableCol());
534
-
535
- if (iFocusRow > -1 && iFocusCol > -1) {
536
- if (iNavDx === 0 && iNavDy === 0) {
537
- return;
538
- }
539
- var iNewFocusRow = iFocusRow;
540
- var iNewFocusCol = iFocusCol;
541
- if (iNavDx !== 0) {
542
- // horizontal movement
543
- if (iNavDx > 0) {
544
- // moving forward
545
- iNewFocusCol = oCurrentCell.getTableCol() + oCurrentCell.getColSpan() + iNavDx - 1;
546
- if (iNewFocusCol > iMaxCol) {
547
- if (iNewFocusRow < iMaxRow) {
548
- iNewFocusRow++;
549
- iNewFocusCol = 0;
550
- iScrollToCol = 0;
551
- bNewLine = true;
552
- } else {
553
- iNewFocusCol = iMaxCol;
554
- iNewFocusRow = iMaxRow;
555
- }
556
- }
557
- } else {
558
- // moving backward
559
- iNewFocusCol = oCurrentCell.getTableCol();
560
- iNewFocusCol--;
561
- if (iNewFocusCol >= 0) {
562
- var oPreviousCellInRow = oCrosstab.getTableCellWithSpans(iNewFocusRow, iNewFocusCol);
563
- if (!oPreviousCellInRow) {
564
- return;
565
- }
566
- if (oPreviousCellInRow.isLoading()) {
567
- return;
568
- }
569
- // get the actual col if the cell had a colSpan
570
- iNewFocusCol = oPreviousCellInRow.getTableCol();
571
- } else {
572
- if (iNewFocusRow > iMinRow) {
573
- iNewFocusRow--;
574
- iNewFocusCol = iMaxCol;
575
- iScrollToCol = iMaxCol;
576
- if (iNewFocusRow < oDataArea.getRenderStartRow() + iMinRow) {
577
- // scrolling is 0-based with regard to data area
578
- iScrollToRow = iNewFocusRow - iMinRow;
579
- }
580
- bNewLine = true;
581
- } else {
582
- iNewFocusCol = 0;
583
- iNewFocusRow = iMinRow;
584
- }
585
- }
586
- }
587
- // when moving horizontally, first check if the cell can be found searching the same row.
588
- oNewCell = oCrosstab.getTableCellWithSpans(iNewFocusRow, iNewFocusCol);
589
- if (oNewCell.isLoading()) {
590
- return;
591
- }
592
- if (oCurrentCell) {
593
- if (oCurrentCell.getArea() !== oNewCell.getArea() && iScrollToCol === -1) {
594
- // transition from header to data area and vice versa when free selection has taken place and no
595
- // other scrollToCol was commanded
596
- iScrollToCol = 0;
597
- }
598
- }
599
- } else if (iNavDy !== 0) {
600
- if (iNavDy > 0) {
601
- // moving down
602
- iNewFocusRow = Math.min(oCurrentCell.getTableRow() + oCurrentCell.getRowSpan() + iNavDy - 1,
603
- iMaxRow);
604
- } else if (iNavDy < 0) {
605
- iNewFocusRow = Math.max(oCurrentCell.getTableRow() + iNavDy, iMinRow);
606
- }
607
- oNewCell = oCrosstab.getTableCellWithSpans(iNewFocusRow, iNewFocusCol);
608
- if (oNewCell.isLoading()) {
609
- return;
610
- }
611
- // vertical movement will handle the same as a click -> position to top of cell
612
- iNewFocusRow = oNewCell.getTableRow();
613
- // handle as user selection
614
- bUserSelected = true;
615
- }
616
- // set the actual values only if we come here.
617
- // may bail out before due to loading cells present
618
- iFocusRow = iNewFocusRow;
619
- iFocusCol = iNewFocusCol;
620
- }
621
-
622
- if (oNewCell) {
623
- // scrolling due to wrap events in horizontal scrolling
624
- if (iScrollToRow >= 0) {
625
- oCrosstab.scrollVertical(iScrollToRow);
626
- }
627
- if (iScrollToCol >= 0) {
628
- oCrosstab.scrollHorizontal(iScrollToCol);
629
- }
630
-
631
- this.scrollCellIntoFocus(oNewCell, bUserSelected, bNewLine, oCurrentCell);
632
- this.navigateToCellAction(oNewCell, -1, -1);
633
- }
634
- };
635
- };
@@ -1,38 +0,0 @@
1
- /*!
2
- * SAPUI5
3
- * (c) Copyright 2009-2024 SAP SE. All rights reserved.
4
- */
5
-
6
- /**
7
- * Initialization Code and shared classes of library sap.zen.crosstab.
8
- */
9
- sap.ui.define([
10
- "sap/ui/core/Core", // sap.ui.getCore()
11
- "sap/ui/core/library" // library dependency
12
- ], function() {
13
-
14
- /**
15
- * Design Studio Crosstab library. NOT INTENDED FOR STANDALONE USAGE.
16
- *
17
- * @namespace
18
- * @name sap.zen.crosstab
19
- * @public
20
- */
21
-
22
- // delegate further initialization of this library to the Core
23
- sap.ui.getCore().initLibrary({
24
- name : "sap.zen.crosstab",
25
- dependencies : ["sap.ui.core"],
26
- types: [],
27
- interfaces: [],
28
- controls: [
29
- "sap.zen.crosstab.Crosstab",
30
- "sap.zen.crosstab.DataCell",
31
- "sap.zen.crosstab.HeaderCell"
32
- ],
33
- elements: [],
34
- version: "1.84.33"
35
- });
36
-
37
- return sap.zen.crosstab;
38
- });
@@ -1,11 +0,0 @@
1
- function TestObject() {
2
- this.name = "TestObject";
3
- };
4
-
5
- TestObject.prototype.getName = function() {
6
- return this.name;
7
- };
8
-
9
- TestObject.prototype.setName = function(iName) {
10
- this.name = iName;
11
- };