@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,580 +0,0 @@
1
- jQuery.sap.declare("sap.zen.crosstab.dragdrop.DragDropUtils");
2
- jQuery.sap.require("sap.zen.crosstab.utils.Utils");
3
-
4
- sap.zen.crosstab.dragdrop.DragDropUtils = function (oCrosstab) {
5
- "use strict"
6
-
7
- var oHeaderInfo = oCrosstab.getHeaderInfo();
8
- var oCurrentJqDragCell;
9
- var oDragDropHoverManager;
10
- var oJqCurrentDragHelper;
11
- var that = this;
12
- var bOnlyMeasuresMode = false;
13
-
14
- this.init = function(p_oDragDropHoverManager) {
15
- oDragDropHoverManager = p_oDragDropHoverManager;
16
- }
17
-
18
- this.setOnlyMeasuresMode = function(pbOnlyMeasuresMode) {
19
- bOnlyMeasuresMode = pbOnlyMeasuresMode;
20
- };
21
-
22
- this.isOnlyMeasuresMode = function() {
23
- return bOnlyMeasuresMode;
24
- };
25
-
26
- this.getDimensionNameDromDragDropPayload = function() {
27
- var oPayload = sap.zen.Dispatcher.instance.getDragDropPayload();
28
- var sDimensionName = null;
29
- var oDragDropInfo = null;
30
-
31
- if (oPayload) {
32
- oDragDropInfo = oPayload.oDragDropInfo;
33
- if (oDragDropInfo) {
34
- sDimensionName = oDragDropInfo.sDimensionName;
35
- }
36
- }
37
- return sDimensionName;
38
- };
39
-
40
- this.getAreaInfo = function(oJqArea, sAxisName) {
41
- var oAreaInfo = {};
42
- var sCellId;
43
-
44
- sCellId = oJqArea.data("xtabcellid");
45
- oAreaInfo.oJqCell = $(document.getElementById(sCellId));
46
- oAreaInfo.oCell = sap.ui.getCore().getControl(oAreaInfo.oJqCell.attr("id"));
47
- oAreaInfo.oDimInfo = oCrosstab.getHeaderInfo().getDimensionInfoByRowCol(oAreaInfo.oCell, sAxisName);
48
- return oAreaInfo;
49
- };
50
-
51
- this.getCellInfoFromDropArea = function(e, sDropAreaSuffix) {
52
- var oDimInfo;
53
- var oCellInfo;
54
- var oCell;
55
- var sDragDimensionName;
56
- var iCol = -1;
57
- var iRow = -1;
58
- var sSplitCellAxisName;
59
- var oAreaInfo;
60
- var oJqDropArea;
61
-
62
- if (sDropAreaSuffix === "droparea_above" || sDropAreaSuffix === "droparea_below") {
63
- sSplitCellAxisName = "COLS";
64
- } else if (sDropAreaSuffix === "droparea_before" || sDropAreaSuffix === "droparea_after") {
65
- sSplitCellAxisName = "ROWS";
66
- }
67
-
68
- oJqDropArea = $(document.getElementById(e.target.id));
69
- oAreaInfo = this.getAreaInfo(oJqDropArea, sSplitCellAxisName);
70
- oDimInfo = oAreaInfo.oDimInfo;
71
- oCell = oAreaInfo.oCell;
72
-
73
- sDragDimensionName = this.getDimensionNameDromDragDropPayload();
74
-
75
- if (oCell && sDragDimensionName && oDimInfo) {
76
- iRow = oCell.getTableRow();
77
- iCol = oCell.getTableCol();
78
- oCellInfo = {};
79
- oCellInfo.sDropDimensionName = oDimInfo.sDimensionName;
80
- oCellInfo.oDropCell = oCell;
81
- oCellInfo.iDropCellTableRow = iRow;
82
- oCellInfo.iDropCellTableCol = iCol;
83
- oCellInfo.bDropCellIsBottomRight = (iRow === oCrosstab.getTableMaxDimHeaderRow() && iCol === oCrosstab.getTableMaxDimHeaderCol());
84
- oCellInfo.sDragDimensionName = sDragDimensionName;
85
- oCellInfo.sDropAxisName = oDimInfo.sAxisName;
86
-
87
- if (oCellInfo.sDropAxisName === "ROWS") {
88
- oCellInfo.iDropAxisIndex = oHeaderInfo.getAbsoluteColIndexForDimension(oCellInfo.sDropDimensionName);
89
- } else if (oCellInfo.sDropAxisName === "COLS") {
90
- oCellInfo.iDropAxisIndex = oHeaderInfo.getAbsoluteRowIndexForDimension(oCellInfo.sDropDimensionName);
91
- }
92
- }
93
- return oCellInfo;
94
- };
95
-
96
- this.isExternalDropOnNonRemovableStructure = function(oDimInfo, oPayload) {
97
- var bResult = false;
98
- if (this.isInterComponentDrag(oPayload)) {
99
- return oDimInfo.bIsStructure && !oDimInfo.bIsRemoveStructureAllowed;
100
- }
101
- return bResult;
102
- };
103
-
104
- this.isInterComponentDrag = function(oPayload) {
105
- return (oPayload.sComponentId !== oCrosstab.getId());
106
- };
107
-
108
- this.checkAcceptCrossComponent = function(oPayload) {
109
- if (!sap.zen.Dispatcher.instance.isInterComponentDragDropEnabled()) {
110
- if (this.isInterComponentDrag(oPayload)) {
111
- return false;
112
- }
113
- }
114
- return true;
115
- };
116
-
117
- this.isDragFromOtherCrosstab = function(oPayload) {
118
- var isXCrosstabDrag;
119
- var oDragSource;
120
-
121
- oDragSource = sap.zen.Dispatcher.instance.getControlForId(oPayload.sComponentId);
122
- isXCrosstabDrag = (oDragSource.zenControlType && oDragSource.zenControlType === "xtable") && oPayload.sComponentId !== oCrosstab.getId();
123
-
124
- return isXCrosstabDrag;
125
- };
126
-
127
- this.getCrosstabHeaderCellFromDraggable = function(oDraggable) {
128
- var oCell = sap.ui.getCore().byId(oDraggable.attr("id"));
129
- if (oCell) {
130
- if (oCell.isHeaderCell && oCell.isHeaderCell()) {
131
- return oCell;
132
- }
133
- }
134
-
135
- return null;
136
- };
137
-
138
- this.getAxisNameFromAreaType = function(sAreaType) {
139
- if (sAreaType === "droparea_above" || sAreaType === "droparea_below") {
140
- return "COLS";
141
- }
142
- return "ROWS";
143
- };
144
-
145
- this.checkDropAreaAccept = function(oDraggable, oDropCell, oPayload, sAreaType) {
146
- var oDraggedCell;
147
- var iDropCellRow = -1;
148
- var iDropCellCol = -1;
149
- var iLookAheadIndex = -1;
150
- var iMaxDimHeaderRow = oCrosstab.getTableMaxDimHeaderRow();
151
- var iMaxDimHeaderCol = oCrosstab.getTableMaxDimHeaderCol();
152
- var oLookAheadDimInfo = null;
153
- var sDraggedDimensionName;
154
- var sDraggedDimensionAxisName;
155
- var oDroppedDimInfo;
156
- var sAxisName;
157
- var bIsBeginArea;
158
-
159
- if (this.isDragFromOtherCrosstab(oPayload) === true) {
160
- return false;
161
- }
162
-
163
- sAxisName = this.getAxisNameFromAreaType(sAreaType);
164
-
165
- iDropCellRow = oDropCell.getTableRow();
166
- iDropCellCol = oDropCell.getTableCol();
167
- oDroppedDimInfo = oHeaderInfo.getDimensionInfoByRowCol(oDropCell, sAxisName);
168
-
169
- sDraggedDimensionAxisName = oPayload.oDragDropInfo.sAxisName;
170
- if (!sDraggedDimensionAxisName || sDraggedDimensionAxisName && sDraggedDimensionAxisName.length === 0) {
171
- // in case of drop from outside of Crosstab (NAV PANEL, no axis may be provided)
172
- sDraggedDimensionAxisName = sAxisName;
173
- }
174
-
175
- if (oPayload.sComponentId === oCrosstab.getId()) {
176
- // identical cell?
177
- oDraggedCell = this.getCrosstabHeaderCellFromDraggable(oDraggable);
178
- if (oDraggedCell.getId() === oDropCell.getId()) {
179
- if (sDraggedDimensionAxisName !== oDroppedDimInfo.sAxisName) {
180
- return true;
181
- }
182
- }
183
- }
184
-
185
- if (oDroppedDimInfo) {
186
- sDraggedDimensionName = oPayload.oDragDropInfo.sDimensionName;
187
- if (sDraggedDimensionName === oDroppedDimInfo.sDimensionName) {
188
- return false;
189
- }
190
-
191
- var bIsBeginArea = (sAreaType === "droparea_above" || sAreaType === "droparea_before");
192
- // not dragging just ahead or above of the same cell
193
- if (!bIsBeginArea && sDraggedDimensionAxisName === oDroppedDimInfo.sAxisName) {
194
- if (oDroppedDimInfo.sAxisName == "ROWS") {
195
- iLookAheadIndex = iDropCellCol + oDropCell.getColSpan();
196
- if (iLookAheadIndex <= iMaxDimHeaderCol) {
197
- oLookAheadDimInfo = oHeaderInfo.getDimensionInfoByCol(iLookAheadIndex);
198
- }
199
- } else if (oDroppedDimInfo.sAxisName === "COLS") {
200
- iLookAheadIndex = iDropCellRow + oDropCell.getRowSpan();
201
- if (iLookAheadIndex <= iMaxDimHeaderRow) {
202
- oLookAheadDimInfo = oHeaderInfo.getDimensionInfoByRow(iLookAheadIndex);
203
- }
204
- }
205
- if (oLookAheadDimInfo) {
206
- if (oLookAheadDimInfo.sDimensionName === sDraggedDimensionName) {
207
- return false;
208
- }
209
- }
210
- }
211
- } else {
212
- return false;
213
- }
214
-
215
- return true;
216
- };
217
-
218
- this.returnFromGenericDimMoveToAreasCheck = function(oJqArea, bAccept) {
219
- oJqArea.data("xtabrevertdrop", !bAccept);
220
- sap.zen.Dispatcher.instance.setDropAccepted(oJqArea.attr("id"), bAccept);
221
- return bAccept;
222
- };
223
-
224
- this.checkAcceptExternalDimension = function(oPayload) {
225
- if (this.isInterComponentDrag(oPayload)) {
226
- if (oCrosstab.getHeaderInfo().isDimensionInCrosstab(oPayload.oDragDropInfo.sDimensionName)) {
227
- return false;
228
- }
229
- }
230
-
231
- return true;
232
- };
233
-
234
- this.checkGenericDimMoveToAreasAccept = function(oJqArea, oDraggable, oDimInfo, oCell, sAreaType, bCheckValidHeaderRect) {
235
- var oPayload;
236
- var oDragDropInfo;
237
- var oJqCurrentDropArea = oDragDropHoverManager.getCurrentDropArea();
238
-
239
- oPayload = sap.zen.Dispatcher.instance.getDragDropPayload();
240
-
241
- if (oCrosstab.isBlocked() || !oPayload || oPayload && oPayload.oDragDropInfo.bIsMemberDrag) {
242
- return this.returnFromGenericDimMoveToAreasCheck(oJqArea, false);
243
- }
244
-
245
- // do not accept dimensions dropped from external if the dimension is already in the Crosstab drilldown
246
- if (!this.checkAcceptExternalDimension(oPayload)) {
247
- return this.returnFromGenericDimMoveToAreasCheck(oJqArea, false);
248
- }
249
-
250
- // do not accept any handle that is outside the header area. This only applies to
251
- // vertical drop areas
252
- if (bCheckValidHeaderRect) {
253
- if (!this.checkDroppableInArea(oJqArea, this.determineValidHeaderRect())) {
254
- return this.returnFromGenericDimMoveToAreasCheck(oJqArea, false);
255
- }
256
- }
257
-
258
- // only accept first drop handle. Crossing area drop handles may occur vertically/horizontally!
259
- if (oJqCurrentDropArea) {
260
- if (oJqArea.attr("id") !== oJqCurrentDropArea.attr("id")) {
261
- return this.returnFromGenericDimMoveToAreasCheck(oJqArea, false);
262
- }
263
- }
264
-
265
- if (this.isInterComponentDrag(oPayload)) {
266
- if (!this.checkAcceptCrossComponent(oPayload)) {
267
- return this.returnFromGenericDimMoveToAreasCheck(oJqArea, false);
268
- }
269
- }
270
- if (!bOnlyMeasuresMode) {
271
- if (!this.checkDropAreaAccept(oDraggable, oCell, oPayload, sAreaType)) {
272
- return this.returnFromGenericDimMoveToAreasCheck(oJqArea, false);
273
- }
274
- }
275
-
276
- return this.returnFromGenericDimMoveToAreasCheck(oJqArea, true);
277
- };
278
-
279
- this.checkMouseInRenderSizeDiv = function(e) {
280
- var bMouseInDiv = false;
281
- var oRenderSizeDivRect;
282
-
283
- oRenderSizeDivRect = oCrosstab.getRenderSizeDiv()[0].getBoundingClientRect();
284
- bMouseInDiv = (e.clientX > oRenderSizeDivRect.left) && (e.clientX < oRenderSizeDivRect.right);
285
- bMouseInDiv = bMouseInDiv && (e.clientY > oRenderSizeDivRect.top && e.clientY < oRenderSizeDivRect.bottom);
286
-
287
- return bMouseInDiv;
288
- };
289
-
290
- // Dealing with header scrolling and hence potentially partly invisible header
291
-
292
- this.determineValidHeaderRect = function() {
293
- var oJqValidArea;
294
- var oValidRect;
295
-
296
- oJqValidArea = oCrosstab.getDimHeaderAreaDiv();
297
- if (oJqValidArea.length === 0) {
298
- oJqValidArea = oCrosstab.getRowHeaderAreaDiv();
299
- }
300
- oValidRect = this.getBoundingClientRect(oJqValidArea[0]);
301
- return oValidRect;
302
- };
303
-
304
- this.checkDroppableInArea = function(oJqDroppable, oValidRect) {
305
- var oRect;
306
-
307
- if (!oCrosstab.isHeaderHScrolling()) {
308
- return true;
309
- }
310
-
311
- oRect = oJqDroppable[0].getBoundingClientRect();
312
-
313
- if ((oRect.right > oValidRect.left && oRect.right < oValidRect.right) ||
314
- (oRect.left < oValidRect.right && oRect.right > oValidRect.right ||
315
- (oRect.left > oValidRect.left && oRect.right < oValidRect.right))) {
316
- return true;
317
- }
318
- return false;
319
- };
320
-
321
- this.setCurrentJqDragCell = function(oJqDragCell) {
322
- oCurrentJqDragCell = oJqDragCell;
323
- };
324
-
325
- this.getCurrentJqDragCell = function() {
326
- return oCurrentJqDragCell;
327
- };
328
-
329
- this.checkDragRevert = function(oDroppable) {
330
- var oCell;
331
- var sId;
332
- var bRevertDrop;
333
- var oRevertPosInfo;
334
- var oPos;
335
- var oRect;
336
-
337
- oRevertPosInfo = $(this).data("oRevertPosInfo");
338
- if (oRevertPosInfo) {
339
- oPos = that.getRevertPosition(oRevertPosInfo);
340
- $(this).data("uiDraggable").originalPosition = oPos;
341
- }
342
-
343
- if (!sap.zen.Dispatcher.instance.isDragDropCanceled()) {
344
- sId = $(oDroppable).data("xtabcellid");
345
- if (sId && sId.length > 0) {
346
- bRevertDrop = $(oDroppable).data("xtabrevertdrop");
347
- return bRevertDrop;
348
- } else {
349
- sId = $(oDroppable).attr("id");
350
- oCell = sap.ui.getCore().getControl(sId);
351
- if (oCell && oCell.isRevertDrop) {
352
- return oCell.isRevertDrop();
353
- }
354
- return false;
355
- }
356
- }
357
- return true;
358
- };
359
-
360
- this.resetDragDrop = function() {
361
- sap.zen.Dispatcher.instance.setDragDropCanceled(false);
362
- oCrosstab.setDragAction(false);
363
- oJqCurrentDragHelper = null;
364
- };
365
-
366
- this.buildDimensionDragDropInfo = function(oDimInfo) {
367
- var oDragDropInfo = {};
368
-
369
- if (oDimInfo.sDimensionName && oDimInfo.sDimensionName.length > 0) {
370
- oDragDropInfo.sDimensionName = oDimInfo.sDimensionName;
371
- }
372
- if (oDimInfo.sAttributeName && oDimInfo.sAttributeName.length > 0) {
373
- oDragDropInfo.sAttributeName = oDimInfo.sAttributeName;
374
- }
375
- if (oDimInfo.sAxisName && oDimInfo.sAxisName.length > 0) {
376
- oDragDropInfo.sAxisName = oDimInfo.sAxisName;
377
- }
378
- if (oDimInfo.bIsMeasureStructure === true) {
379
- oDragDropInfo.bIsMeasureStructure = true;
380
- }
381
- if (oDimInfo.bIsStructure === true) {
382
- oDragDropInfo.bIsStructure = true;
383
- oDragDropInfo.bIsRemoveStructureAllowed = oDimInfo.bIsRemoveStructureAllowed;
384
- }
385
-
386
- oDragDropInfo.bIsMemberDrag = false;
387
- oDragDropInfo.iMemberRow = -1;
388
- oDragDropInfo.iMemberCol = -1;
389
-
390
- return oDragDropInfo;
391
- };
392
-
393
- this.makeDropAreaDroppable = function(oJqArea, sHoverClass, fCheckAccept, fHandleDrop) {
394
- oJqArea.droppable();
395
- oJqArea.droppable("option", "hoverClass", sHoverClass + "Active");
396
- oJqArea.droppable("option", "addClasses", false);
397
- oJqArea.droppable("option", "greedy", true);
398
- oJqArea.droppable("option", "tolerance", "pointer");
399
- oJqArea.droppable("option", "accept", fCheckAccept);
400
- oJqArea.droppable("option", "drop", fHandleDrop);
401
- oJqArea.droppable("option", "over", oDragDropHoverManager.onDropAreaOver);
402
- oJqArea.droppable("option", "out", oDragDropHoverManager.onDropAreaOut);
403
- };
404
-
405
- this.makeCellDroppable = function(oJqCell, fCheckAccept, fHandleDrop) {
406
- oJqCell.droppable();
407
- oJqCell.droppable("option", "addClasses", false);
408
- oJqCell.droppable("option", "greedy", true);
409
- oJqCell.droppable("option", "tolerance", "pointer");
410
- oJqCell.droppable("option", "accept", fCheckAccept);
411
- oJqCell.droppable("option", "drop", fHandleDrop);
412
- oJqCell.droppable("option", "over", oDragDropHoverManager.onDropCellOver);
413
- oJqCell.droppable("option", "out", oDragDropHoverManager.onDropCellOut);
414
- };
415
-
416
- this.makeCellDraggable = function(oJqCell, fHelper) {
417
- oJqCell.draggable();
418
- oJqCell.draggable("option", "cursor", "move");
419
- oJqCell.draggable("option", "cursorAt", {top : -5});
420
- oJqCell.draggable("option", "appendTo", document.getElementById(oCrosstab.getId()));
421
- oJqCell.draggable("option", "addClasses", true);
422
- oJqCell.draggable("option", "helper", fHelper);
423
- oJqCell.draggable("option", "revert", this.checkDragRevert);
424
- oJqCell.draggable("option", "stop", this.resetDragDrop);
425
-
426
- oDragDropHoverManager.provideDraggableCellCursor(oJqCell);
427
-
428
- // Prevent pagebook from swapping pages when D&D in Crosstab
429
- $(oJqCell.draggable()).mousedown(function(e) {
430
- if (sap.zen.crosstab.utils.Utils.isDispatcherAvailable) {
431
- sap.zen.Dispatcher.instance.closeContextMenu();
432
- }
433
- sap.zen.crosstab.utils.Utils.cancelEvent(e);
434
- });
435
- };
436
-
437
- this.getDropAreaTypeFromDropAreaId = function(sId) {
438
- return sId.substring(sId.indexOf("droparea_"));
439
- };
440
-
441
- this.checkDropAllowedOnCrosstabElement = function(e) {
442
- return (!sap.zen.Dispatcher.instance.isDragDropCanceled() && !e.buttons && this.checkMouseInRenderSizeDiv(e));
443
- };
444
-
445
- this.findCell = function(oJqSource) {
446
- var oDiv = oJqSource.closest("div");
447
- var oCellId = oCrosstab.getUtils().getCellIdFromContenDivId(oDiv.attr("id"));
448
- var oCell = sap.ui.getCore().byId(oCellId);
449
- return oCell;
450
- };
451
-
452
- this.getBoundingClientRect = function(oDomElement) {
453
- return oCrosstab.getUtils().getRtlAwareBoundingClientRect(oDomElement);
454
- };
455
-
456
- this.getDeleteDragGhostCellRowHtml = function(iColSpan) {
457
- var sHtml = "<tr><td colspan=" + iColSpan + ">";
458
- sHtml += "<div id=\"" + oCrosstab.getId() + "_dragtrash\" class=\"sapzencrosstab-Trashcan\"></div>"
459
- sHtml += "</td></tr>";
460
- return sHtml;
461
- };
462
-
463
- this.setCurrentDragHelper = function(oJqHelper) {
464
- oJqCurrentDragHelper = oJqHelper;
465
- };
466
-
467
- this.saveRevertCellPosInfo = function(oCell, aCells, sAxisName) {
468
- var oPosInfo = {};
469
- var oJqCell;
470
-
471
- oPosInfo.oCell = oCell;
472
- oPosInfo.aCells = aCells;
473
- oPosInfo.sAxisName = sAxisName;
474
-
475
- oJqCell = $(document.getElementById(oCell.getId()));
476
- oJqCell.data("oRevertPosInfo", oPosInfo);
477
- };
478
-
479
- this.getRevertPosition = function(oRevertPosInfo) {
480
- var oJqCell;
481
- var oJqRevertCell;
482
- var oPos;
483
- var oRect;
484
- var oRevertCell;
485
- var iWidth;
486
- var oCell = oRevertPosInfo.oCell;
487
- var aCells = oRevertPosInfo.aCells;
488
- var sAxisName = oRevertPosInfo.sAxisName;
489
-
490
- // always take "top" from first cell to be correct on both rows and cols axis
491
- oRevertCell = aCells[0];
492
- oJqRevertCell = $(document.getElementById(oRevertCell.getId()));
493
- oPos = oJqRevertCell.position();
494
-
495
- // decide which cell contributes to the "left" coordinate
496
- if (oCrosstab.getPropertyBag().isRtl() || oCell.isSplitPivotCell()) {
497
- if (aCells.length > 1) {
498
- oRevertCell = aCells[aCells.length - 1];
499
- oJqRevertCell = $(document.getElementById(oRevertCell.getId()));
500
- }
501
- }
502
-
503
- // RTL must take scrollbar at other end into account since jQuery revert coordinates always need to be "left" and "top".
504
- // It does not work with specifying "right" in the position object which would make things a lot easier for RTL, hence we need to do some magic
505
- if (oCrosstab.getPropertyBag().isRtl()) {
506
- oPos.left = oJqRevertCell.position().left + (oCrosstab.isVScrolling() ? oCrosstab.getRenderEngine().getMeasuringHelper().getBrowserScrollbarWidth() : 0);
507
- }
508
-
509
- // fine tuning for split cell
510
- if (oRevertCell.isSplitPivotCell() && sAxisName && sAxisName === "COLS") {
511
- oRect = oCrosstab.getUtils().getRtlAwareBoundingClientRect(oJqRevertCell[0]);
512
- if (oCrosstab.getPropertyBag().isRtl()) {
513
- oPos.left = oPos.left - (oJqCurrentDragHelper ? Math.round(oJqCurrentDragHelper.outerWidth() / 2.0) : Math.round(oRect.width / 2.0));
514
- } else {
515
- oPos.left = oPos.left + Math.round(oRect.width / 2.0);
516
- }
517
- }
518
- return oPos;
519
- };
520
-
521
- this.setCursorAt = function(oCell, oJqHelper) {
522
- var iWidth = 0;
523
- var iLeft = 0;
524
- var oJqCrosstabDiv = $(document.getElementById(oCrosstab.getId()));
525
- var oJqCell = $(document.getElementById(oCell.getId()));
526
-
527
- oJqCrosstabDiv.append(oJqHelper);
528
- iWidth = oJqHelper.outerWidth();
529
- oJqHelper.remove();
530
-
531
- iLeft = Math.round(iWidth / 2.0);
532
- oJqCell.draggable("option", "cursorAt", {top: -5, left: iLeft});
533
- };
534
-
535
- this.getAllMemberCellsInRowOrCol = function(oCell) {
536
- var oArea = oCell.getArea();
537
- var i = 0;
538
- var oTmpCell;
539
- var aCells = [];
540
-
541
- if (oArea.isRowHeaderArea()) {
542
- while (i < oArea.getColCnt()) {
543
- oTmpCell = oArea.getCellWithColSpan(oCell.getRow(), i);
544
- if (oTmpCell) {
545
- aCells.push(oTmpCell);
546
- i = i + oTmpCell.getColSpan();
547
- } else {
548
- i++;
549
- }
550
- }
551
- } else if (oArea.isColHeaderArea()) {
552
- while (i < oArea.getRowCnt()) {
553
- oTmpCell = oArea.getCellWithRowSpan(i, oCell.getCol());
554
- if (oTmpCell) {
555
- aCells.push(oTmpCell);
556
- i = i + oTmpCell.getRowSpan();
557
- } else {
558
- i++;
559
- }
560
- }
561
- }
562
- return aCells;
563
- };
564
-
565
- this.getEffectiveCell = function(oCell) {
566
- var oEffectiveCell = oCell;
567
- var oArea = null;
568
-
569
- if (oCell && oCrosstab.getPropertyBag().isRepeatTexts()) {
570
- oArea = oCell.getArea();
571
- if (oArea.isRowHeaderArea()) {
572
- oEffectiveCell = oArea.getCellWithColSpan(oCell.getRow(), oArea.getColCnt() - 1);
573
- } else if (oArea.isColHeaderArea()) {
574
- oEffectiveCell = oArea.getCellWithRowSpan(oArea.getRowCnt() - 1, oCell.getCol());
575
- }
576
- }
577
-
578
- return oEffectiveCell;
579
- };
580
- };