@easyquery/ui 7.2.3 → 7.2.4-rc01

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 (215) hide show
  1. package/dist/assets/css/easyquery.css +5 -2
  2. package/dist/browser/eq.community.css.map +1 -1
  3. package/dist/browser/eq.community.js +32224 -33715
  4. package/dist/browser/eq.community.js.map +1 -1
  5. package/dist/browser/eq.community.min.js +1 -9
  6. package/dist/browser/eq.community.min.js.map +1 -1
  7. package/dist/browser/eq.core.css +22 -114
  8. package/dist/browser/eq.core.min.css +3 -10
  9. package/dist/browser/eq.view.css +1 -1
  10. package/dist/browser/eq.view.css.map +1 -1
  11. package/dist/browser/eq.view.min.css +1 -10
  12. package/dist/bundles/easyquery.ui.js +22951 -22870
  13. package/dist/bundles/easyquery.ui.js.map +1 -1
  14. package/dist/bundles/easyquery.ui.min.js +1 -1
  15. package/dist/bundles/easyquery.ui.min.js.map +1 -1
  16. package/dist/lib/dialog/aggr_settings_dialog.d.ts +12 -12
  17. package/dist/lib/dialog/aggr_settings_dialog.js +106 -106
  18. package/dist/lib/dialog/export_dialog.d.ts +7 -7
  19. package/dist/lib/dialog/export_dialog.js +63 -63
  20. package/dist/lib/extensions.d.ts +7 -7
  21. package/dist/lib/extensions.js +13 -13
  22. package/dist/lib/facets/chart_facet.d.ts +21 -21
  23. package/dist/lib/facets/chart_facet.js +240 -238
  24. package/dist/lib/facets/chart_facet.js.map +1 -1
  25. package/dist/lib/facets/datatable_facet.d.ts +15 -15
  26. package/dist/lib/facets/datatable_facet.js +71 -69
  27. package/dist/lib/facets/datatable_facet.js.map +1 -1
  28. package/dist/lib/facets/pivot_table_facet.d.ts +51 -51
  29. package/dist/lib/facets/pivot_table_facet.js +698 -696
  30. package/dist/lib/facets/pivot_table_facet.js.map +1 -1
  31. package/dist/lib/facets/result_facet.d.ts +40 -40
  32. package/dist/lib/facets/result_facet.js +246 -246
  33. package/dist/lib/facets/result_facet.js.map +1 -1
  34. package/dist/lib/i18n/text_resources.d.ts +1 -1
  35. package/dist/lib/i18n/text_resources.js +260 -259
  36. package/dist/lib/i18n/text_resources.js.map +1 -1
  37. package/dist/lib/public_api.d.ts +61 -61
  38. package/dist/lib/public_api.js +92 -90
  39. package/dist/lib/public_api.js.map +1 -1
  40. package/dist/lib/types/facet_type.d.ts +5 -5
  41. package/dist/lib/types/facet_type.js +6 -6
  42. package/dist/lib/types/qp_editable_part.d.ts +15 -15
  43. package/dist/lib/types/qp_editable_part.js +16 -16
  44. package/dist/lib/utils/browser_utils.d.ts +8 -8
  45. package/dist/lib/utils/browser_utils.js +58 -58
  46. package/dist/lib/utils/display_format_parser.d.ts +11 -11
  47. package/dist/lib/utils/display_format_parser.js +61 -61
  48. package/dist/lib/utils/dropdown.d.ts +11 -11
  49. package/dist/lib/utils/dropdown.js +57 -55
  50. package/dist/lib/utils/dropdown.js.map +1 -1
  51. package/dist/lib/utils/popup_menu.d.ts +163 -163
  52. package/dist/lib/utils/popup_menu.js +1259 -1260
  53. package/dist/lib/utils/popup_menu.js.map +1 -1
  54. package/dist/lib/utils/utils.d.ts +9 -9
  55. package/dist/lib/utils/utils.js +46 -46
  56. package/dist/lib/utils/utils.js.map +1 -1
  57. package/dist/lib/views/adv_search_view.d.ts +95 -95
  58. package/dist/lib/views/adv_search_view.js +712 -710
  59. package/dist/lib/views/adv_search_view.js.map +1 -1
  60. package/dist/lib/views/data_filter_view.d.ts +17 -17
  61. package/dist/lib/views/data_filter_view.js +79 -77
  62. package/dist/lib/views/data_filter_view.js.map +1 -1
  63. package/dist/lib/views/html_data_filter_view.d.ts +19 -19
  64. package/dist/lib/views/html_data_filter_view.js +44 -42
  65. package/dist/lib/views/html_data_filter_view.js.map +1 -1
  66. package/dist/lib/views/report_view.d.ts +173 -173
  67. package/dist/lib/views/report_view.js +733 -731
  68. package/dist/lib/views/report_view.js.map +1 -1
  69. package/dist/lib/views/view.d.ts +149 -149
  70. package/dist/lib/views/view.js +538 -538
  71. package/dist/lib/views/view.js.map +1 -1
  72. package/dist/lib/views/view_options.d.ts +113 -113
  73. package/dist/lib/views/view_options.js +1 -0
  74. package/dist/lib/widgets/aggregation_bar.d.ts +30 -30
  75. package/dist/lib/widgets/aggregation_bar.js +145 -143
  76. package/dist/lib/widgets/aggregation_bar.js.map +1 -1
  77. package/dist/lib/widgets/charts/chart_type.d.ts +14 -14
  78. package/dist/lib/widgets/charts/chart_type.js +15 -15
  79. package/dist/lib/widgets/charts/chart_widget.d.ts +92 -92
  80. package/dist/lib/widgets/charts/chart_widget.js +384 -382
  81. package/dist/lib/widgets/charts/chart_widget.js.map +1 -1
  82. package/dist/lib/widgets/charts/chart_widget_chartjs.d.ts +23 -23
  83. package/dist/lib/widgets/charts/chart_widget_chartjs.js +186 -184
  84. package/dist/lib/widgets/charts/chart_widget_chartjs.js.map +1 -1
  85. package/dist/lib/widgets/charts/chart_widget_google.d.ts +23 -23
  86. package/dist/lib/widgets/charts/chart_widget_google.js +165 -163
  87. package/dist/lib/widgets/charts/chart_widget_google.js.map +1 -1
  88. package/dist/lib/widgets/columns_bar.d.ts +64 -64
  89. package/dist/lib/widgets/columns_bar.js +722 -721
  90. package/dist/lib/widgets/columns_bar.js.map +1 -1
  91. package/dist/lib/widgets/columns_panel.d.ts +64 -62
  92. package/dist/lib/widgets/columns_panel.js +740 -721
  93. package/dist/lib/widgets/columns_panel.js.map +1 -1
  94. package/dist/lib/widgets/easy_grid_widget.d.ts +38 -38
  95. package/dist/lib/widgets/easy_grid_widget.js +229 -227
  96. package/dist/lib/widgets/easy_grid_widget.js.map +1 -1
  97. package/dist/lib/widgets/entities_panel.d.ts +49 -49
  98. package/dist/lib/widgets/entities_panel.js +627 -625
  99. package/dist/lib/widgets/entities_panel.js.map +1 -1
  100. package/dist/lib/widgets/eq_result_html_grid.d.ts +32 -32
  101. package/dist/lib/widgets/eq_result_html_grid.js +185 -183
  102. package/dist/lib/widgets/eq_result_html_grid.js.map +1 -1
  103. package/dist/lib/widgets/export_widget.d.ts +10 -10
  104. package/dist/lib/widgets/export_widget.js +57 -55
  105. package/dist/lib/widgets/export_widget.js.map +1 -1
  106. package/dist/lib/widgets/facet_container.d.ts +12 -12
  107. package/dist/lib/widgets/facet_container.js +53 -51
  108. package/dist/lib/widgets/facet_container.js.map +1 -1
  109. package/dist/lib/widgets/filter_bar.d.ts +38 -38
  110. package/dist/lib/widgets/filter_bar.js +259 -257
  111. package/dist/lib/widgets/filter_bar.js.map +1 -1
  112. package/dist/lib/widgets/grid.d.ts +35 -35
  113. package/dist/lib/widgets/grid.js +79 -77
  114. package/dist/lib/widgets/grid.js.map +1 -1
  115. package/dist/lib/widgets/html_content_widget.d.ts +35 -35
  116. package/dist/lib/widgets/html_content_widget.js +71 -69
  117. package/dist/lib/widgets/html_content_widget.js.map +1 -1
  118. package/dist/lib/widgets/locale_widget.d.ts +16 -16
  119. package/dist/lib/widgets/locale_widget.js +79 -77
  120. package/dist/lib/widgets/locale_widget.js.map +1 -1
  121. package/dist/lib/widgets/manage_drilldown_widget.d.ts +18 -18
  122. package/dist/lib/widgets/manage_drilldown_widget.js +154 -152
  123. package/dist/lib/widgets/manage_drilldown_widget.js.map +1 -1
  124. package/dist/lib/widgets/process_widget.d.ts +21 -21
  125. package/dist/lib/widgets/process_widget.js +50 -48
  126. package/dist/lib/widgets/process_widget.js.map +1 -1
  127. package/dist/lib/widgets/query_panel.d.ts +62 -58
  128. package/dist/lib/widgets/query_panel.js +675 -653
  129. package/dist/lib/widgets/query_panel.js.map +1 -1
  130. package/dist/lib/widgets/queryname_widget.d.ts +27 -27
  131. package/dist/lib/widgets/queryname_widget.js +109 -107
  132. package/dist/lib/widgets/queryname_widget.js.map +1 -1
  133. package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.d.ts +54 -54
  134. package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.js +429 -429
  135. package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.js.map +1 -1
  136. package/dist/lib/widgets/renderers/base_element_renderer.d.ts +15 -15
  137. package/dist/lib/widgets/renderers/base_element_renderer.js +63 -63
  138. package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.d.ts +11 -11
  139. package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.js +62 -60
  140. package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.js.map +1 -1
  141. package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.d.ts +53 -53
  142. package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.js +550 -550
  143. package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.js.map +1 -1
  144. package/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.d.ts +9 -9
  145. package/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.js +79 -77
  146. package/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.js.map +1 -1
  147. package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.d.ts +17 -17
  148. package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.js +180 -178
  149. package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.js.map +1 -1
  150. package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.d.ts +74 -72
  151. package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.js +829 -817
  152. package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.js.map +1 -1
  153. package/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.d.ts +21 -18
  154. package/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.js +238 -214
  155. package/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.js.map +1 -1
  156. package/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.d.ts +13 -13
  157. package/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.js +180 -178
  158. package/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.js.map +1 -1
  159. package/dist/lib/widgets/renderers/dropdown_renderer.d.ts +9 -9
  160. package/dist/lib/widgets/renderers/dropdown_renderer.js +42 -40
  161. package/dist/lib/widgets/renderers/dropdown_renderer.js.map +1 -1
  162. package/dist/lib/widgets/renderers/querypanel/addrow_renderer.d.ts +16 -16
  163. package/dist/lib/widgets/renderers/querypanel/addrow_renderer.js +87 -85
  164. package/dist/lib/widgets/renderers/querypanel/addrow_renderer.js.map +1 -1
  165. package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.d.ts +14 -14
  166. package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.js +71 -69
  167. package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.js.map +1 -1
  168. package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.d.ts +7 -7
  169. package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.js +41 -39
  170. package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.js.map +1 -1
  171. package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.d.ts +27 -27
  172. package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.js +231 -229
  173. package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.js.map +1 -1
  174. package/dist/lib/widgets/renderers/querypanel/condition_renderer.d.ts +48 -48
  175. package/dist/lib/widgets/renderers/querypanel/condition_renderer.js +509 -507
  176. package/dist/lib/widgets/renderers/querypanel/condition_renderer.js.map +1 -1
  177. package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.d.ts +13 -13
  178. package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.js +108 -106
  179. package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.js.map +1 -1
  180. package/dist/lib/widgets/renderers/querypanel/expression_renderer.d.ts +28 -28
  181. package/dist/lib/widgets/renderers/querypanel/expression_renderer.js +91 -89
  182. package/dist/lib/widgets/renderers/querypanel/expression_renderer.js.map +1 -1
  183. package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.d.ts +14 -14
  184. package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.js +165 -163
  185. package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.js.map +1 -1
  186. package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.d.ts +35 -35
  187. package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.js +317 -315
  188. package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.js.map +1 -1
  189. package/dist/lib/widgets/renderers/querypanel/operator_renderer.d.ts +19 -19
  190. package/dist/lib/widgets/renderers/querypanel/operator_renderer.js +95 -93
  191. package/dist/lib/widgets/renderers/querypanel/operator_renderer.js.map +1 -1
  192. package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.d.ts +27 -27
  193. package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.js +237 -235
  194. package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.js.map +1 -1
  195. package/dist/lib/widgets/renderers/querypanel/text_renderer.d.ts +11 -11
  196. package/dist/lib/widgets/renderers/querypanel/text_renderer.js +36 -36
  197. package/dist/lib/widgets/renderers/querypanel/text_renderer.js.map +1 -1
  198. package/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.d.ts +26 -26
  199. package/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.js +163 -163
  200. package/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.js.map +1 -1
  201. package/dist/lib/widgets/result_facets_panel.d.ts +64 -64
  202. package/dist/lib/widgets/result_facets_panel.js +503 -501
  203. package/dist/lib/widgets/result_facets_panel.js.map +1 -1
  204. package/dist/lib/widgets/sorting_bar.d.ts +32 -34
  205. package/dist/lib/widgets/sorting_bar.js +245 -328
  206. package/dist/lib/widgets/sorting_bar.js.map +1 -1
  207. package/dist/lib/widgets/statement_panel.d.ts +21 -21
  208. package/dist/lib/widgets/statement_panel.js +60 -58
  209. package/dist/lib/widgets/statement_panel.js.map +1 -1
  210. package/dist/lib/widgets/widget_options.d.ts +433 -429
  211. package/dist/lib/widgets/widget_options.js +1 -0
  212. package/package.json +25 -25
  213. package/webpack.config.js +31 -24
  214. package/dist/browser/eq.community.min.css.map +0 -1
  215. package/dist/browser/eq.view.min.css.map +0 -1
@@ -1,551 +1,551 @@
1
- import { i18n } from '@easydata/core';
2
- import { QueryChangeAction, SortDirection } from '@easyquery/core';
3
- import { eqDragManager, DropEffect, createBrowserEvent, domel } from '@easydata/ui';
4
- import { eqCssPrefix } from '../../../utils/utils';
5
- import { browserUtils } from '../../../utils/browser_utils';
6
- import { PopupMenu } from '../../../utils/popup_menu';
7
- var ColumnRendererCB = /** @class */ (function () {
8
- function ColumnRendererCB(panel, column, slot) {
9
- this.functionMenu = null;
10
- this.formatsMenu = null;
11
- this.isMouseOverBlock = false;
12
- this.keepShowingButtons = false;
13
- this.tapedTwice = false;
14
- this.bar = panel;
15
- this.column = column;
16
- this.element = slot;
17
- }
18
- Object.defineProperty(ColumnRendererCB.prototype, "cssPrefix", {
19
- get: function () {
20
- return 'eqjs-cb';
21
- },
22
- enumerable: true,
23
- configurable: true
24
- });
25
- ColumnRendererCB.prototype.render = function () {
26
- var _this = this;
27
- this.baseAttr = this.getAttribute();
28
- var builder = domel('div');
29
- builder.data('id', this.column.id);
30
- if (this.element) {
31
- //to remove all event listeners
32
- this.element.parentNode
33
- .replaceChild(builder.toDOM(), this.element);
34
- }
35
- this.element = builder.toDOM();
36
- if (this.bar.options.allowDragDrop) {
37
- eqDragManager.registerDraggableItem({
38
- element: this.element,
39
- scope: "entityAttrSort",
40
- beforeDragStart: function () { return _this.element.dispatchEvent(createBrowserEvent('mouseleave')); },
41
- onDragStart: function (ev) {
42
- _this.hideButtons();
43
- _this.element.style.display = 'none';
44
- ev.dropEffect = DropEffect.Allow;
45
- },
46
- onDragEnd: function (ev) {
47
- if (!ev.data.finishedSuccessfully) {
48
- _this.element.removeAttribute('style');
49
- }
50
- },
51
- data: { column: this.column }
52
- });
53
- }
54
- if (!this.column.isReadOnly()) {
55
- this.createFunctionMenu();
56
- this.createFormatsMenu();
57
- }
58
- builder
59
- .addClass(this.getClassesToAdd())
60
- .addClass(browserUtils.getMobileCssClass())
61
- .addChildElement(this.renderCaptionBlock())
62
- .addChildElement(this.renderSortingImage());
63
- if (!browserUtils.isMobileMode()) {
64
- builder
65
- .addChildElement(this.renderButtonsBlock());
66
- }
67
- //start event listeners
68
- builder
69
- .on('mouseenter', this.onMouseEnter.bind(this))
70
- .on('mouseleave', this.onMouseLeave.bind(this));
71
- //end event listeners
72
- if (this.bar.options.accentActiveColumn || browserUtils.isMobileMode()) {
73
- builder
74
- .on('touchstart click', this.onMouseClick.bind(this));
75
- }
76
- return this.element;
77
- };
78
- ColumnRendererCB.prototype.fireColumnChanged = function () {
79
- this.column.fireChangedEvent();
80
- };
81
- ColumnRendererCB.prototype.refresh = function () {
82
- this.render();
83
- };
84
- ColumnRendererCB.prototype.getAttribute = function () {
85
- var model = this.bar.getContext().getModel();
86
- return model.getAttributeByIdSafe(this.column.expr.value);
87
- };
88
- ColumnRendererCB.prototype.isEditable = function () {
89
- return this.column.enabled && !this.column.isReadOnly();
90
- };
91
- ColumnRendererCB.prototype.renderButtonsBlock = function () {
92
- return domel('div', this.element)
93
- .addClass(eqCssPrefix + "-column-buttonsBlock", this.cssPrefix + "-buttonsBlock")
94
- .addChildElement(this.renderSortingButton())
95
- .addChildElement(this.renderColumnTypeButton())
96
- .addChildElement(this.renderColumnFormatButton())
97
- .addChildElement(this.renderDeleteButton())
98
- .toDOM();
99
- };
100
- ColumnRendererCB.prototype.renderCaptionBlock = function () {
101
- var _this = this;
102
- if (!this.column.caption || this.column.caption == '') {
103
- this.column.caption = this.getDefaultCaption();
104
- }
105
- var model = this.column.getModel();
106
- var caption = this.baseAttr !== model.nullAttribute
107
- ? this.column.caption
108
- : model.getAttributeText(model.nullAttribute, '{attr}');
109
- if (!this.isEditable()) {
110
- return domel('div')
111
- .addClass(this.cssPrefix + "-colelement", this.cssPrefix + "-captionelement")
112
- .addClass(browserUtils.getMobileCssClass())
113
- .addChild('div', function (b) { return b
114
- .title(_this.column.caption)
115
- .text(caption)
116
- .attr('tabIndex', '0'); })
117
- .toDOM();
118
- }
119
- var tapHandler = function (ev) {
120
- if (!_this.tapedTwice) {
121
- _this.tapedTwice = true;
122
- setTimeout(function () { _this.tapedTwice = false; }, 300);
123
- }
124
- };
125
- var isFocused = false;
126
- domel(this.element).on('touchstart dblclick', function (ev) {
127
- if (ev instanceof TouchEvent && !_this.tapedTwice) {
128
- tapHandler(ev);
129
- return true;
130
- }
131
- ev.stopPropagation();
132
- isFocused = _this.element.querySelector('a') == document.activeElement;
133
- var inputEl = _this.element.querySelector("." + _this.cssPrefix + "-captionelement input");
134
- var aEl = _this.element.querySelector("." + _this.cssPrefix + "-captionelement a");
135
- if (inputEl) {
136
- inputEl.style.width = _this.element.clientWidth + "px";
137
- aEl.style.display = 'none';
138
- inputEl.style.removeProperty('display');
139
- inputEl.focus();
140
- _this.element.setAttribute(eqDragManager.DRAG_DISABLED_ATTR, '');
141
- }
142
- return false;
143
- }); //TO DO:add localization and input field);
144
- return domel('div')
145
- .addClass(this.cssPrefix + "-colelement", this.cssPrefix + "-captionelement")
146
- .addClass(browserUtils.getMobileCssClass())
147
- .addChild('a', function (builder) { return builder
148
- .attr('href', 'javascript:void(0)')
149
- .title(_this.column.caption)
150
- .text(caption)
151
- .on('keydown', function (e) {
152
- var evt = e;
153
- var isCtrlEnter = (evt.ctrlKey || evt.metaKey) && (evt.keyCode == 13 || evt.keyCode == 10);
154
- if (isCtrlEnter && _this.isColumnActive()) {
155
- var clickEvent = document.createEvent('MouseEvents');
156
- clickEvent.initEvent('dblclick', true, true);
157
- _this.element.dispatchEvent(clickEvent);
158
- evt.stopPropagation();
159
- return false;
160
- }
161
- return true;
162
- }); })
163
- .addChild('input', function (builder) { return builder
164
- .hide()
165
- .value(_this.column.caption)
166
- .on('blur keydown', function (ev) {
167
- var isEndEvent = false;
168
- var save = true;
169
- if (ev instanceof KeyboardEvent) {
170
- // Enter
171
- if (ev.keyCode === 13) {
172
- isEndEvent = true;
173
- //ESC
174
- }
175
- else if (ev.keyCode === 27) {
176
- isEndEvent = true;
177
- save = false;
178
- }
179
- }
180
- else if (ev instanceof FocusEvent) {
181
- isEndEvent = true;
182
- }
183
- if (isEndEvent) {
184
- var inputEl = ev.target;
185
- var aEl = inputEl.parentElement.querySelector('a');
186
- if (aEl) {
187
- aEl.style.removeProperty('display');
188
- inputEl.style.display = 'none';
189
- }
190
- if (save && _this.column.caption !== inputEl.value) {
191
- _this.column.caption = inputEl.value;
192
- _this.fireColumnChanged();
193
- }
194
- else {
195
- inputEl.value = _this.column.caption;
196
- }
197
- _this.element.removeAttribute(eqDragManager.DRAG_DISABLED_ATTR);
198
- if (isFocused) {
199
- _this.element.querySelector('a').focus();
200
- }
201
- }
202
- }); })
203
- .toDOM();
204
- };
205
- ColumnRendererCB.prototype.renderSortingImage = function () {
206
- var _this = this;
207
- var sortButtonCssClass = eqCssPrefix + "-column-sortbutton";
208
- var sortButtonDirectionCssClass = sortButtonCssClass;
209
- switch (this.column.sorting) {
210
- case SortDirection.Ascending:
211
- sortButtonDirectionCssClass = sortButtonCssClass + "-asc";
212
- break;
213
- case SortDirection.Descending:
214
- sortButtonDirectionCssClass = sortButtonCssClass + "-desc";
215
- break;
216
- }
217
- if (this.column.sorting == SortDirection.None) {
218
- return null;
219
- }
220
- else {
221
- return domel('div')
222
- .addClass(this.cssPrefix + "-colelement", this.cssPrefix + "-sortimage-placeholder")
223
- .addClass(browserUtils.getMobileCssClass())
224
- .addChild('div', function (builder) { return builder
225
- .addClass(_this.cssPrefix + "-img-sorting", sortButtonDirectionCssClass)
226
- .title(i18n.getText('ButtonSorting')); })
227
- .toDOM();
228
- }
229
- };
230
- ColumnRendererCB.prototype.buttonSortingClickHandler = function (ev, anchor) {
231
- var _this = this;
232
- ev.stopPropagation();
233
- this.keepShowingButtons = true;
234
- var menu = this.getUIS() ? this.bar.sortMenu || this.bar.moveMenu : this.bar.moveMenu;
235
- menu.showMenu({
236
- anchor: anchor,
237
- selectedIds: null,
238
- itemSelectedCallback: function (data, items) {
239
- var strToSortDirection = function (str) {
240
- if (str == 'None') {
241
- return SortDirection.None;
242
- }
243
- else if (str == "Ascending") {
244
- return SortDirection.Ascending;
245
- }
246
- else if (str == "Descending") {
247
- return SortDirection.Descending;
248
- }
249
- };
250
- if (data.id == 'None' || data.id == "Ascending" || data.id == "Descending") {
251
- var query = _this.bar.getQuery();
252
- _this.column.sorting = strToSortDirection(data.id);
253
- _this.column.sortIndex = query.getColumnSortIndex(_this.column);
254
- _this.fireColumnChanged();
255
- }
256
- else {
257
- _this.bar.moveColumn(_this.column, data.id);
258
- }
259
- },
260
- menuClosedCallback: function () {
261
- _this.keepShowingButtons = false;
262
- if (!_this.isMouseOverBlock) {
263
- _this.leaveButtonBlock();
264
- }
265
- }
266
- });
267
- return false;
268
- };
269
- ColumnRendererCB.prototype.renderSortingButton = function () {
270
- var _this = this;
271
- if (!this.isEditable()) {
272
- return null;
273
- }
274
- var builder = domel('div')
275
- .addClass(eqCssPrefix + "-column-button", eqCssPrefix + "-column-sortbutton", eqCssPrefix + "-column-sortbutton-none")
276
- .title(i18n.getText('ButtonSorting'))
277
- .attr('tabIndex', '0')
278
- .on('touchstart click', function (ev) { return _this.buttonSortingClickHandler(ev, builder.toDOM()); })
279
- .on('keypress', function (evt) { if (evt.keyCode == 13) {
280
- evt.target.click();
281
- } });
282
- return builder.toDOM();
283
- };
284
- ColumnRendererCB.prototype.buttonDeleteClickHandler = function (ev) {
285
- ev.stopPropagation();
286
- var query = this.bar.getQuery();
287
- query.removeColumn(this.column, this.bar);
288
- query.fireColumnsChangedEvent(QueryChangeAction.Delete, this.column);
289
- return false;
290
- };
291
- ColumnRendererCB.prototype.renderDeleteButton = function () {
292
- var _this = this;
293
- if (this.column.isReadOnly()) {
294
- return null;
295
- }
296
- return domel('div')
297
- .addClass(eqCssPrefix + "-column-button", eqCssPrefix + "-column-button-delete")
298
- .title(i18n.getText('CmdDelete'))
299
- .attr('tabIndex', '0')
300
- .on('touchstart click', function (ev) { return _this.buttonDeleteClickHandler(ev); })
301
- .on('keypress', function (evt) { if (evt.keyCode == 13) {
302
- evt.target.click();
303
- } })
304
- .toDOM();
305
- };
306
- ColumnRendererCB.prototype.getDefaultCaption = function () {
307
- return this.getDefaultTitleText(this.baseAttr);
308
- };
309
- ColumnRendererCB.prototype.getDefaultTitleText = function (attr) {
310
- var format = this.bar.options.titleElementFormat || this.bar.options.attrElementFormat;
311
- var model = this.bar.getContext().getModel();
312
- return model.getAttributeText(attr, format);
313
- };
314
- ColumnRendererCB.prototype.getClassesToAdd = function () {
315
- var result = "";
316
- result += this.column.enabled ? '' : " " + this.cssPrefix + "-disabled";
317
- if (this.column.enabled) {
318
- result += this.column.isReadOnly() ? " " + this.cssPrefix + "-readonly" : '';
319
- }
320
- return result;
321
- };
322
- ColumnRendererCB.prototype.buttonTypeClickHandler = function (ev) {
323
- ev.stopPropagation();
324
- this.keepShowingButtons = true;
325
- this.changeColumnTypeHandler(ev);
326
- return false;
327
- };
328
- ColumnRendererCB.prototype.buttonFormatClickHandler = function (ev) {
329
- ev.stopPropagation();
330
- this.keepShowingButtons = true;
331
- this.changeFormatHandler(ev);
332
- return false;
333
- };
334
- ColumnRendererCB.prototype.formatButtonIsShown = function () {
335
- return this.bar.options.allowDisplayFormatChange !== false &&
336
- this.bar
337
- .getContext()
338
- .getModel()
339
- .getDisplayFormatsForType(this.column.getDataType()).length > 0;
340
- };
341
- ColumnRendererCB.prototype.changeFormatHandler = function (ev) {
342
- var _this = this;
343
- var formats = this.bar
344
- .getContext()
345
- .getModel()
346
- .getDisplayFormatsForType(this.column.getDataType());
347
- var itemId = '{0:__default}';
348
- if (formats.filter(function (f) { return f.format == _this.column.displayFormat; }).length > 0) {
349
- itemId = this.column.displayFormat;
350
- }
351
- this.formatsMenu.showMenu({
352
- anchor: ev.target,
353
- selectedIds: itemId,
354
- itemSelectedCallback: function (data, items) {
355
- if (data.id != itemId) {
356
- if (data.id == '{0:__default}') {
357
- _this.column.displayFormat = '';
358
- }
359
- else {
360
- _this.column.displayFormat = data.id;
361
- }
362
- _this.column.fireChangedEvent();
363
- }
364
- return false;
365
- },
366
- menuClosedCallback: function () {
367
- _this.keepShowingButtons = false;
368
- if (!_this.isMouseOverBlock) {
369
- _this.element.dispatchEvent(createBrowserEvent('mouseleave'));
370
- }
371
- }
372
- });
373
- };
374
- ColumnRendererCB.prototype.renderColumnTypeButton = function () {
375
- var _this = this;
376
- if (!this.isEditable() || this.bar.options.allowAggrColumns === false) {
377
- return null;
378
- }
379
- return domel('div')
380
- .addClass(eqCssPrefix + "-column-button", eqCssPrefix + "-column-button-type")
381
- .title(i18n.getText('ButtonToAggr'))
382
- .attr('tabIndex', '0')
383
- .on('touchstart click', function (ev) { return _this.buttonTypeClickHandler(ev); })
384
- .on('keypress', function (evt) { if (evt.keyCode == 13) {
385
- evt.target.click();
386
- } })
387
- .toDOM();
388
- };
389
- ColumnRendererCB.prototype.renderColumnFormatButton = function () {
390
- var _this = this;
391
- if (!this.isEditable() || !this.formatButtonIsShown()) {
392
- return null;
393
- }
394
- return domel('div')
395
- .addClass(eqCssPrefix + "-column-button", eqCssPrefix + "-column-button-format")
396
- .title(i18n.getText('ButtonFormat'))
397
- .attr('tabIndex', '0')
398
- .on('touchstart click', function (ev) { return _this.buttonFormatClickHandler(ev); })
399
- .on('keypress', function (evt) { if (evt.keyCode == 13) {
400
- evt.target.click();
401
- } })
402
- .toDOM();
403
- };
404
- ColumnRendererCB.prototype.getUIS = function () {
405
- return this.bar
406
- .getContext().getModel()
407
- .checkAttrProperty(this.column.expr.value, "useInSorting");
408
- };
409
- ColumnRendererCB.prototype.onMouseClick = function (ev) {
410
- this.bar.toggleColumnPicked(this.column);
411
- this.adjustButtonsVisibility();
412
- };
413
- ColumnRendererCB.prototype.onMouseEnter = function (e) {
414
- if (browserUtils.isMobileMode())
415
- return;
416
- this.isMouseOverBlock = true;
417
- this.enterButtonBlock();
418
- e.stopPropagation();
419
- return false;
420
- };
421
- ColumnRendererCB.prototype.onMouseLeave = function (e) {
422
- if (browserUtils.isMobileMode())
423
- return;
424
- this.isMouseOverBlock = false;
425
- this.leaveButtonBlock();
426
- e.stopPropagation();
427
- return false;
428
- };
429
- ColumnRendererCB.prototype.isColumnActive = function () {
430
- return this.element.classList.contains("active");
431
- };
432
- ColumnRendererCB.prototype.hideButtons = function () {
433
- if (browserUtils.isMobileMode()) {
434
- if (this.onHideButtonsMobile) {
435
- this.onHideButtonsMobile();
436
- }
437
- }
438
- else {
439
- domel(this.element).data("show-buttons", null);
440
- }
441
- };
442
- ColumnRendererCB.prototype.showButtons = function () {
443
- if (browserUtils.isMobileMode()) {
444
- if (this.onShowButtonsMobile) {
445
- this.onShowButtonsMobile();
446
- }
447
- }
448
- else {
449
- domel(this.element).data("show-buttons", "");
450
- }
451
- };
452
- ColumnRendererCB.prototype.adjustButtonsVisibility = function () {
453
- if (this.bar.options.alwaysShowButtons
454
- || ((this.bar.options.accentActiveColumn || browserUtils.isMobileMode())
455
- && this.isColumnActive())) {
456
- this.showButtons();
457
- }
458
- else {
459
- this.hideButtons();
460
- }
461
- };
462
- ColumnRendererCB.prototype.enterButtonBlock = function () {
463
- this.showButtons();
464
- };
465
- ColumnRendererCB.prototype.leaveButtonBlock = function () {
466
- if (this.bar.options.alwaysShowButtons != true && (!this.isColumnActive() || this.bar.options.accentActiveColumn != true)) {
467
- this.hideButtons();
468
- }
469
- };
470
- ColumnRendererCB.prototype.createFunctionMenu = function () {
471
- var items = [];
472
- var funcs = this.bar.getContext().getModel().getAggrFunctions();
473
- var funcAllowed = true;
474
- var item = null;
475
- var colDataType = this.column.getDataType();
476
- var funcCaption;
477
- for (var _i = 0, funcs_1 = funcs; _i < funcs_1.length; _i++) {
478
- var func = funcs_1[_i];
479
- if (!func)
480
- continue;
481
- var toInclude = func.getAppliedTypesOrDefault().indexOf(colDataType) >= 0;
482
- if (this.column.expr.func === func.id && !toInclude) {
483
- funcAllowed = false;
484
- }
485
- if (toInclude) {
486
- funcCaption = this.bar.getContext().getModel()
487
- .getAggrFunctionCaption(func.id);
488
- item = {
489
- id: func.id,
490
- text: funcCaption
491
- };
492
- items.push(item);
493
- }
494
- }
495
- if (!funcAllowed) {
496
- this.column.expr.func = items[0].id;
497
- }
498
- //Add "Custom Expression" menu
499
- var columnsPanel = this.bar;
500
- if (columnsPanel.areCustomExpressionsAllowed()) {
501
- item = {
502
- id: 'CustomSqlDivider',
503
- text: '---'
504
- };
505
- items.push(item);
506
- funcCaption = i18n.getText('CustomExpression');
507
- item = {
508
- id: 'CUSTOMSQL',
509
- text: funcCaption
510
- };
511
- items.push(item);
512
- }
513
- var menuId = this.element.id;
514
- if (menuId) {
515
- menuId += '-FunctionsMenu';
516
- }
517
- var menuOptions = {
518
- items: items,
519
- id: menuId,
520
- searchBoxAlwaysShown: false,
521
- domWriteItemsId: true //this.panel.options.domWriteItemsId
522
- };
523
- this.functionMenu = new PopupMenu(menuOptions);
524
- };
525
- ColumnRendererCB.prototype.createFormatsMenu = function () {
526
- if (this.bar.options.allowDisplayFormatChange == false)
527
- return;
528
- var menuId = this.column.id;
529
- if (menuId) {
530
- menuId += '-FormatsMenu';
531
- }
532
- var items = this.getFormatsMenuItems();
533
- var menuOptions = {
534
- items: items,
535
- id: menuId,
536
- searchBoxAlwaysShown: false,
537
- showSelected: true,
538
- domWriteItemsId: true //this.panel.options.domWriteItemsId
539
- };
540
- this.formatsMenu = new PopupMenu(menuOptions);
541
- };
542
- ColumnRendererCB.prototype.getFormatsMenuItems = function () {
543
- var formats = this.bar.getContext().getModel()
544
- .getDisplayFormatsForType(this.column.getDataType());
545
- return [{ id: '{0:__default}', text: "Default" }]
546
- .concat(formats.map(function (format) { return ({ id: format.format, text: i18n.getText("DisplayFormats", format.name) || format.name }); }));
547
- };
548
- return ColumnRendererCB;
549
- }());
550
- export { ColumnRendererCB };
1
+ import { i18n } from '@easydata/core';
2
+ import { QueryChangeAction, SortDirection } from '@easyquery/core';
3
+ import { eqDragManager, DropEffect, createBrowserEvent, domel } from '@easydata/ui';
4
+ import { eqCssPrefix } from '../../../utils/utils';
5
+ import { browserUtils } from '../../../utils/browser_utils';
6
+ import { PopupMenu } from '../../../utils/popup_menu';
7
+ var ColumnRendererCB = /** @class */ (function () {
8
+ function ColumnRendererCB(panel, column, slot) {
9
+ this.functionMenu = null;
10
+ this.formatsMenu = null;
11
+ this.isMouseOverBlock = false;
12
+ this.keepShowingButtons = false;
13
+ this.tapedTwice = false;
14
+ this.bar = panel;
15
+ this.column = column;
16
+ this.element = slot;
17
+ }
18
+ Object.defineProperty(ColumnRendererCB.prototype, "cssPrefix", {
19
+ get: function () {
20
+ return 'eqjs-cb';
21
+ },
22
+ enumerable: false,
23
+ configurable: true
24
+ });
25
+ ColumnRendererCB.prototype.render = function () {
26
+ var _this = this;
27
+ this.baseAttr = this.getAttribute();
28
+ var builder = domel('div');
29
+ builder.data('id', this.column.id);
30
+ if (this.element) {
31
+ //to remove all event listeners
32
+ this.element.parentNode
33
+ .replaceChild(builder.toDOM(), this.element);
34
+ }
35
+ this.element = builder.toDOM();
36
+ if (this.bar.options.allowDragDrop) {
37
+ eqDragManager.registerDraggableItem({
38
+ element: this.element,
39
+ scope: "entityAttrSort",
40
+ beforeDragStart: function () { return _this.element.dispatchEvent(createBrowserEvent('mouseleave')); },
41
+ onDragStart: function (ev) {
42
+ _this.hideButtons();
43
+ _this.element.style.display = 'none';
44
+ ev.dropEffect = DropEffect.Allow;
45
+ },
46
+ onDragEnd: function (ev) {
47
+ if (!ev.data.finishedSuccessfully) {
48
+ _this.element.removeAttribute('style');
49
+ }
50
+ },
51
+ data: { column: this.column }
52
+ });
53
+ }
54
+ if (!this.column.isReadOnly()) {
55
+ this.createFunctionMenu();
56
+ this.createFormatsMenu();
57
+ }
58
+ builder
59
+ .addClass(this.getClassesToAdd())
60
+ .addClass(browserUtils.getMobileCssClass())
61
+ .addChildElement(this.renderCaptionBlock())
62
+ .addChildElement(this.renderSortingImage());
63
+ if (!browserUtils.isMobileMode()) {
64
+ builder
65
+ .addChildElement(this.renderButtonsBlock());
66
+ }
67
+ //start event listeners
68
+ builder
69
+ .on('mouseenter', this.onMouseEnter.bind(this))
70
+ .on('mouseleave', this.onMouseLeave.bind(this));
71
+ //end event listeners
72
+ if (this.bar.options.accentActiveColumn || browserUtils.isMobileMode()) {
73
+ builder
74
+ .on('touchstart click', this.onMouseClick.bind(this));
75
+ }
76
+ return this.element;
77
+ };
78
+ ColumnRendererCB.prototype.fireColumnChanged = function () {
79
+ this.column.fireChangedEvent();
80
+ };
81
+ ColumnRendererCB.prototype.refresh = function () {
82
+ this.render();
83
+ };
84
+ ColumnRendererCB.prototype.getAttribute = function () {
85
+ var model = this.bar.getContext().getModel();
86
+ return model.getAttributeByIdSafe(this.column.expr.value);
87
+ };
88
+ ColumnRendererCB.prototype.isEditable = function () {
89
+ return this.column.enabled && !this.column.isReadOnly();
90
+ };
91
+ ColumnRendererCB.prototype.renderButtonsBlock = function () {
92
+ return domel('div', this.element)
93
+ .addClass("".concat(eqCssPrefix, "-column-buttonsBlock"), "".concat(this.cssPrefix, "-buttonsBlock"))
94
+ .addChildElement(this.renderSortingButton())
95
+ .addChildElement(this.renderColumnTypeButton())
96
+ .addChildElement(this.renderColumnFormatButton())
97
+ .addChildElement(this.renderDeleteButton())
98
+ .toDOM();
99
+ };
100
+ ColumnRendererCB.prototype.renderCaptionBlock = function () {
101
+ var _this = this;
102
+ if (!this.column.caption || this.column.caption == '') {
103
+ this.column.caption = this.getDefaultCaption();
104
+ }
105
+ var model = this.column.getModel();
106
+ var caption = this.baseAttr !== model.nullAttribute
107
+ ? this.column.caption
108
+ : model.getAttributeText(model.nullAttribute, '{attr}');
109
+ if (!this.isEditable()) {
110
+ return domel('div')
111
+ .addClass("".concat(this.cssPrefix, "-colelement"), "".concat(this.cssPrefix, "-captionelement"))
112
+ .addClass(browserUtils.getMobileCssClass())
113
+ .addChild('div', function (b) { return b
114
+ .title(_this.column.caption)
115
+ .text(caption)
116
+ .attr('tabIndex', '0'); })
117
+ .toDOM();
118
+ }
119
+ var tapHandler = function (ev) {
120
+ if (!_this.tapedTwice) {
121
+ _this.tapedTwice = true;
122
+ setTimeout(function () { _this.tapedTwice = false; }, 300);
123
+ }
124
+ };
125
+ var isFocused = false;
126
+ domel(this.element).on('touchstart dblclick', function (ev) {
127
+ if (ev instanceof TouchEvent && !_this.tapedTwice) {
128
+ tapHandler(ev);
129
+ return true;
130
+ }
131
+ ev.stopPropagation();
132
+ isFocused = _this.element.querySelector('a') == document.activeElement;
133
+ var inputEl = _this.element.querySelector(".".concat(_this.cssPrefix, "-captionelement input"));
134
+ var aEl = _this.element.querySelector(".".concat(_this.cssPrefix, "-captionelement a"));
135
+ if (inputEl) {
136
+ inputEl.style.width = "".concat(_this.element.clientWidth, "px");
137
+ aEl.style.display = 'none';
138
+ inputEl.style.removeProperty('display');
139
+ inputEl.focus();
140
+ _this.element.setAttribute(eqDragManager.DRAG_DISABLED_ATTR, '');
141
+ }
142
+ return false;
143
+ }); //TO DO:add localization and input field);
144
+ return domel('div')
145
+ .addClass("".concat(this.cssPrefix, "-colelement"), "".concat(this.cssPrefix, "-captionelement"))
146
+ .addClass(browserUtils.getMobileCssClass())
147
+ .addChild('a', function (builder) { return builder
148
+ .attr('href', 'javascript:void(0)')
149
+ .title(_this.column.caption)
150
+ .text(caption)
151
+ .on('keydown', function (e) {
152
+ var evt = e;
153
+ var isCtrlEnter = (evt.ctrlKey || evt.metaKey) && (evt.keyCode == 13 || evt.keyCode == 10);
154
+ if (isCtrlEnter && _this.isColumnActive()) {
155
+ var clickEvent = document.createEvent('MouseEvents');
156
+ clickEvent.initEvent('dblclick', true, true);
157
+ _this.element.dispatchEvent(clickEvent);
158
+ evt.stopPropagation();
159
+ return false;
160
+ }
161
+ return true;
162
+ }); })
163
+ .addChild('input', function (builder) { return builder
164
+ .hide()
165
+ .value(_this.column.caption)
166
+ .on('blur keydown', function (ev) {
167
+ var isEndEvent = false;
168
+ var save = true;
169
+ if (ev instanceof KeyboardEvent) {
170
+ // Enter
171
+ if (ev.keyCode === 13) {
172
+ isEndEvent = true;
173
+ //ESC
174
+ }
175
+ else if (ev.keyCode === 27) {
176
+ isEndEvent = true;
177
+ save = false;
178
+ }
179
+ }
180
+ else if (ev instanceof FocusEvent) {
181
+ isEndEvent = true;
182
+ }
183
+ if (isEndEvent) {
184
+ var inputEl = ev.target;
185
+ var aEl = inputEl.parentElement.querySelector('a');
186
+ if (aEl) {
187
+ aEl.style.removeProperty('display');
188
+ inputEl.style.display = 'none';
189
+ }
190
+ if (save && _this.column.caption !== inputEl.value) {
191
+ _this.column.caption = inputEl.value;
192
+ _this.fireColumnChanged();
193
+ }
194
+ else {
195
+ inputEl.value = _this.column.caption;
196
+ }
197
+ _this.element.removeAttribute(eqDragManager.DRAG_DISABLED_ATTR);
198
+ if (isFocused) {
199
+ _this.element.querySelector('a').focus();
200
+ }
201
+ }
202
+ }); })
203
+ .toDOM();
204
+ };
205
+ ColumnRendererCB.prototype.renderSortingImage = function () {
206
+ var _this = this;
207
+ var sortButtonCssClass = "".concat(eqCssPrefix, "-column-sortbutton");
208
+ var sortButtonDirectionCssClass = sortButtonCssClass;
209
+ switch (this.column.sorting) {
210
+ case SortDirection.Ascending:
211
+ sortButtonDirectionCssClass = "".concat(sortButtonCssClass, "-asc");
212
+ break;
213
+ case SortDirection.Descending:
214
+ sortButtonDirectionCssClass = "".concat(sortButtonCssClass, "-desc");
215
+ break;
216
+ }
217
+ if (this.column.sorting == SortDirection.None) {
218
+ return null;
219
+ }
220
+ else {
221
+ return domel('div')
222
+ .addClass("".concat(this.cssPrefix, "-colelement"), "".concat(this.cssPrefix, "-sortimage-placeholder"))
223
+ .addClass(browserUtils.getMobileCssClass())
224
+ .addChild('div', function (builder) { return builder
225
+ .addClass("".concat(_this.cssPrefix, "-img-sorting"), sortButtonDirectionCssClass)
226
+ .title(i18n.getText('ButtonSorting')); })
227
+ .toDOM();
228
+ }
229
+ };
230
+ ColumnRendererCB.prototype.buttonSortingClickHandler = function (ev, anchor) {
231
+ var _this = this;
232
+ ev.stopPropagation();
233
+ this.keepShowingButtons = true;
234
+ var menu = this.getUIS() ? this.bar.sortMenu || this.bar.moveMenu : this.bar.moveMenu;
235
+ menu.showMenu({
236
+ anchor: anchor,
237
+ selectedIds: null,
238
+ itemSelectedCallback: function (data, items) {
239
+ var strToSortDirection = function (str) {
240
+ if (str == 'None') {
241
+ return SortDirection.None;
242
+ }
243
+ else if (str == "Ascending") {
244
+ return SortDirection.Ascending;
245
+ }
246
+ else if (str == "Descending") {
247
+ return SortDirection.Descending;
248
+ }
249
+ };
250
+ if (data.id == 'None' || data.id == "Ascending" || data.id == "Descending") {
251
+ var query = _this.bar.getQuery();
252
+ _this.column.sorting = strToSortDirection(data.id);
253
+ _this.column.sortIndex = query.getColumnSortIndex(_this.column);
254
+ _this.fireColumnChanged();
255
+ }
256
+ else {
257
+ _this.bar.moveColumn(_this.column, data.id);
258
+ }
259
+ },
260
+ menuClosedCallback: function () {
261
+ _this.keepShowingButtons = false;
262
+ if (!_this.isMouseOverBlock) {
263
+ _this.leaveButtonBlock();
264
+ }
265
+ }
266
+ });
267
+ return false;
268
+ };
269
+ ColumnRendererCB.prototype.renderSortingButton = function () {
270
+ var _this = this;
271
+ if (!this.isEditable()) {
272
+ return null;
273
+ }
274
+ var builder = domel('div')
275
+ .addClass("".concat(eqCssPrefix, "-column-button"), "".concat(eqCssPrefix, "-column-sortbutton"), "".concat(eqCssPrefix, "-column-sortbutton-none"))
276
+ .title(i18n.getText('ButtonSorting'))
277
+ .attr('tabIndex', '0')
278
+ .on('touchstart click', function (ev) { return _this.buttonSortingClickHandler(ev, builder.toDOM()); })
279
+ .on('keypress', function (evt) { if (evt.keyCode == 13) {
280
+ evt.target.click();
281
+ } });
282
+ return builder.toDOM();
283
+ };
284
+ ColumnRendererCB.prototype.buttonDeleteClickHandler = function (ev) {
285
+ ev.stopPropagation();
286
+ var query = this.bar.getQuery();
287
+ query.removeColumn(this.column, this.bar);
288
+ query.fireColumnsChangedEvent(QueryChangeAction.Delete, this.column);
289
+ return false;
290
+ };
291
+ ColumnRendererCB.prototype.renderDeleteButton = function () {
292
+ var _this = this;
293
+ if (this.column.isReadOnly()) {
294
+ return null;
295
+ }
296
+ return domel('div')
297
+ .addClass("".concat(eqCssPrefix, "-column-button"), "".concat(eqCssPrefix, "-column-button-delete"))
298
+ .title(i18n.getText('CmdDelete'))
299
+ .attr('tabIndex', '0')
300
+ .on('touchstart click', function (ev) { return _this.buttonDeleteClickHandler(ev); })
301
+ .on('keypress', function (evt) { if (evt.keyCode == 13) {
302
+ evt.target.click();
303
+ } })
304
+ .toDOM();
305
+ };
306
+ ColumnRendererCB.prototype.getDefaultCaption = function () {
307
+ return this.getDefaultTitleText(this.baseAttr);
308
+ };
309
+ ColumnRendererCB.prototype.getDefaultTitleText = function (attr) {
310
+ var format = this.bar.options.titleElementFormat || this.bar.options.attrElementFormat;
311
+ var model = this.bar.getContext().getModel();
312
+ return model.getAttributeText(attr, format);
313
+ };
314
+ ColumnRendererCB.prototype.getClassesToAdd = function () {
315
+ var result = "";
316
+ result += this.column.enabled ? '' : " ".concat(this.cssPrefix, "-disabled");
317
+ if (this.column.enabled) {
318
+ result += this.column.isReadOnly() ? " ".concat(this.cssPrefix, "-readonly") : '';
319
+ }
320
+ return result;
321
+ };
322
+ ColumnRendererCB.prototype.buttonTypeClickHandler = function (ev) {
323
+ ev.stopPropagation();
324
+ this.keepShowingButtons = true;
325
+ this.changeColumnTypeHandler(ev);
326
+ return false;
327
+ };
328
+ ColumnRendererCB.prototype.buttonFormatClickHandler = function (ev) {
329
+ ev.stopPropagation();
330
+ this.keepShowingButtons = true;
331
+ this.changeFormatHandler(ev);
332
+ return false;
333
+ };
334
+ ColumnRendererCB.prototype.formatButtonIsShown = function () {
335
+ return this.bar.options.allowDisplayFormatChange !== false &&
336
+ this.bar
337
+ .getContext()
338
+ .getModel()
339
+ .getDisplayFormatsForType(this.column.getDataType()).length > 0;
340
+ };
341
+ ColumnRendererCB.prototype.changeFormatHandler = function (ev) {
342
+ var _this = this;
343
+ var formats = this.bar
344
+ .getContext()
345
+ .getModel()
346
+ .getDisplayFormatsForType(this.column.getDataType());
347
+ var itemId = '{0:__default}';
348
+ if (formats.filter(function (f) { return f.format == _this.column.displayFormat; }).length > 0) {
349
+ itemId = this.column.displayFormat;
350
+ }
351
+ this.formatsMenu.showMenu({
352
+ anchor: ev.target,
353
+ selectedIds: itemId,
354
+ itemSelectedCallback: function (data, items) {
355
+ if (data.id != itemId) {
356
+ if (data.id == '{0:__default}') {
357
+ _this.column.displayFormat = '';
358
+ }
359
+ else {
360
+ _this.column.displayFormat = data.id;
361
+ }
362
+ _this.column.fireChangedEvent();
363
+ }
364
+ return false;
365
+ },
366
+ menuClosedCallback: function () {
367
+ _this.keepShowingButtons = false;
368
+ if (!_this.isMouseOverBlock) {
369
+ _this.element.dispatchEvent(createBrowserEvent('mouseleave'));
370
+ }
371
+ }
372
+ });
373
+ };
374
+ ColumnRendererCB.prototype.renderColumnTypeButton = function () {
375
+ var _this = this;
376
+ if (!this.isEditable() || this.bar.options.allowAggrColumns === false) {
377
+ return null;
378
+ }
379
+ return domel('div')
380
+ .addClass("".concat(eqCssPrefix, "-column-button"), "".concat(eqCssPrefix, "-column-button-type"))
381
+ .title(i18n.getText('ButtonToAggr'))
382
+ .attr('tabIndex', '0')
383
+ .on('touchstart click', function (ev) { return _this.buttonTypeClickHandler(ev); })
384
+ .on('keypress', function (evt) { if (evt.keyCode == 13) {
385
+ evt.target.click();
386
+ } })
387
+ .toDOM();
388
+ };
389
+ ColumnRendererCB.prototype.renderColumnFormatButton = function () {
390
+ var _this = this;
391
+ if (!this.isEditable() || !this.formatButtonIsShown()) {
392
+ return null;
393
+ }
394
+ return domel('div')
395
+ .addClass("".concat(eqCssPrefix, "-column-button"), "".concat(eqCssPrefix, "-column-button-format"))
396
+ .title(i18n.getText('ButtonFormat'))
397
+ .attr('tabIndex', '0')
398
+ .on('touchstart click', function (ev) { return _this.buttonFormatClickHandler(ev); })
399
+ .on('keypress', function (evt) { if (evt.keyCode == 13) {
400
+ evt.target.click();
401
+ } })
402
+ .toDOM();
403
+ };
404
+ ColumnRendererCB.prototype.getUIS = function () {
405
+ return this.bar
406
+ .getContext().getModel()
407
+ .checkAttrProperty(this.column.expr.value, "useInSorting");
408
+ };
409
+ ColumnRendererCB.prototype.onMouseClick = function (ev) {
410
+ this.bar.toggleColumnPicked(this.column);
411
+ this.adjustButtonsVisibility();
412
+ };
413
+ ColumnRendererCB.prototype.onMouseEnter = function (e) {
414
+ if (browserUtils.isMobileMode())
415
+ return;
416
+ this.isMouseOverBlock = true;
417
+ this.enterButtonBlock();
418
+ e.stopPropagation();
419
+ return false;
420
+ };
421
+ ColumnRendererCB.prototype.onMouseLeave = function (e) {
422
+ if (browserUtils.isMobileMode())
423
+ return;
424
+ this.isMouseOverBlock = false;
425
+ this.leaveButtonBlock();
426
+ e.stopPropagation();
427
+ return false;
428
+ };
429
+ ColumnRendererCB.prototype.isColumnActive = function () {
430
+ return this.element.classList.contains("active");
431
+ };
432
+ ColumnRendererCB.prototype.hideButtons = function () {
433
+ if (browserUtils.isMobileMode()) {
434
+ if (this.onHideButtonsMobile) {
435
+ this.onHideButtonsMobile();
436
+ }
437
+ }
438
+ else {
439
+ domel(this.element).data("show-buttons", null);
440
+ }
441
+ };
442
+ ColumnRendererCB.prototype.showButtons = function () {
443
+ if (browserUtils.isMobileMode()) {
444
+ if (this.onShowButtonsMobile) {
445
+ this.onShowButtonsMobile();
446
+ }
447
+ }
448
+ else {
449
+ domel(this.element).data("show-buttons", "");
450
+ }
451
+ };
452
+ ColumnRendererCB.prototype.adjustButtonsVisibility = function () {
453
+ if (this.bar.options.alwaysShowButtons
454
+ || ((this.bar.options.accentActiveColumn || browserUtils.isMobileMode())
455
+ && this.isColumnActive())) {
456
+ this.showButtons();
457
+ }
458
+ else {
459
+ this.hideButtons();
460
+ }
461
+ };
462
+ ColumnRendererCB.prototype.enterButtonBlock = function () {
463
+ this.showButtons();
464
+ };
465
+ ColumnRendererCB.prototype.leaveButtonBlock = function () {
466
+ if (this.bar.options.alwaysShowButtons != true && (!this.isColumnActive() || this.bar.options.accentActiveColumn != true)) {
467
+ this.hideButtons();
468
+ }
469
+ };
470
+ ColumnRendererCB.prototype.createFunctionMenu = function () {
471
+ var items = [];
472
+ var funcs = this.bar.getContext().getModel().getAggrFunctions();
473
+ var funcAllowed = true;
474
+ var item = null;
475
+ var colDataType = this.column.getDataType();
476
+ var funcCaption;
477
+ for (var _i = 0, funcs_1 = funcs; _i < funcs_1.length; _i++) {
478
+ var func = funcs_1[_i];
479
+ if (!func)
480
+ continue;
481
+ var toInclude = func.getAppliedTypesOrDefault().indexOf(colDataType) >= 0;
482
+ if (this.column.expr.func === func.id && !toInclude) {
483
+ funcAllowed = false;
484
+ }
485
+ if (toInclude) {
486
+ funcCaption = this.bar.getContext().getModel()
487
+ .getAggrFunctionCaption(func.id);
488
+ item = {
489
+ id: func.id,
490
+ text: funcCaption
491
+ };
492
+ items.push(item);
493
+ }
494
+ }
495
+ if (!funcAllowed) {
496
+ this.column.expr.func = items[0].id;
497
+ }
498
+ //Add "Custom Expression" menu
499
+ var columnsPanel = this.bar;
500
+ if (columnsPanel.areCustomExpressionsAllowed()) {
501
+ item = {
502
+ id: 'CustomSqlDivider',
503
+ text: '---'
504
+ };
505
+ items.push(item);
506
+ funcCaption = i18n.getText('CustomExpression');
507
+ item = {
508
+ id: 'CUSTOMSQL',
509
+ text: funcCaption
510
+ };
511
+ items.push(item);
512
+ }
513
+ var menuId = this.element.id;
514
+ if (menuId) {
515
+ menuId += '-FunctionsMenu';
516
+ }
517
+ var menuOptions = {
518
+ items: items,
519
+ id: menuId,
520
+ searchBoxAlwaysShown: false,
521
+ domWriteItemsId: true //this.panel.options.domWriteItemsId
522
+ };
523
+ this.functionMenu = new PopupMenu(menuOptions);
524
+ };
525
+ ColumnRendererCB.prototype.createFormatsMenu = function () {
526
+ if (this.bar.options.allowDisplayFormatChange == false)
527
+ return;
528
+ var menuId = this.column.id;
529
+ if (menuId) {
530
+ menuId += '-FormatsMenu';
531
+ }
532
+ var items = this.getFormatsMenuItems();
533
+ var menuOptions = {
534
+ items: items,
535
+ id: menuId,
536
+ searchBoxAlwaysShown: false,
537
+ showSelected: true,
538
+ domWriteItemsId: true //this.panel.options.domWriteItemsId
539
+ };
540
+ this.formatsMenu = new PopupMenu(menuOptions);
541
+ };
542
+ ColumnRendererCB.prototype.getFormatsMenuItems = function () {
543
+ var formats = this.bar.getContext().getModel()
544
+ .getDisplayFormatsForType(this.column.getDataType());
545
+ return [{ id: '{0:__default}', text: "Default" }]
546
+ .concat(formats.map(function (format) { return ({ id: format.format, text: i18n.getText("DisplayFormats", format.name) || format.name }); }));
547
+ };
548
+ return ColumnRendererCB;
549
+ }());
550
+ export { ColumnRendererCB };
551
551
  //# sourceMappingURL=column_renderer_cb.js.map