@easyquery/ui 7.2.3 → 7.2.4-beta03

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 (214) hide show
  1. package/dist/browser/eq.community.css.map +1 -1
  2. package/dist/browser/eq.community.js +32587 -34147
  3. package/dist/browser/eq.community.js.map +1 -1
  4. package/dist/browser/eq.community.min.js +1 -9
  5. package/dist/browser/eq.community.min.js.map +1 -1
  6. package/dist/browser/eq.core.css +17 -112
  7. package/dist/browser/eq.core.min.css +3 -10
  8. package/dist/browser/eq.view.css +1 -1
  9. package/dist/browser/eq.view.css.map +1 -1
  10. package/dist/browser/eq.view.min.css +1 -10
  11. package/dist/bundles/easyquery.ui.js +23032 -22870
  12. package/dist/bundles/easyquery.ui.js.map +1 -1
  13. package/dist/bundles/easyquery.ui.min.js +1 -1
  14. package/dist/bundles/easyquery.ui.min.js.map +1 -1
  15. package/dist/lib/dialog/aggr_settings_dialog.d.ts +12 -12
  16. package/dist/lib/dialog/aggr_settings_dialog.js +106 -106
  17. package/dist/lib/dialog/export_dialog.d.ts +7 -7
  18. package/dist/lib/dialog/export_dialog.js +63 -63
  19. package/dist/lib/extensions.d.ts +7 -7
  20. package/dist/lib/extensions.js +13 -13
  21. package/dist/lib/facets/chart_facet.d.ts +21 -21
  22. package/dist/lib/facets/chart_facet.js +240 -238
  23. package/dist/lib/facets/chart_facet.js.map +1 -1
  24. package/dist/lib/facets/datatable_facet.d.ts +15 -15
  25. package/dist/lib/facets/datatable_facet.js +71 -69
  26. package/dist/lib/facets/datatable_facet.js.map +1 -1
  27. package/dist/lib/facets/pivot_table_facet.d.ts +51 -51
  28. package/dist/lib/facets/pivot_table_facet.js +698 -696
  29. package/dist/lib/facets/pivot_table_facet.js.map +1 -1
  30. package/dist/lib/facets/result_facet.d.ts +40 -40
  31. package/dist/lib/facets/result_facet.js +246 -246
  32. package/dist/lib/facets/result_facet.js.map +1 -1
  33. package/dist/lib/i18n/text_resources.d.ts +1 -1
  34. package/dist/lib/i18n/text_resources.js +260 -259
  35. package/dist/lib/i18n/text_resources.js.map +1 -1
  36. package/dist/lib/public_api.d.ts +61 -61
  37. package/dist/lib/public_api.js +92 -90
  38. package/dist/lib/public_api.js.map +1 -1
  39. package/dist/lib/types/facet_type.d.ts +5 -5
  40. package/dist/lib/types/facet_type.js +6 -6
  41. package/dist/lib/types/qp_editable_part.d.ts +15 -15
  42. package/dist/lib/types/qp_editable_part.js +16 -16
  43. package/dist/lib/utils/browser_utils.d.ts +8 -8
  44. package/dist/lib/utils/browser_utils.js +58 -58
  45. package/dist/lib/utils/display_format_parser.d.ts +11 -11
  46. package/dist/lib/utils/display_format_parser.js +61 -61
  47. package/dist/lib/utils/dropdown.d.ts +11 -11
  48. package/dist/lib/utils/dropdown.js +57 -55
  49. package/dist/lib/utils/dropdown.js.map +1 -1
  50. package/dist/lib/utils/popup_menu.d.ts +163 -163
  51. package/dist/lib/utils/popup_menu.js +1259 -1260
  52. package/dist/lib/utils/popup_menu.js.map +1 -1
  53. package/dist/lib/utils/utils.d.ts +9 -9
  54. package/dist/lib/utils/utils.js +46 -46
  55. package/dist/lib/utils/utils.js.map +1 -1
  56. package/dist/lib/views/adv_search_view.d.ts +95 -95
  57. package/dist/lib/views/adv_search_view.js +712 -710
  58. package/dist/lib/views/adv_search_view.js.map +1 -1
  59. package/dist/lib/views/data_filter_view.d.ts +17 -17
  60. package/dist/lib/views/data_filter_view.js +79 -77
  61. package/dist/lib/views/data_filter_view.js.map +1 -1
  62. package/dist/lib/views/html_data_filter_view.d.ts +19 -19
  63. package/dist/lib/views/html_data_filter_view.js +44 -42
  64. package/dist/lib/views/html_data_filter_view.js.map +1 -1
  65. package/dist/lib/views/report_view.d.ts +173 -173
  66. package/dist/lib/views/report_view.js +733 -731
  67. package/dist/lib/views/report_view.js.map +1 -1
  68. package/dist/lib/views/view.d.ts +149 -149
  69. package/dist/lib/views/view.js +538 -538
  70. package/dist/lib/views/view.js.map +1 -1
  71. package/dist/lib/views/view_options.d.ts +113 -113
  72. package/dist/lib/views/view_options.js +1 -0
  73. package/dist/lib/widgets/aggregation_bar.d.ts +30 -30
  74. package/dist/lib/widgets/aggregation_bar.js +145 -143
  75. package/dist/lib/widgets/aggregation_bar.js.map +1 -1
  76. package/dist/lib/widgets/charts/chart_type.d.ts +14 -14
  77. package/dist/lib/widgets/charts/chart_type.js +15 -15
  78. package/dist/lib/widgets/charts/chart_widget.d.ts +92 -92
  79. package/dist/lib/widgets/charts/chart_widget.js +384 -382
  80. package/dist/lib/widgets/charts/chart_widget.js.map +1 -1
  81. package/dist/lib/widgets/charts/chart_widget_chartjs.d.ts +23 -23
  82. package/dist/lib/widgets/charts/chart_widget_chartjs.js +186 -184
  83. package/dist/lib/widgets/charts/chart_widget_chartjs.js.map +1 -1
  84. package/dist/lib/widgets/charts/chart_widget_google.d.ts +23 -23
  85. package/dist/lib/widgets/charts/chart_widget_google.js +165 -163
  86. package/dist/lib/widgets/charts/chart_widget_google.js.map +1 -1
  87. package/dist/lib/widgets/columns_bar.d.ts +64 -64
  88. package/dist/lib/widgets/columns_bar.js +722 -721
  89. package/dist/lib/widgets/columns_bar.js.map +1 -1
  90. package/dist/lib/widgets/columns_panel.d.ts +64 -62
  91. package/dist/lib/widgets/columns_panel.js +739 -721
  92. package/dist/lib/widgets/columns_panel.js.map +1 -1
  93. package/dist/lib/widgets/easy_grid_widget.d.ts +38 -38
  94. package/dist/lib/widgets/easy_grid_widget.js +229 -227
  95. package/dist/lib/widgets/easy_grid_widget.js.map +1 -1
  96. package/dist/lib/widgets/entities_panel.d.ts +49 -49
  97. package/dist/lib/widgets/entities_panel.js +627 -625
  98. package/dist/lib/widgets/entities_panel.js.map +1 -1
  99. package/dist/lib/widgets/eq_result_html_grid.d.ts +32 -32
  100. package/dist/lib/widgets/eq_result_html_grid.js +185 -183
  101. package/dist/lib/widgets/eq_result_html_grid.js.map +1 -1
  102. package/dist/lib/widgets/export_widget.d.ts +10 -10
  103. package/dist/lib/widgets/export_widget.js +57 -55
  104. package/dist/lib/widgets/export_widget.js.map +1 -1
  105. package/dist/lib/widgets/facet_container.d.ts +12 -12
  106. package/dist/lib/widgets/facet_container.js +53 -51
  107. package/dist/lib/widgets/facet_container.js.map +1 -1
  108. package/dist/lib/widgets/filter_bar.d.ts +38 -38
  109. package/dist/lib/widgets/filter_bar.js +259 -257
  110. package/dist/lib/widgets/filter_bar.js.map +1 -1
  111. package/dist/lib/widgets/grid.d.ts +35 -35
  112. package/dist/lib/widgets/grid.js +79 -77
  113. package/dist/lib/widgets/grid.js.map +1 -1
  114. package/dist/lib/widgets/html_content_widget.d.ts +35 -35
  115. package/dist/lib/widgets/html_content_widget.js +71 -69
  116. package/dist/lib/widgets/html_content_widget.js.map +1 -1
  117. package/dist/lib/widgets/locale_widget.d.ts +16 -16
  118. package/dist/lib/widgets/locale_widget.js +79 -77
  119. package/dist/lib/widgets/locale_widget.js.map +1 -1
  120. package/dist/lib/widgets/manage_drilldown_widget.d.ts +18 -18
  121. package/dist/lib/widgets/manage_drilldown_widget.js +154 -152
  122. package/dist/lib/widgets/manage_drilldown_widget.js.map +1 -1
  123. package/dist/lib/widgets/process_widget.d.ts +21 -21
  124. package/dist/lib/widgets/process_widget.js +50 -48
  125. package/dist/lib/widgets/process_widget.js.map +1 -1
  126. package/dist/lib/widgets/query_panel.d.ts +62 -58
  127. package/dist/lib/widgets/query_panel.js +675 -653
  128. package/dist/lib/widgets/query_panel.js.map +1 -1
  129. package/dist/lib/widgets/queryname_widget.d.ts +27 -27
  130. package/dist/lib/widgets/queryname_widget.js +109 -107
  131. package/dist/lib/widgets/queryname_widget.js.map +1 -1
  132. package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.d.ts +54 -54
  133. package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.js +429 -429
  134. package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.js.map +1 -1
  135. package/dist/lib/widgets/renderers/base_element_renderer.d.ts +15 -15
  136. package/dist/lib/widgets/renderers/base_element_renderer.js +63 -63
  137. package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.d.ts +11 -11
  138. package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.js +62 -60
  139. package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.js.map +1 -1
  140. package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.d.ts +53 -53
  141. package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.js +550 -550
  142. package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.js.map +1 -1
  143. package/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.d.ts +9 -9
  144. package/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.js +79 -77
  145. package/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.js.map +1 -1
  146. package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.d.ts +17 -17
  147. package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.js +180 -178
  148. package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.js.map +1 -1
  149. package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.d.ts +72 -72
  150. package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.js +819 -817
  151. package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.js.map +1 -1
  152. package/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.d.ts +22 -18
  153. package/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.js +245 -214
  154. package/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.js.map +1 -1
  155. package/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.d.ts +13 -13
  156. package/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.js +180 -178
  157. package/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.js.map +1 -1
  158. package/dist/lib/widgets/renderers/dropdown_renderer.d.ts +9 -9
  159. package/dist/lib/widgets/renderers/dropdown_renderer.js +42 -40
  160. package/dist/lib/widgets/renderers/dropdown_renderer.js.map +1 -1
  161. package/dist/lib/widgets/renderers/querypanel/addrow_renderer.d.ts +16 -16
  162. package/dist/lib/widgets/renderers/querypanel/addrow_renderer.js +87 -85
  163. package/dist/lib/widgets/renderers/querypanel/addrow_renderer.js.map +1 -1
  164. package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.d.ts +14 -14
  165. package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.js +71 -69
  166. package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.js.map +1 -1
  167. package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.d.ts +7 -7
  168. package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.js +41 -39
  169. package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.js.map +1 -1
  170. package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.d.ts +27 -27
  171. package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.js +231 -229
  172. package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.js.map +1 -1
  173. package/dist/lib/widgets/renderers/querypanel/condition_renderer.d.ts +48 -48
  174. package/dist/lib/widgets/renderers/querypanel/condition_renderer.js +509 -507
  175. package/dist/lib/widgets/renderers/querypanel/condition_renderer.js.map +1 -1
  176. package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.d.ts +13 -13
  177. package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.js +108 -106
  178. package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.js.map +1 -1
  179. package/dist/lib/widgets/renderers/querypanel/expression_renderer.d.ts +28 -28
  180. package/dist/lib/widgets/renderers/querypanel/expression_renderer.js +91 -89
  181. package/dist/lib/widgets/renderers/querypanel/expression_renderer.js.map +1 -1
  182. package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.d.ts +14 -14
  183. package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.js +165 -163
  184. package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.js.map +1 -1
  185. package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.d.ts +35 -35
  186. package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.js +317 -315
  187. package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.js.map +1 -1
  188. package/dist/lib/widgets/renderers/querypanel/operator_renderer.d.ts +19 -19
  189. package/dist/lib/widgets/renderers/querypanel/operator_renderer.js +95 -93
  190. package/dist/lib/widgets/renderers/querypanel/operator_renderer.js.map +1 -1
  191. package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.d.ts +27 -27
  192. package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.js +237 -235
  193. package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.js.map +1 -1
  194. package/dist/lib/widgets/renderers/querypanel/text_renderer.d.ts +11 -11
  195. package/dist/lib/widgets/renderers/querypanel/text_renderer.js +36 -36
  196. package/dist/lib/widgets/renderers/querypanel/text_renderer.js.map +1 -1
  197. package/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.d.ts +26 -26
  198. package/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.js +163 -163
  199. package/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.js.map +1 -1
  200. package/dist/lib/widgets/result_facets_panel.d.ts +64 -64
  201. package/dist/lib/widgets/result_facets_panel.js +503 -501
  202. package/dist/lib/widgets/result_facets_panel.js.map +1 -1
  203. package/dist/lib/widgets/sorting_bar.d.ts +34 -34
  204. package/dist/lib/widgets/sorting_bar.js +330 -328
  205. package/dist/lib/widgets/sorting_bar.js.map +1 -1
  206. package/dist/lib/widgets/statement_panel.d.ts +21 -21
  207. package/dist/lib/widgets/statement_panel.js +60 -58
  208. package/dist/lib/widgets/statement_panel.js.map +1 -1
  209. package/dist/lib/widgets/widget_options.d.ts +433 -429
  210. package/dist/lib/widgets/widget_options.js +1 -0
  211. package/package.json +25 -25
  212. package/webpack.config.js +31 -24
  213. package/dist/browser/eq.community.min.css.map +0 -1
  214. package/dist/browser/eq.view.min.css.map +0 -1
@@ -1,722 +1,723 @@
1
- var __extends = (this && this.__extends) || (function () {
2
- var extendStatics = function (d, b) {
3
- extendStatics = Object.setPrototypeOf ||
4
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
- return extendStatics(d, b);
7
- };
8
- return function (d, b) {
9
- extendStatics(d, b);
10
- function __() { this.constructor = d; }
11
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
- };
13
- })();
14
- import { i18n } from '@easydata/core';
15
- import { utils as dataUtils } from '@easydata/core';
16
- import { DataKind, ExprTag, SortDirection, QueryChangePart, QueryChangeAction, Widget, WidgetGroup } from '@easyquery/core';
17
- import { eqDragManager, DropEffect, getElementAbsolutePos, domel } from '@easydata/ui';
18
- import { PopupMenu } from '../utils/popup_menu';
19
- import { eqCssPrefix } from '../utils/utils';
20
- import { browserUtils } from '../utils/browser_utils';
21
- import { AggrFuncColumnRendererCB } from './renderers/columnsbar/aggrfunc_column_renderer';
22
- import { SimpleColumnRendererCB } from './renderers/columnsbar/simple_column_renderer';
23
- var ColumnsBar = /** @class */ (function (_super) {
24
- __extends(ColumnsBar, _super);
25
- function ColumnsBar(slot, customQuery) {
26
- var _this = _super.call(this, slot) || this;
27
- _this.options = {
28
- isSubQuery: false,
29
- activeColumn: null,
30
- showAddRow: true,
31
- showHeader: true,
32
- showColumnTitles: true,
33
- allowAggrColumns: true,
34
- allowDuplicates: true,
35
- allowCustomExpressions: false,
36
- allowSorting: true,
37
- attrElementFormat: '{entity} {attr}',
38
- titleElementFormat: null,
39
- alwaysShowButtons: false,
40
- accentActiveColumn: true,
41
- allowDragDrop: true,
42
- menuOptions: {
43
- showSearchBoxAfter: 30,
44
- searchBoxAutoFocus: true,
45
- activateOnMouseOver: true,
46
- adjustHeight: true,
47
- itemRenderedCallback: null
48
- },
49
- attrPlacement: 0,
50
- sortEntities: false,
51
- columnRenderedCallback: null,
52
- customExpressionText: 0,
53
- };
54
- _this.landingSlot = domel('div')
55
- .addClass(eqCssPrefix + "-highlight")
56
- .toDOM();
57
- _this.landingIndex = -1;
58
- _this.sortMenuList = [
59
- { id: 'None', text: i18n.getText('CmdNotSorted') },
60
- { id: 'Ascending', text: i18n.getText('CmdAscending') },
61
- { id: 'Descending', text: i18n.getText('CmdDescending') },
62
- { id: '---', text: '---' }
63
- ];
64
- _this.moveMenuList = [
65
- { id: 'MoveTop', text: i18n.getText('CmdMoveToFirst') },
66
- { id: 'MoveUp', text: i18n.getText('CmdMoveToPrev') },
67
- { id: 'MoveDown', text: i18n.getText('CmdMoveToNext') },
68
- { id: 'MoveBottom', text: i18n.getText('CmdMoveToLast') }
69
- ];
70
- domel(_this.slot)
71
- .addClass(_this.cssPrefix + "-panel")
72
- .addClass(browserUtils.getMobileCssClass());
73
- _this.group = WidgetGroup.Query;
74
- _this.customQuery = customQuery;
75
- return _this;
76
- }
77
- Object.defineProperty(ColumnsBar.prototype, "cssPrefix", {
78
- get: function () {
79
- return "eqjs-cb";
80
- },
81
- enumerable: true,
82
- configurable: true
83
- });
84
- ColumnsBar.prototype.getWidgetType = function () {
85
- return 'columnsBar';
86
- };
87
- ColumnsBar.prototype.init = function (context, options) {
88
- var _this = this;
89
- _super.prototype.init.call(this, context, options);
90
- this.setOptions(options);
91
- this.detachQueryObserver();
92
- this.attachQueryObserver();
93
- eqDragManager.removeDropContainer(this.slot);
94
- if (this.options.allowDragDrop) {
95
- eqDragManager.registerDropContainer({
96
- element: this.slot,
97
- scopes: ["entityAttrSort"],
98
- onDragEnter: function (container, ev) {
99
- _this.showLandingSlot(ev.pageX, ev.pageY);
100
- },
101
- onDragOver: function (container, ev) {
102
- _this.showLandingSlot(ev.pageX, ev.pageY);
103
- },
104
- onDragLeave: function (container, ev) {
105
- ev.dropEffect = DropEffect.Forbid;
106
- _this.hideLandingSlot();
107
- },
108
- onDrop: function (container, ev) {
109
- var query = _this.getQuery();
110
- var columns = query.getColumns();
111
- var index = columns.indexOf(ev.data.column);
112
- _this.moveColumnCore(index, _this.landingIndex);
113
- }
114
- });
115
- }
116
- };
117
- ColumnsBar.prototype.attachQueryObserver = function () {
118
- var _this = this;
119
- var query = this.getQuery();
120
- this.queryEventCallbackId = query.addChangedCallback(function (event) {
121
- //if something has changed, and that change is related to columns
122
- var edata = event.data;
123
- if (!edata || (edata.part != QueryChangePart.Columns
124
- && edata.part != QueryChangePart.Aggregation
125
- && edata.part != QueryChangePart.All)) {
126
- return;
127
- }
128
- var focusedBefore = document.activeElement;
129
- var isFocusInside = _this.slot.contains(focusedBefore) || focusedBefore == document.body;
130
- switch (edata.action) {
131
- case QueryChangeAction.Modify: {
132
- var columns = edata.changee;
133
- var modifyColumn_1 = function (column) {
134
- var colEl = _this.columnsBlock.querySelector("div[data-id='" + column.id + "']");
135
- if (colEl) {
136
- var newEl = _this.renderColumn(column, colEl);
137
- if (isFocusInside) {
138
- var focusElem = newEl.querySelector('a');
139
- if (focusElem) {
140
- focusElem.focus();
141
- }
142
- }
143
- }
144
- };
145
- if (Array.isArray(columns)) {
146
- columns.forEach(function (col) { return modifyColumn_1(col); });
147
- }
148
- else {
149
- modifyColumn_1(columns);
150
- }
151
- break;
152
- }
153
- case QueryChangeAction.Add: {
154
- var columns = edata.changee;
155
- var addColumn_1 = function (column) {
156
- var index = query.getColumns().indexOf(column);
157
- _this.addColumnElement(column, index);
158
- };
159
- if (Array.isArray(columns)) {
160
- columns.forEach(function (col) { return addColumn_1(col); });
161
- }
162
- else {
163
- addColumn_1(columns);
164
- }
165
- break;
166
- }
167
- case QueryChangeAction.Delete: {
168
- var columns = edata.changee;
169
- var deleteColumn_1 = function (column) {
170
- var colEl = _this.columnsBlock.querySelector("div[data-id='" + column.id + "']");
171
- if (colEl) {
172
- var next = colEl.nextSibling;
173
- var prev = colEl.previousSibling;
174
- _this.columnsBlock.removeChild(colEl);
175
- if (isFocusInside) {
176
- var focusCond = next || prev || _this.addRowButton;
177
- var focusElem = focusCond.querySelector('a');
178
- if (focusElem) {
179
- focusElem.focus();
180
- }
181
- }
182
- }
183
- };
184
- if (Array.isArray(columns)) {
185
- columns.forEach(function (col) { return deleteColumn_1(col); });
186
- }
187
- else {
188
- deleteColumn_1(columns);
189
- }
190
- break;
191
- }
192
- default:
193
- _this.refresh();
194
- break;
195
- }
196
- });
197
- };
198
- ColumnsBar.prototype.getQuery = function () {
199
- return this.customQuery
200
- ? this.customQuery
201
- : this.getContext().getQuery();
202
- };
203
- ColumnsBar.prototype.destroyCore = function () {
204
- eqDragManager.removeDropContainer(this.slot);
205
- this.detachQueryObserver();
206
- this.slot.innerHTML = '';
207
- };
208
- ColumnsBar.prototype.detachQueryObserver = function () {
209
- if (this.queryEventCallbackId) {
210
- var query = this.getQuery();
211
- query.removeChangedCallback(this.queryEventCallbackId);
212
- }
213
- };
214
- ColumnsBar.prototype.setOptions = function (options) {
215
- this.options = dataUtils.assignDeep(this.options, options);
216
- };
217
- ColumnsBar.prototype.showLandingSlot = function (pageX, pageY) {
218
- var elements = this.columnsBlock.querySelectorAll("[class*=" + this.cssPrefix + "-row]");
219
- var columnSlots = [];
220
- for (var i = 0; i < elements.length; i++) {
221
- if (elements[i].style.display !== 'none') {
222
- columnSlots.push(elements[i]);
223
- }
224
- }
225
- if (columnSlots.length === 0) {
226
- this.landingIndex = 0;
227
- return;
228
- }
229
- var landingPos = getElementAbsolutePos(this.landingSlot);
230
- if (pageX >= landingPos.x && pageX <= landingPos.x + this.landingSlot.offsetWidth
231
- && pageY >= landingPos.y && pageY <= landingPos.y + this.landingSlot.offsetHeight) {
232
- return;
233
- }
234
- var newLandingIndex = this.landingIndex;
235
- for (var i = 0; i < columnSlots.length; i++) {
236
- var colSlot = columnSlots[i];
237
- var absPos = getElementAbsolutePos(colSlot);
238
- var colWidth = colSlot.offsetWidth;
239
- var colHeight = colSlot.offsetHeight;
240
- var paddingWidth = 0.2 * colWidth;
241
- var paddingHeight = 2;
242
- if (pageX >= absPos.x + paddingWidth && pageX <= absPos.x + colWidth - paddingWidth
243
- && pageY >= absPos.y + paddingHeight && pageY <= absPos.y + colHeight - paddingHeight) {
244
- if (pageX > landingPos.x)
245
- newLandingIndex = i + 1;
246
- else
247
- newLandingIndex = i;
248
- break;
249
- }
250
- }
251
- if (newLandingIndex != this.landingIndex || this.landingSlot.parentElement) {
252
- this.landingIndex = newLandingIndex;
253
- if (this.landingIndex <= 0) {
254
- this.columnsBlock.insertBefore(this.landingSlot, columnSlots[0]);
255
- }
256
- if (this.landingIndex < columnSlots.length) {
257
- this.columnsBlock.insertBefore(this.landingSlot, columnSlots[this.landingIndex]);
258
- }
259
- else {
260
- this.columnsBlock.appendChild(this.landingSlot);
261
- }
262
- }
263
- };
264
- ColumnsBar.prototype.hideLandingSlot = function () {
265
- this.landingIndex = -1;
266
- if (this.landingSlot.parentElement) {
267
- this.landingSlot.parentElement.removeChild(this.landingSlot);
268
- }
269
- };
270
- ColumnsBar.prototype.onProcessStartCore = function () {
271
- };
272
- ColumnsBar.prototype.onProcessEndCore = function () {
273
- };
274
- ColumnsBar.prototype.refreshCore = function () {
275
- this.clear();
276
- this.render();
277
- };
278
- ColumnsBar.prototype.clear = function () {
279
- // if (this.addRowButton) {
280
- // this.addRowButton.innerHTML = "";
281
- // this.addRowButton.className = "";
282
- // }
283
- // this.columnsBlock.innerHTML = "";
284
- this.slot.innerHTML = '';
285
- };
286
- ColumnsBar.prototype.renderAddRowButton = function () {
287
- var _this = this;
288
- domel(this.addRowButton)
289
- .addClass(eqCssPrefix + "-addrow", this.cssPrefix + "-addrow", eqCssPrefix + "-addrow-empty")
290
- .addClass(browserUtils.getMobileCssClass())
291
- .title(i18n.getText('CmdClickToAddColumn'))
292
- .addChild('a', function (builder) { return builder
293
- .attr('href', 'javascript:void(0)')
294
- .on('click', function (e) {
295
- e.preventDefault();
296
- _this.showEntitiesMenu({
297
- anchor: e.target,
298
- selectedIds: null,
299
- itemSelectedCallback: function (data, items) {
300
- var attrid = data.id;
301
- _this.addNewColumn(attrid);
302
- return false;
303
- }
304
- });
305
- }); });
306
- if (browserUtils.isMobileMode()) {
307
- domel(this.columnsBlock)
308
- .addChildElement(this.addRowButton);
309
- }
310
- };
311
- ColumnsBar.prototype.render = function () {
312
- var _this = this;
313
- this.createEntitiesMenu();
314
- if (this.options.allowSorting) {
315
- this.createSortMenu();
316
- }
317
- this.createMoveMenu();
318
- this.columnsBlock =
319
- domel('div')
320
- .addClass(this.cssPrefix + "-columns")
321
- .addClass(browserUtils.getMobileCssClass())
322
- .toDOM();
323
- if (this.options.showAddRow) {
324
- this.addRowButton =
325
- domel('div')
326
- .toDOM();
327
- if (browserUtils.isMobileMode()) {
328
- domel(this.columnsBlock)
329
- .addChildElement(this.addRowButton);
330
- }
331
- else {
332
- domel(this.slot)
333
- .addChildElement(this.addRowButton);
334
- }
335
- this.renderAddRowButton();
336
- }
337
- domel(this.slot)
338
- .addChildElement(this.columnsBlock)
339
- .addChildElement(this.renderColumnButtonsBlockMobile());
340
- var query = this.getQuery();
341
- var columns = query.getColumns();
342
- columns.forEach(function (column, index) {
343
- var slot = _this.renderColumn(column);
344
- _this.columnsBlock.appendChild(slot);
345
- });
346
- };
347
- ColumnsBar.prototype.renderColumnButtonsBlockMobile = function () {
348
- var _this = this;
349
- this.columnButtonsBlockMobileArrow = domel('i').toDOM();
350
- this.columnButtonsBlockMobile = domel('div')
351
- .addClass(this.cssPrefix + "-column-buttonsBlock")
352
- .addClass(browserUtils.getMobileCssClass())
353
- .addChildElement(this.columnButtonsBlockMobileArrow)
354
- .hide()
355
- .toDOM();
356
- this.buttonsBlockSortingButton = domel('div', this.columnButtonsBlockMobile)
357
- .addClass(this.cssPrefix + "-column-button", this.cssPrefix + "-column-sortbutton-none")
358
- .toDOM();
359
- domel(this.buttonsBlockSortingButton)
360
- .on('touchstart click', function (ev) {
361
- ev.stopPropagation();
362
- _this.currentColumnRenderer.buttonSortingClickHandler.call(_this.currentColumnRenderer, ev, _this.buttonsBlockSortingButton);
363
- _this.toggleColumnPicked(null);
364
- _this.hideColumnButtonsMobile();
365
- return false;
366
- });
367
- this.buttonsBlockTypeButton = domel('div', this.columnButtonsBlockMobile)
368
- .addClass(this.cssPrefix + "-column-button", this.cssPrefix + "-column-button-type")
369
- .on('touchstart click', function (ev) {
370
- ev.stopPropagation();
371
- _this.currentColumnRenderer.buttonTypeClickHandler.call(_this.currentColumnRenderer, ev);
372
- _this.toggleColumnPicked(null);
373
- _this.hideColumnButtonsMobile();
374
- return false;
375
- })
376
- .toDOM();
377
- this.buttonsBlockFormatButton = domel('div', this.columnButtonsBlockMobile)
378
- .addClass(this.cssPrefix + "-column-button", this.cssPrefix + "-column-button-format")
379
- .on('touchstart click', function (ev) {
380
- ev.stopPropagation();
381
- _this.currentColumnRenderer.buttonFormatClickHandler.call(_this.currentColumnRenderer, ev);
382
- _this.toggleColumnPicked(null);
383
- _this.hideColumnButtonsMobile();
384
- return false;
385
- })
386
- .toDOM();
387
- this.buttonsBlockDeleteButton = domel('div', this.columnButtonsBlockMobile)
388
- .addClass(this.cssPrefix + "-column-button", this.cssPrefix + "-column-button-delete")
389
- .on('touchstart click', function (ev) {
390
- ev.stopPropagation();
391
- _this.currentColumnRenderer.buttonDeleteClickHandler.call(_this.currentColumnRenderer, ev);
392
- _this.toggleColumnPicked(null);
393
- _this.hideColumnButtonsMobile();
394
- return false;
395
- })
396
- .toDOM();
397
- domel('div', this.columnButtonsBlockMobile)
398
- .addClass(this.cssPrefix + "-column-button-close-block")
399
- .on('touchstart click', function () {
400
- _this.toggleColumnPicked(null);
401
- _this.hideColumnButtonsMobile();
402
- });
403
- return this.columnButtonsBlockMobile;
404
- };
405
- ColumnsBar.prototype.showColumnButtonsMobile = function (column, columnRenderer, columnElement) {
406
- this.currentActiveColumn = column;
407
- this.currentColumnRenderer = columnRenderer;
408
- //calculate coordinates
409
- var rect = columnElement.getBoundingClientRect();
410
- var top = columnElement.offsetTop;
411
- var left = columnElement.offsetLeft;
412
- domel(this.columnButtonsBlockMobileArrow)
413
- .setStyle('left', (left + rect.width / 2).toString() + 'px');
414
- if (rect.top > 100) {
415
- domel(this.columnButtonsBlockMobile)
416
- .removeClass('show-below')
417
- .setStyle('top', (top - rect.height).toString() + 'px');
418
- }
419
- else {
420
- domel(this.columnButtonsBlockMobile)
421
- .addClass('show-below')
422
- .setStyle('top', (top + rect.height).toString() + 'px');
423
- }
424
- //show/hide separate buttons
425
- if (column.enabled && !column.isReadOnly()) {
426
- domel(this.buttonsBlockSortingButton).show();
427
- domel(this.buttonsBlockTypeButton).show();
428
- if (columnRenderer.formatButtonIsShown()) {
429
- domel(this.buttonsBlockFormatButton).show();
430
- }
431
- else {
432
- domel(this.buttonsBlockFormatButton).hide();
433
- }
434
- }
435
- else {
436
- domel(this.buttonsBlockSortingButton).hide();
437
- domel(this.buttonsBlockTypeButton).hide();
438
- }
439
- //show
440
- if (column.isReadOnly()) {
441
- domel(this.columnButtonsBlockMobile).hide();
442
- }
443
- else {
444
- domel(this.columnButtonsBlockMobile).show();
445
- }
446
- };
447
- ColumnsBar.prototype.hideColumnButtonsMobile = function () {
448
- domel(this.columnButtonsBlockMobile).hide();
449
- };
450
- ColumnsBar.prototype.renderColumn = function (column, elem) {
451
- var _this = this;
452
- var renderer = this.getColumnRenderer(column, elem);
453
- if (renderer) {
454
- var columnSlot_1 = renderer.render();
455
- renderer.onShowButtonsMobile = function () {
456
- _this.showColumnButtonsMobile(column, renderer, columnSlot_1);
457
- };
458
- renderer.onHideButtonsMobile = function () {
459
- _this.hideColumnButtonsMobile();
460
- };
461
- return columnSlot_1;
462
- }
463
- return null;
464
- };
465
- ColumnsBar.prototype.getColumnRenderer = function (column, slot) {
466
- switch (column.expr.tag) {
467
- case ExprTag.AggregateFunction:
468
- return new AggrFuncColumnRendererCB(this, column, slot);
469
- case ExprTag.CustomSql:
470
- // return new CustomSqlColumnRendererCB(this, column, slot);
471
- case ExprTag.EntityAttribute:
472
- case ExprTag.ParentEntityAttribute:
473
- return new SimpleColumnRendererCB(this, column, slot);
474
- }
475
- return null;
476
- };
477
- ColumnsBar.prototype.addNewColumn = function (attrId, index) {
478
- var _this = this;
479
- var model = this.getContext().getModel();
480
- var query = this.getQuery();
481
- var getColumnByAttrId = function (attrid) {
482
- var attribute = model.getAttributeById(attrid);
483
- if (!attribute) {
484
- return null;
485
- }
486
- if (!attribute.useInResult) {
487
- if (attribute.lookupAttr) {
488
- attrid = attribute.lookupAttr;
489
- attribute = model.getAttributeById(attrid);
490
- if (!attribute || !attribute.useInResult) {
491
- return null;
492
- }
493
- }
494
- else
495
- return null;
496
- }
497
- var column = query.createColumn();
498
- column.caption = _this.getDefaultColumnCaption(attribute);
499
- column.sorting = SortDirection.None;
500
- column.sortIndex = -1;
501
- column.expr.tag = ExprTag.EntityAttribute;
502
- column.expr.kind = DataKind.Attribute;
503
- column.expr.dataType = attribute.dataType;
504
- column.expr.setValue(attrid, true);
505
- column.params.concat(attribute.params);
506
- return column;
507
- };
508
- if (!this.getQuery()) {
509
- return;
510
- }
511
- var colToAdd, col;
512
- if (Array.isArray(attrId)) {
513
- colToAdd = [];
514
- for (var i = 0; i < attrId.length; i++) {
515
- col = getColumnByAttrId(attrId[i]);
516
- if (col) {
517
- colToAdd.push(col);
518
- }
519
- }
520
- }
521
- else
522
- colToAdd = getColumnByAttrId(attrId);
523
- this.addColumn(colToAdd, index);
524
- return colToAdd;
525
- };
526
- ColumnsBar.prototype.toggleColumnPicked = function (column) {
527
- var el;
528
- var isActive;
529
- if (column) {
530
- el = this.columnsBlock.querySelector("div[data-id=" + column.id + "]");
531
- if (el) {
532
- isActive = el.classList.contains('active');
533
- }
534
- }
535
- //clear 'active' in all rows
536
- var rows = this.columnsBlock.querySelectorAll("." + this.cssPrefix + "-row");
537
- for (var i = 0; i < rows.length; i++) {
538
- var row = rows[i];
539
- domel(row)
540
- .removeClass('active')
541
- .data("show-buttons", null);
542
- }
543
- if (el && !isActive) {
544
- domel(el)
545
- .addClass('active')
546
- .data("show-buttons", "");
547
- }
548
- };
549
- ColumnsBar.prototype.addColumn = function (column, index) {
550
- var query = this.getQuery();
551
- if (!query) {
552
- return;
553
- }
554
- if (Array.isArray(column))
555
- column = this.checkColumnsArray(column);
556
- else
557
- column = this.checkColumn(column);
558
- if (!column || (Array.isArray(column) && column.length == 0)) {
559
- return;
560
- }
561
- query.addColumnObj(column, index, self);
562
- query.fireChangedEvent({
563
- part: QueryChangePart.Columns,
564
- action: QueryChangeAction.Add,
565
- changee: column
566
- });
567
- };
568
- //adds one column to the bar on the specified position
569
- ColumnsBar.prototype.addColumnElement = function (column, index) {
570
- var rows = this.columnsBlock.querySelectorAll("[class*=" + this.cssPrefix + "-row]");
571
- var newColBlock = this.renderColumn(column);
572
- if (rows.length > 0) {
573
- if (index < rows.length - 1) {
574
- this.columnsBlock.insertBefore(newColBlock, rows[index]);
575
- }
576
- else {
577
- this.columnsBlock.appendChild(newColBlock);
578
- }
579
- }
580
- else {
581
- this.columnsBlock.appendChild(newColBlock);
582
- }
583
- if (this.options.columnRenderedCallback) {
584
- this.options.columnRenderedCallback(newColBlock);
585
- }
586
- };
587
- ColumnsBar.prototype.checkColumnsArray = function (cols) {
588
- var i = 0, len = cols.length;
589
- var result = [];
590
- for (var i_1 = 0; i_1 < len; i_1++) {
591
- if (this.checkColumn(cols[i_1]))
592
- result.push(cols[i_1]);
593
- }
594
- return result;
595
- };
596
- ColumnsBar.prototype.checkColumn = function (col) {
597
- if (!this.options.allowDuplicates) {
598
- var query = this.getQuery();
599
- var columns = query.getColumns();
600
- var colJson = JSON.stringify(col.expr);
601
- for (var i = 0; i < columns.length; i++) {
602
- var qcolJson = JSON.stringify(columns[i].expr);
603
- if (qcolJson === colJson) {
604
- return null;
605
- }
606
- }
607
- }
608
- return col;
609
- };
610
- ColumnsBar.prototype.getDefaultColumnCaption = function (attr) {
611
- var format = this.options.titleElementFormat || this.options.attrElementFormat;
612
- var model = this.getContext().getModel();
613
- return model.getAttributeText(attr, format);
614
- };
615
- ColumnsBar.prototype.getColumnsBlock = function () {
616
- return this.columnsBlock;
617
- };
618
- ColumnsBar.prototype.showEntitiesMenu = function (menuOptions) {
619
- this.entitiesMenu && this.entitiesMenu.showMenu(menuOptions);
620
- };
621
- ColumnsBar.prototype.createEntitiesMenu = function () {
622
- var model = this.getContext().getModel();
623
- if (!model || model.isEmpty())
624
- return null;
625
- var menuId = this.slot.id;
626
- if (menuId) {
627
- menuId += '-EntitiesMenu';
628
- }
629
- var entitiesList = model.getEntitiesTree({ addUIC: false, addUIR: true, addUIS: false, attrPlacement: this.options.attrPlacement, sortEntities: this.options.sortEntities });
630
- var options = { items: entitiesList, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId };
631
- dataUtils.assign(options, this.options.menuOptions);
632
- this.entitiesMenu = new PopupMenu(options);
633
- };
634
- ColumnsBar.prototype.createSortMenu = function () {
635
- var model = this.getContext().getModel();
636
- if (!model || model.isEmpty())
637
- return null;
638
- var menuId = this.slot.id;
639
- if (menuId) {
640
- menuId += '-SortMenu';
641
- }
642
- var items = this.sortMenuList.concat(this.moveMenuList);
643
- var menuOptions = { "items": items, id: menuId, domWriteItemsId: this.options.domWriteItemsId };
644
- dataUtils.assign(menuOptions, this.options.menuOptions);
645
- menuOptions.searchBoxAlwaysShown = false;
646
- this.sortMenu = new PopupMenu(menuOptions);
647
- };
648
- ColumnsBar.prototype.createMoveMenu = function () {
649
- var model = this.getContext().getModel();
650
- if (!model || model.isEmpty())
651
- return null;
652
- var menuId = this.slot.id;
653
- if (menuId) {
654
- menuId += '-MoveMenu';
655
- }
656
- var items = this.moveMenuList;
657
- var menuOptions = { "items": items, id: menuId, domWriteItemsId: this.options.domWriteItemsId };
658
- dataUtils.assign(menuOptions, this.options.menuOptions);
659
- this.moveMenu = new PopupMenu(menuOptions);
660
- menuOptions.searchBoxAlwaysShown = false;
661
- };
662
- ColumnsBar.prototype.moveColumn = function (column, direction) {
663
- var query = this.getQuery();
664
- var columns = query.getColumns();
665
- var index = columns.indexOf(column);
666
- if (index >= 0) {
667
- switch (direction) {
668
- case 'MoveTop':
669
- if (index == 0) {
670
- return;
671
- }
672
- this.moveColumnCore(index, 0);
673
- break;
674
- case 'MoveUp':
675
- if (index == 0) {
676
- return;
677
- }
678
- this.moveColumnCore(index, index - 1);
679
- break;
680
- case 'MoveDown':
681
- if (index == columns.length - 1) {
682
- return;
683
- }
684
- this.moveColumnCore(index, index + 1);
685
- break;
686
- case 'MoveBottom':
687
- if (index == columns.length - 1) {
688
- return;
689
- }
690
- this.moveColumnCore(index, columns.length - 1);
691
- break;
692
- }
693
- ;
694
- }
695
- };
696
- ColumnsBar.prototype.moveColumnCore = function (index1, index2) {
697
- var query = this.getQuery();
698
- if (!query)
699
- return;
700
- var rows = this.columnsBlock.querySelectorAll("[class*=" + this.cssPrefix + "-row]");
701
- var colToMove = rows[index1];
702
- if (index2 <= 0) {
703
- this.columnsBlock.insertBefore(colToMove, this.columnsBlock[0]);
704
- }
705
- else if (index2 < rows.length) {
706
- this.columnsBlock.insertBefore(colToMove, rows[index2]);
707
- }
708
- else {
709
- this.columnsBlock.appendChild(colToMove);
710
- }
711
- query.moveColumn(index1, index2);
712
- query.fireColumnsChangedEvent(QueryChangeAction.All);
713
- };
714
- ColumnsBar.prototype.areCustomExpressionsAllowed = function () {
715
- var query = this.getQuery();
716
- return query.isEx() && this.options.allowCustomExpressions;
717
- };
718
- ColumnsBar.globalCounter = 0;
719
- return ColumnsBar;
720
- }(Widget));
721
- export { ColumnsBar };
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ import { i18n } from '@easydata/core';
17
+ import { utils as dataUtils } from '@easydata/core';
18
+ import { DataKind, ExprTag, SortDirection, QueryChangePart, QueryChangeAction, Widget, WidgetGroup } from '@easyquery/core';
19
+ import { eqDragManager, DropEffect, getElementAbsolutePos, domel } from '@easydata/ui';
20
+ import { PopupMenu } from '../utils/popup_menu';
21
+ import { eqCssPrefix } from '../utils/utils';
22
+ import { browserUtils } from '../utils/browser_utils';
23
+ import { AggrFuncColumnRendererCB } from './renderers/columnsbar/aggrfunc_column_renderer';
24
+ import { SimpleColumnRendererCB } from './renderers/columnsbar/simple_column_renderer';
25
+ export var ColumnsBar = /** @class */ (function (_super) {
26
+ __extends(ColumnsBar, _super);
27
+ function ColumnsBar(slot, customQuery) {
28
+ var _this = _super.call(this, slot) || this;
29
+ _this.options = {
30
+ isSubQuery: false,
31
+ activeColumn: null,
32
+ showAddRow: true,
33
+ showHeader: true,
34
+ showColumnTitles: true,
35
+ allowAggrColumns: true,
36
+ allowDuplicates: true,
37
+ allowCustomExpressions: false,
38
+ allowSorting: true,
39
+ attrElementFormat: '{entity} {attr}',
40
+ titleElementFormat: null,
41
+ alwaysShowButtons: false,
42
+ accentActiveColumn: true,
43
+ allowDragDrop: true,
44
+ menuOptions: {
45
+ showSearchBoxAfter: 30,
46
+ searchBoxAutoFocus: true,
47
+ activateOnMouseOver: true,
48
+ adjustHeight: true,
49
+ itemRenderedCallback: null
50
+ },
51
+ attrPlacement: 0,
52
+ sortEntities: false,
53
+ columnRenderedCallback: null,
54
+ customExpressionText: 0,
55
+ };
56
+ _this.landingSlot = domel('div')
57
+ .addClass("".concat(eqCssPrefix, "-highlight"))
58
+ .toDOM();
59
+ _this.landingIndex = -1;
60
+ _this.sortMenuList = [
61
+ { id: 'None', text: i18n.getText('CmdNotSorted') },
62
+ { id: 'Ascending', text: i18n.getText('CmdAscending') },
63
+ { id: 'Descending', text: i18n.getText('CmdDescending') },
64
+ { id: '---', text: '---' }
65
+ ];
66
+ _this.moveMenuList = [
67
+ { id: 'MoveTop', text: i18n.getText('CmdMoveToFirst') },
68
+ { id: 'MoveUp', text: i18n.getText('CmdMoveToPrev') },
69
+ { id: 'MoveDown', text: i18n.getText('CmdMoveToNext') },
70
+ { id: 'MoveBottom', text: i18n.getText('CmdMoveToLast') }
71
+ ];
72
+ domel(_this.slot)
73
+ .addClass("".concat(_this.cssPrefix, "-panel"))
74
+ .addClass(browserUtils.getMobileCssClass());
75
+ _this.group = WidgetGroup.Query;
76
+ _this.customQuery = customQuery;
77
+ return _this;
78
+ }
79
+ Object.defineProperty(ColumnsBar.prototype, "cssPrefix", {
80
+ get: function () {
81
+ return "eqjs-cb";
82
+ },
83
+ enumerable: false,
84
+ configurable: true
85
+ });
86
+ ColumnsBar.prototype.getWidgetType = function () {
87
+ return 'columnsBar';
88
+ };
89
+ ColumnsBar.prototype.init = function (context, options) {
90
+ var _this = this;
91
+ _super.prototype.init.call(this, context, options);
92
+ this.setOptions(options);
93
+ this.detachQueryObserver();
94
+ this.attachQueryObserver();
95
+ eqDragManager.removeDropContainer(this.slot);
96
+ if (this.options.allowDragDrop) {
97
+ eqDragManager.registerDropContainer({
98
+ element: this.slot,
99
+ scopes: ["entityAttrSort"],
100
+ onDragEnter: function (container, ev) {
101
+ _this.showLandingSlot(ev.pageX, ev.pageY);
102
+ },
103
+ onDragOver: function (container, ev) {
104
+ _this.showLandingSlot(ev.pageX, ev.pageY);
105
+ },
106
+ onDragLeave: function (container, ev) {
107
+ ev.dropEffect = DropEffect.Forbid;
108
+ _this.hideLandingSlot();
109
+ },
110
+ onDrop: function (container, ev) {
111
+ var query = _this.getQuery();
112
+ var columns = query.getColumns();
113
+ var index = columns.indexOf(ev.data.column);
114
+ _this.moveColumnCore(index, _this.landingIndex);
115
+ }
116
+ });
117
+ }
118
+ };
119
+ ColumnsBar.prototype.attachQueryObserver = function () {
120
+ var _this = this;
121
+ var query = this.getQuery();
122
+ this.queryEventCallbackId = query.addChangedCallback(function (event) {
123
+ //if something has changed, and that change is related to columns
124
+ var edata = event.data;
125
+ if (!edata || (edata.part != QueryChangePart.Columns
126
+ && edata.part != QueryChangePart.Aggregation
127
+ && edata.part != QueryChangePart.All)) {
128
+ return;
129
+ }
130
+ var focusedBefore = document.activeElement;
131
+ var isFocusInside = _this.slot.contains(focusedBefore) || focusedBefore == document.body;
132
+ switch (edata.action) {
133
+ case QueryChangeAction.Modify: {
134
+ var columns = edata.changee;
135
+ var modifyColumn_1 = function (column) {
136
+ var colEl = _this.columnsBlock.querySelector("div[data-id='".concat(column.id, "']"));
137
+ if (colEl) {
138
+ var newEl = _this.renderColumn(column, colEl);
139
+ if (isFocusInside) {
140
+ var focusElem = newEl.querySelector('a');
141
+ if (focusElem) {
142
+ focusElem.focus();
143
+ }
144
+ }
145
+ }
146
+ };
147
+ if (Array.isArray(columns)) {
148
+ columns.forEach(function (col) { return modifyColumn_1(col); });
149
+ }
150
+ else {
151
+ modifyColumn_1(columns);
152
+ }
153
+ break;
154
+ }
155
+ case QueryChangeAction.Add: {
156
+ var columns = edata.changee;
157
+ var addColumn_1 = function (column) {
158
+ var index = query.getColumns().indexOf(column);
159
+ _this.addColumnElement(column, index);
160
+ };
161
+ if (Array.isArray(columns)) {
162
+ columns.forEach(function (col) { return addColumn_1(col); });
163
+ }
164
+ else {
165
+ addColumn_1(columns);
166
+ }
167
+ break;
168
+ }
169
+ case QueryChangeAction.Delete: {
170
+ var columns = edata.changee;
171
+ var deleteColumn_1 = function (column) {
172
+ var colEl = _this.columnsBlock.querySelector("div[data-id='".concat(column.id, "']"));
173
+ if (colEl) {
174
+ var next = colEl.nextSibling;
175
+ var prev = colEl.previousSibling;
176
+ _this.columnsBlock.removeChild(colEl);
177
+ if (isFocusInside) {
178
+ var focusCond = next || prev || _this.addRowButton;
179
+ var focusElem = focusCond.querySelector('a');
180
+ if (focusElem) {
181
+ focusElem.focus();
182
+ }
183
+ }
184
+ }
185
+ };
186
+ if (Array.isArray(columns)) {
187
+ columns.forEach(function (col) { return deleteColumn_1(col); });
188
+ }
189
+ else {
190
+ deleteColumn_1(columns);
191
+ }
192
+ break;
193
+ }
194
+ default:
195
+ _this.refresh();
196
+ break;
197
+ }
198
+ });
199
+ };
200
+ ColumnsBar.prototype.getQuery = function () {
201
+ return this.customQuery
202
+ ? this.customQuery
203
+ : this.getContext().getQuery();
204
+ };
205
+ ColumnsBar.prototype.destroyCore = function () {
206
+ eqDragManager.removeDropContainer(this.slot);
207
+ this.detachQueryObserver();
208
+ this.slot.innerHTML = '';
209
+ };
210
+ ColumnsBar.prototype.detachQueryObserver = function () {
211
+ if (this.queryEventCallbackId) {
212
+ var query = this.getQuery();
213
+ query.removeChangedCallback(this.queryEventCallbackId);
214
+ }
215
+ };
216
+ ColumnsBar.prototype.setOptions = function (options) {
217
+ this.options = dataUtils.assignDeep(this.options, options);
218
+ };
219
+ ColumnsBar.prototype.showLandingSlot = function (pageX, pageY) {
220
+ var elements = this.columnsBlock.querySelectorAll("[class*=".concat(this.cssPrefix, "-row]"));
221
+ var columnSlots = [];
222
+ for (var i = 0; i < elements.length; i++) {
223
+ if (elements[i].style.display !== 'none') {
224
+ columnSlots.push(elements[i]);
225
+ }
226
+ }
227
+ if (columnSlots.length === 0) {
228
+ this.landingIndex = 0;
229
+ return;
230
+ }
231
+ var landingPos = getElementAbsolutePos(this.landingSlot);
232
+ if (pageX >= landingPos.x && pageX <= landingPos.x + this.landingSlot.offsetWidth
233
+ && pageY >= landingPos.y && pageY <= landingPos.y + this.landingSlot.offsetHeight) {
234
+ return;
235
+ }
236
+ var newLandingIndex = this.landingIndex;
237
+ for (var i = 0; i < columnSlots.length; i++) {
238
+ var colSlot = columnSlots[i];
239
+ var absPos = getElementAbsolutePos(colSlot);
240
+ var colWidth = colSlot.offsetWidth;
241
+ var colHeight = colSlot.offsetHeight;
242
+ var paddingWidth = 0.2 * colWidth;
243
+ var paddingHeight = 2;
244
+ if (pageX >= absPos.x + paddingWidth && pageX <= absPos.x + colWidth - paddingWidth
245
+ && pageY >= absPos.y + paddingHeight && pageY <= absPos.y + colHeight - paddingHeight) {
246
+ if (pageX > landingPos.x)
247
+ newLandingIndex = i + 1;
248
+ else
249
+ newLandingIndex = i;
250
+ break;
251
+ }
252
+ }
253
+ if (newLandingIndex != this.landingIndex || this.landingSlot.parentElement) {
254
+ this.landingIndex = newLandingIndex;
255
+ if (this.landingIndex <= 0) {
256
+ this.columnsBlock.insertBefore(this.landingSlot, columnSlots[0]);
257
+ }
258
+ if (this.landingIndex < columnSlots.length) {
259
+ this.columnsBlock.insertBefore(this.landingSlot, columnSlots[this.landingIndex]);
260
+ }
261
+ else {
262
+ this.columnsBlock.appendChild(this.landingSlot);
263
+ }
264
+ }
265
+ };
266
+ ColumnsBar.prototype.hideLandingSlot = function () {
267
+ this.landingIndex = -1;
268
+ if (this.landingSlot.parentElement) {
269
+ this.landingSlot.parentElement.removeChild(this.landingSlot);
270
+ }
271
+ };
272
+ ColumnsBar.prototype.onProcessStartCore = function () {
273
+ };
274
+ ColumnsBar.prototype.onProcessEndCore = function () {
275
+ };
276
+ ColumnsBar.prototype.refreshCore = function () {
277
+ this.clear();
278
+ this.render();
279
+ };
280
+ ColumnsBar.prototype.clear = function () {
281
+ // if (this.addRowButton) {
282
+ // this.addRowButton.innerHTML = "";
283
+ // this.addRowButton.className = "";
284
+ // }
285
+ // this.columnsBlock.innerHTML = "";
286
+ this.slot.innerHTML = '';
287
+ };
288
+ ColumnsBar.prototype.renderAddRowButton = function () {
289
+ var _this = this;
290
+ domel(this.addRowButton)
291
+ .addClass("".concat(eqCssPrefix, "-addrow"), "".concat(this.cssPrefix, "-addrow"), "".concat(eqCssPrefix, "-addrow-empty"))
292
+ .addClass(browserUtils.getMobileCssClass())
293
+ .title(i18n.getText('CmdClickToAddColumn'))
294
+ .addChild('a', function (builder) { return builder
295
+ .attr('href', 'javascript:void(0)')
296
+ .on('click', function (e) {
297
+ e.preventDefault();
298
+ _this.showEntitiesMenu({
299
+ anchor: e.target,
300
+ selectedIds: null,
301
+ itemSelectedCallback: function (data, items) {
302
+ var attrid = data.id;
303
+ _this.addNewColumn(attrid);
304
+ return false;
305
+ }
306
+ });
307
+ }); });
308
+ if (browserUtils.isMobileMode()) {
309
+ domel(this.columnsBlock)
310
+ .addChildElement(this.addRowButton);
311
+ }
312
+ };
313
+ ColumnsBar.prototype.render = function () {
314
+ var _this = this;
315
+ this.createEntitiesMenu();
316
+ if (this.options.allowSorting) {
317
+ this.createSortMenu();
318
+ }
319
+ this.createMoveMenu();
320
+ this.columnsBlock =
321
+ domel('div')
322
+ .addClass("".concat(this.cssPrefix, "-columns"))
323
+ .addClass(browserUtils.getMobileCssClass())
324
+ .toDOM();
325
+ if (this.options.showAddRow) {
326
+ this.addRowButton =
327
+ domel('div')
328
+ .toDOM();
329
+ if (browserUtils.isMobileMode()) {
330
+ domel(this.columnsBlock)
331
+ .addChildElement(this.addRowButton);
332
+ }
333
+ else {
334
+ domel(this.slot)
335
+ .addChildElement(this.addRowButton);
336
+ }
337
+ this.renderAddRowButton();
338
+ }
339
+ domel(this.slot)
340
+ .addChildElement(this.columnsBlock)
341
+ .addChildElement(this.renderColumnButtonsBlockMobile());
342
+ var query = this.getQuery();
343
+ var columns = query.getColumns();
344
+ columns.forEach(function (column, index) {
345
+ var slot = _this.renderColumn(column);
346
+ _this.columnsBlock.appendChild(slot);
347
+ });
348
+ };
349
+ ColumnsBar.prototype.renderColumnButtonsBlockMobile = function () {
350
+ var _this = this;
351
+ this.columnButtonsBlockMobileArrow = domel('i').toDOM();
352
+ this.columnButtonsBlockMobile = domel('div')
353
+ .addClass("".concat(this.cssPrefix, "-column-buttonsBlock"))
354
+ .addClass(browserUtils.getMobileCssClass())
355
+ .addChildElement(this.columnButtonsBlockMobileArrow)
356
+ .hide()
357
+ .toDOM();
358
+ this.buttonsBlockSortingButton = domel('div', this.columnButtonsBlockMobile)
359
+ .addClass("".concat(this.cssPrefix, "-column-button"), "".concat(this.cssPrefix, "-column-sortbutton-none"))
360
+ .toDOM();
361
+ domel(this.buttonsBlockSortingButton)
362
+ .on('touchstart click', function (ev) {
363
+ ev.stopPropagation();
364
+ _this.currentColumnRenderer.buttonSortingClickHandler.call(_this.currentColumnRenderer, ev, _this.buttonsBlockSortingButton);
365
+ _this.toggleColumnPicked(null);
366
+ _this.hideColumnButtonsMobile();
367
+ return false;
368
+ });
369
+ this.buttonsBlockTypeButton = domel('div', this.columnButtonsBlockMobile)
370
+ .addClass("".concat(this.cssPrefix, "-column-button"), "".concat(this.cssPrefix, "-column-button-type"))
371
+ .on('touchstart click', function (ev) {
372
+ ev.stopPropagation();
373
+ _this.currentColumnRenderer.buttonTypeClickHandler.call(_this.currentColumnRenderer, ev);
374
+ _this.toggleColumnPicked(null);
375
+ _this.hideColumnButtonsMobile();
376
+ return false;
377
+ })
378
+ .toDOM();
379
+ this.buttonsBlockFormatButton = domel('div', this.columnButtonsBlockMobile)
380
+ .addClass("".concat(this.cssPrefix, "-column-button"), "".concat(this.cssPrefix, "-column-button-format"))
381
+ .on('touchstart click', function (ev) {
382
+ ev.stopPropagation();
383
+ _this.currentColumnRenderer.buttonFormatClickHandler.call(_this.currentColumnRenderer, ev);
384
+ _this.toggleColumnPicked(null);
385
+ _this.hideColumnButtonsMobile();
386
+ return false;
387
+ })
388
+ .toDOM();
389
+ this.buttonsBlockDeleteButton = domel('div', this.columnButtonsBlockMobile)
390
+ .addClass("".concat(this.cssPrefix, "-column-button"), "".concat(this.cssPrefix, "-column-button-delete"))
391
+ .on('touchstart click', function (ev) {
392
+ ev.stopPropagation();
393
+ _this.currentColumnRenderer.buttonDeleteClickHandler.call(_this.currentColumnRenderer, ev);
394
+ _this.toggleColumnPicked(null);
395
+ _this.hideColumnButtonsMobile();
396
+ return false;
397
+ })
398
+ .toDOM();
399
+ domel('div', this.columnButtonsBlockMobile)
400
+ .addClass("".concat(this.cssPrefix, "-column-button-close-block"))
401
+ .on('touchstart click', function () {
402
+ _this.toggleColumnPicked(null);
403
+ _this.hideColumnButtonsMobile();
404
+ });
405
+ return this.columnButtonsBlockMobile;
406
+ };
407
+ ColumnsBar.prototype.showColumnButtonsMobile = function (column, columnRenderer, columnElement) {
408
+ this.currentActiveColumn = column;
409
+ this.currentColumnRenderer = columnRenderer;
410
+ //calculate coordinates
411
+ var rect = columnElement.getBoundingClientRect();
412
+ var top = columnElement.offsetTop;
413
+ var left = columnElement.offsetLeft;
414
+ domel(this.columnButtonsBlockMobileArrow)
415
+ .setStyle('left', (left + rect.width / 2).toString() + 'px');
416
+ if (rect.top > 100) {
417
+ domel(this.columnButtonsBlockMobile)
418
+ .removeClass('show-below')
419
+ .setStyle('top', (top - rect.height).toString() + 'px');
420
+ }
421
+ else {
422
+ domel(this.columnButtonsBlockMobile)
423
+ .addClass('show-below')
424
+ .setStyle('top', (top + rect.height).toString() + 'px');
425
+ }
426
+ //show/hide separate buttons
427
+ if (column.enabled && !column.isReadOnly()) {
428
+ domel(this.buttonsBlockSortingButton).show();
429
+ domel(this.buttonsBlockTypeButton).show();
430
+ if (columnRenderer.formatButtonIsShown()) {
431
+ domel(this.buttonsBlockFormatButton).show();
432
+ }
433
+ else {
434
+ domel(this.buttonsBlockFormatButton).hide();
435
+ }
436
+ }
437
+ else {
438
+ domel(this.buttonsBlockSortingButton).hide();
439
+ domel(this.buttonsBlockTypeButton).hide();
440
+ }
441
+ //show
442
+ if (column.isReadOnly()) {
443
+ domel(this.columnButtonsBlockMobile).hide();
444
+ }
445
+ else {
446
+ domel(this.columnButtonsBlockMobile).show();
447
+ }
448
+ };
449
+ ColumnsBar.prototype.hideColumnButtonsMobile = function () {
450
+ domel(this.columnButtonsBlockMobile).hide();
451
+ };
452
+ ColumnsBar.prototype.renderColumn = function (column, elem) {
453
+ var _this = this;
454
+ var renderer = this.getColumnRenderer(column, elem);
455
+ if (renderer) {
456
+ var columnSlot_1 = renderer.render();
457
+ renderer.onShowButtonsMobile = function () {
458
+ _this.showColumnButtonsMobile(column, renderer, columnSlot_1);
459
+ };
460
+ renderer.onHideButtonsMobile = function () {
461
+ _this.hideColumnButtonsMobile();
462
+ };
463
+ return columnSlot_1;
464
+ }
465
+ return null;
466
+ };
467
+ ColumnsBar.prototype.getColumnRenderer = function (column, slot) {
468
+ switch (column.expr.tag) {
469
+ case ExprTag.AggregateFunction:
470
+ return new AggrFuncColumnRendererCB(this, column, slot);
471
+ case ExprTag.CustomSql:
472
+ // return new CustomSqlColumnRendererCB(this, column, slot);
473
+ case ExprTag.EntityAttribute:
474
+ case ExprTag.ParentEntityAttribute:
475
+ return new SimpleColumnRendererCB(this, column, slot);
476
+ }
477
+ return null;
478
+ };
479
+ ColumnsBar.prototype.addNewColumn = function (attrId, index) {
480
+ var _this = this;
481
+ var model = this.getContext().getModel();
482
+ var query = this.getQuery();
483
+ var getColumnByAttrId = function (attrid) {
484
+ var attribute = model.getAttributeById(attrid);
485
+ if (!attribute) {
486
+ return null;
487
+ }
488
+ if (!attribute.useInResult) {
489
+ if (attribute.lookupAttr) {
490
+ attrid = attribute.lookupAttr;
491
+ attribute = model.getAttributeById(attrid);
492
+ if (!attribute || !attribute.useInResult) {
493
+ return null;
494
+ }
495
+ }
496
+ else
497
+ return null;
498
+ }
499
+ var column = query.createColumn();
500
+ column.caption = _this.getDefaultColumnCaption(attribute);
501
+ column.sorting = SortDirection.None;
502
+ column.sortIndex = -1;
503
+ column.expr.tag = ExprTag.EntityAttribute;
504
+ column.expr.kind = DataKind.Attribute;
505
+ column.expr.dataType = attribute.dataType;
506
+ column.expr.setValue(attrid, true);
507
+ column.params.concat(attribute.params);
508
+ return column;
509
+ };
510
+ if (!this.getQuery()) {
511
+ return;
512
+ }
513
+ var colToAdd, col;
514
+ if (Array.isArray(attrId)) {
515
+ colToAdd = [];
516
+ for (var i = 0; i < attrId.length; i++) {
517
+ col = getColumnByAttrId(attrId[i]);
518
+ if (col) {
519
+ colToAdd.push(col);
520
+ }
521
+ }
522
+ }
523
+ else
524
+ colToAdd = getColumnByAttrId(attrId);
525
+ this.addColumn(colToAdd, index);
526
+ return colToAdd;
527
+ };
528
+ ColumnsBar.prototype.toggleColumnPicked = function (column) {
529
+ var el;
530
+ var isActive;
531
+ if (column) {
532
+ el = this.columnsBlock.querySelector("div[data-id=".concat(column.id, "]"));
533
+ if (el) {
534
+ isActive = el.classList.contains('active');
535
+ }
536
+ }
537
+ //clear 'active' in all rows
538
+ var rows = this.columnsBlock.querySelectorAll(".".concat(this.cssPrefix, "-row"));
539
+ for (var i = 0; i < rows.length; i++) {
540
+ var row = rows[i];
541
+ domel(row)
542
+ .removeClass('active')
543
+ .data("show-buttons", null);
544
+ }
545
+ if (el && !isActive) {
546
+ domel(el)
547
+ .addClass('active')
548
+ .data("show-buttons", "");
549
+ }
550
+ };
551
+ ColumnsBar.prototype.addColumn = function (column, index) {
552
+ var query = this.getQuery();
553
+ if (!query) {
554
+ return;
555
+ }
556
+ if (Array.isArray(column))
557
+ column = this.checkColumnsArray(column);
558
+ else
559
+ column = this.checkColumn(column);
560
+ if (!column || (Array.isArray(column) && column.length == 0)) {
561
+ return;
562
+ }
563
+ query.addColumnObj(column, index, self);
564
+ query.fireChangedEvent({
565
+ part: QueryChangePart.Columns,
566
+ action: QueryChangeAction.Add,
567
+ changee: column
568
+ });
569
+ };
570
+ //adds one column to the bar on the specified position
571
+ ColumnsBar.prototype.addColumnElement = function (column, index) {
572
+ var rows = this.columnsBlock.querySelectorAll("[class*=".concat(this.cssPrefix, "-row]"));
573
+ var newColBlock = this.renderColumn(column);
574
+ if (rows.length > 0) {
575
+ if (index < rows.length - 1) {
576
+ this.columnsBlock.insertBefore(newColBlock, rows[index]);
577
+ }
578
+ else {
579
+ this.columnsBlock.appendChild(newColBlock);
580
+ }
581
+ }
582
+ else {
583
+ this.columnsBlock.appendChild(newColBlock);
584
+ }
585
+ if (this.options.columnRenderedCallback) {
586
+ this.options.columnRenderedCallback(newColBlock);
587
+ }
588
+ };
589
+ ColumnsBar.prototype.checkColumnsArray = function (cols) {
590
+ var i = 0, len = cols.length;
591
+ var result = [];
592
+ for (var i_1 = 0; i_1 < len; i_1++) {
593
+ if (this.checkColumn(cols[i_1]))
594
+ result.push(cols[i_1]);
595
+ }
596
+ return result;
597
+ };
598
+ ColumnsBar.prototype.checkColumn = function (col) {
599
+ if (!this.options.allowDuplicates) {
600
+ var query = this.getQuery();
601
+ var columns = query.getColumns();
602
+ var colJson = JSON.stringify(col.expr);
603
+ for (var i = 0; i < columns.length; i++) {
604
+ var qcolJson = JSON.stringify(columns[i].expr);
605
+ if (qcolJson === colJson) {
606
+ return null;
607
+ }
608
+ }
609
+ }
610
+ return col;
611
+ };
612
+ ColumnsBar.prototype.getDefaultColumnCaption = function (attr) {
613
+ var format = this.options.titleElementFormat || this.options.attrElementFormat;
614
+ var model = this.getContext().getModel();
615
+ return model.getAttributeText(attr, format);
616
+ };
617
+ ColumnsBar.prototype.getColumnsBlock = function () {
618
+ return this.columnsBlock;
619
+ };
620
+ ColumnsBar.prototype.showEntitiesMenu = function (menuOptions) {
621
+ this.entitiesMenu && this.entitiesMenu.showMenu(menuOptions);
622
+ };
623
+ ColumnsBar.prototype.createEntitiesMenu = function () {
624
+ var model = this.getContext().getModel();
625
+ if (!model || model.isEmpty())
626
+ return null;
627
+ var menuId = this.slot.id;
628
+ if (menuId) {
629
+ menuId += '-EntitiesMenu';
630
+ }
631
+ var entitiesList = model.getEntitiesTree({ addUIC: false, addUIR: true, addUIS: false, attrPlacement: this.options.attrPlacement, sortEntities: this.options.sortEntities });
632
+ var options = { items: entitiesList, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId };
633
+ dataUtils.assign(options, this.options.menuOptions);
634
+ this.entitiesMenu = new PopupMenu(options);
635
+ };
636
+ ColumnsBar.prototype.createSortMenu = function () {
637
+ var model = this.getContext().getModel();
638
+ if (!model || model.isEmpty())
639
+ return null;
640
+ var menuId = this.slot.id;
641
+ if (menuId) {
642
+ menuId += '-SortMenu';
643
+ }
644
+ var items = this.sortMenuList.concat(this.moveMenuList);
645
+ var menuOptions = { "items": items, id: menuId, domWriteItemsId: this.options.domWriteItemsId };
646
+ dataUtils.assign(menuOptions, this.options.menuOptions);
647
+ menuOptions.searchBoxAlwaysShown = false;
648
+ this.sortMenu = new PopupMenu(menuOptions);
649
+ };
650
+ ColumnsBar.prototype.createMoveMenu = function () {
651
+ var model = this.getContext().getModel();
652
+ if (!model || model.isEmpty())
653
+ return null;
654
+ var menuId = this.slot.id;
655
+ if (menuId) {
656
+ menuId += '-MoveMenu';
657
+ }
658
+ var items = this.moveMenuList;
659
+ var menuOptions = { "items": items, id: menuId, domWriteItemsId: this.options.domWriteItemsId };
660
+ dataUtils.assign(menuOptions, this.options.menuOptions);
661
+ this.moveMenu = new PopupMenu(menuOptions);
662
+ menuOptions.searchBoxAlwaysShown = false;
663
+ };
664
+ ColumnsBar.prototype.moveColumn = function (column, direction) {
665
+ var query = this.getQuery();
666
+ var columns = query.getColumns();
667
+ var index = columns.indexOf(column);
668
+ if (index >= 0) {
669
+ switch (direction) {
670
+ case 'MoveTop':
671
+ if (index == 0) {
672
+ return;
673
+ }
674
+ this.moveColumnCore(index, 0);
675
+ break;
676
+ case 'MoveUp':
677
+ if (index == 0) {
678
+ return;
679
+ }
680
+ this.moveColumnCore(index, index - 1);
681
+ break;
682
+ case 'MoveDown':
683
+ if (index == columns.length - 1) {
684
+ return;
685
+ }
686
+ this.moveColumnCore(index, index + 1);
687
+ break;
688
+ case 'MoveBottom':
689
+ if (index == columns.length - 1) {
690
+ return;
691
+ }
692
+ this.moveColumnCore(index, columns.length - 1);
693
+ break;
694
+ }
695
+ ;
696
+ }
697
+ };
698
+ ColumnsBar.prototype.moveColumnCore = function (index1, index2) {
699
+ var query = this.getQuery();
700
+ if (!query)
701
+ return;
702
+ var rows = this.columnsBlock.querySelectorAll("[class*=".concat(this.cssPrefix, "-row]"));
703
+ var colToMove = rows[index1];
704
+ if (index2 <= 0) {
705
+ this.columnsBlock.insertBefore(colToMove, this.columnsBlock[0]);
706
+ }
707
+ else if (index2 < rows.length) {
708
+ this.columnsBlock.insertBefore(colToMove, rows[index2]);
709
+ }
710
+ else {
711
+ this.columnsBlock.appendChild(colToMove);
712
+ }
713
+ query.moveColumn(index1, index2);
714
+ query.fireColumnsChangedEvent(QueryChangeAction.All);
715
+ };
716
+ ColumnsBar.prototype.areCustomExpressionsAllowed = function () {
717
+ var query = this.getQuery();
718
+ return query.isEx() && this.options.allowCustomExpressions;
719
+ };
720
+ ColumnsBar.globalCounter = 0;
721
+ return ColumnsBar;
722
+ }(Widget));
722
723
  //# sourceMappingURL=columns_bar.js.map