@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,430 +1,430 @@
1
- import { AggregationSettings } from '@easydata/core';
2
- import { domel } from '@easydata/ui';
3
- import { PopupMenu } from '../../../utils/popup_menu';
4
- import { i18n } from '@easyquery/core';
5
- var AggrSettingsRenderer = /** @class */ (function () {
6
- function AggrSettingsRenderer(options) {
7
- this.selectState = {
8
- columns: []
9
- };
10
- this.funcMap = {};
11
- if (!options || !options.slot)
12
- throw new Error('slot is required');
13
- if (!options || !options.query)
14
- throw new Error('query is required');
15
- this.slot = options.slot;
16
- this.query = options.query;
17
- this.onChanged = options.onChanged;
18
- this.dropSelectState();
19
- this.dropState();
20
- }
21
- Object.defineProperty(AggrSettingsRenderer.prototype, "cssPrefix", {
22
- get: function () {
23
- return 'eqjs-as';
24
- },
25
- enumerable: true,
26
- configurable: true
27
- });
28
- AggrSettingsRenderer.prototype.render = function () {
29
- this.createFunctionMenu();
30
- this.setInitialState();
31
- this.changed();
32
- };
33
- AggrSettingsRenderer.prototype.setInitialState = function () {
34
- var aggrSettings = this.query.getAggregationSettings();
35
- var groups = aggrSettings.getInternalGroups();
36
- var aggrs = aggrSettings.getAggregates();
37
- for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {
38
- var group = groups_1[_i];
39
- this.state.groups.push({
40
- columns: group.columns
41
- });
42
- }
43
- for (var _a = 0, aggrs_1 = aggrs; _a < aggrs_1.length; _a++) {
44
- var aggr = aggrs_1[_a];
45
- this.state.aggregates.push({
46
- colId: aggr.colId,
47
- funcId: aggr.funcId
48
- });
49
- }
50
- this.state.grandTotals = aggrSettings.hasGrandTotals();
51
- this.state.recordCount = aggrSettings.hasRecordCount();
52
- };
53
- AggrSettingsRenderer.prototype.getAvailableColumns = function () {
54
- return this.query.getColumns().filter(function (c) { return c.enabled; });
55
- };
56
- AggrSettingsRenderer.prototype.renderCore = function () {
57
- var _this = this;
58
- this.slot.innerHTML = '';
59
- var cols = this.getAvailableColumns();
60
- var slotb = domel(this.slot);
61
- var currentGroup = null;
62
- var groupBlockColumns = null;
63
- var selectedBlockColumns = null;
64
- var aggregates = this.state.aggregates;
65
- var groupCounter = -1;
66
- var _loop_1 = function (col) {
67
- if (currentGroup) {
68
- if (currentGroup.columns.indexOf(col.id) >= 0) {
69
- // render to current group div
70
- this_1.renderColumn(groupBlockColumns, col, true);
71
- return "continue";
72
- }
73
- }
74
- currentGroup = this_1.getGroupForColumn(col.id);
75
- if (currentGroup != null) {
76
- groupCounter++;
77
- // create groupDiv
78
- var groupBlock = domel('div', this_1.slot)
79
- .addClass(this_1.cssPrefix + "-group")
80
- .data('gindex', "" + groupCounter);
81
- groupBlockColumns = domel('div', groupBlock.toDOM())
82
- .addClass(this_1.cssPrefix + "-columns");
83
- this_1.renderColumn(groupBlockColumns, col, true);
84
- return "continue";
85
- }
86
- var aggr = aggregates.filter(function (a) { return a.colId == col.id; })[0];
87
- if (aggr) {
88
- var aggrBlock = domel('div', this_1.slot)
89
- .addClass(this_1.cssPrefix + "-aggr");
90
- this_1.renderColumn(aggrBlock, col, true, aggr.funcId);
91
- aggrBlock
92
- .addChild('div', function (b) { return b
93
- .addClass(_this.cssPrefix + "-buttons")
94
- .addChild('button', function (b) { return b
95
- .addClass(_this.cssPrefix + "-unaggr-btn")
96
- .title(i18n.getText('AggrSettings', 'UnaggrBtn'))
97
- .on('click', _this.removeAggrBtnClickHandler.bind(_this)); }); });
98
- return "continue";
99
- }
100
- if (this_1.selectState.columns.indexOf(col.id) >= 0) {
101
- // create selectedDiv
102
- if (selectedBlockColumns == null) {
103
- var selectedBlock = domel('div', this_1.slot)
104
- .addClass(this_1.cssPrefix + "-selected");
105
- selectedBlockColumns = domel('div', selectedBlock.toDOM())
106
- .addClass(this_1.cssPrefix + "-columns");
107
- }
108
- this_1.renderColumn(selectedBlockColumns, col, false);
109
- return "continue";
110
- }
111
- // render column as is
112
- this_1.renderColumn(slotb, col, false);
113
- };
114
- var this_1 = this;
115
- for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {
116
- var col = cols_1[_i];
117
- _loop_1(col);
118
- }
119
- if (selectedBlockColumns) {
120
- var buttonsContainer = domel('div', selectedBlockColumns.toDOM().parentElement)
121
- .addClass(this.cssPrefix + "-buttons");
122
- buttonsContainer.addChild('button', function (b) { return b
123
- .addClass(_this.cssPrefix + "-group-btn")
124
- .title(i18n.getText('AggrSettings', 'GroupBtn'))
125
- .on('click', _this.groupBtnClickHandler.bind(_this)); });
126
- if (this.selectState.columns.length == 1) {
127
- buttonsContainer.addChild('button', function (b) { return b
128
- .addClass(_this.cssPrefix + "-aggr-btn")
129
- .title(i18n.getText('AggrSettings', 'AggrBtn'))
130
- .on('click', _this.aggrBtnClickHandler.bind(_this)); });
131
- }
132
- }
133
- domel(this.slot)
134
- .addChild('div', function (b) { return b
135
- .addClass(_this.cssPrefix + "-counts")
136
- .addChild('label', function (b) { return b
137
- .addClass('eqjs-ctrl-switch')
138
- .addChild('input', function (b) {
139
- b.attr('type', 'checkbox');
140
- if (_this.state.recordCount) {
141
- b.attr('checked', '');
142
- }
143
- b.on('change', _this.countsCheckboxChangeHandler.bind(_this));
144
- })
145
- .addChild('span', function (b) { return b
146
- .addClass('slider round'); })
147
- .addChild('span', function (b) { return b
148
- .addClass('switch-text')
149
- .addText(i18n.getText('AggrSettings', 'GroupCountsLabel')); }); }); })
150
- .addChild('div', function (b) { return b
151
- .addClass(_this.cssPrefix + "-grandtotals")
152
- .addChild('label', function (b) { return b
153
- .addClass('eqjs-ctrl-switch')
154
- .addChild('input', function (b) {
155
- b.attr('type', 'checkbox');
156
- if (_this.state.grandTotals) {
157
- b.attr('checked', '');
158
- }
159
- b.on('change', _this.grandCheckboxChangeHandler.bind(_this));
160
- })
161
- .addChild('span', function (b) { return b
162
- .addClass('slider round'); })
163
- .addChild('span', function (b) { return b
164
- .addClass('switch-text')
165
- .addText(i18n.getText('AggrSettings', 'GrandTotalsLabel')); }); }); });
166
- var groups = this.slot.querySelectorAll("." + this.cssPrefix + "-group");
167
- groups.forEach(function (el) {
168
- domel(el)
169
- .addChild('div', function (b) { return b
170
- .addClass(_this.cssPrefix + "-buttons")
171
- .addChild('button', function (b) { return b
172
- .addClass(_this.cssPrefix + "-ungroup-btn")
173
- .title(i18n.getText('AggrSettings', 'UngroupBtn'))
174
- .on('click', _this.removeGroupBtnClickHandler.bind(_this)); }); });
175
- });
176
- this.validateCheckboxes();
177
- };
178
- AggrSettingsRenderer.prototype.validateCheckboxes = function () {
179
- if (this.selectState.columns.length === 0)
180
- return;
181
- var prevElement, prevInputEl, nextInputEl = null;
182
- for (var i = 0; i < this.slot.childNodes.length; i++) {
183
- var el = this.slot.childNodes[i];
184
- if (el.classList.contains(this.cssPrefix + "-selected")) {
185
- if (prevElement && prevElement.classList.contains(this.cssPrefix + "-column")) {
186
- prevInputEl = prevElement;
187
- }
188
- }
189
- else if (el.classList.contains(this.cssPrefix + "-column")) {
190
- if (prevElement && prevElement.classList.contains(this.cssPrefix + "-selected")) {
191
- nextInputEl = el;
192
- }
193
- }
194
- prevElement = el;
195
- }
196
- ;
197
- for (var i = 0; i < this.slot.childNodes.length; i++) {
198
- var el = this.slot.childNodes[i];
199
- if (el.classList.contains(this.cssPrefix + "-column") && el != prevInputEl && el != nextInputEl) {
200
- el.firstElementChild.firstElementChild.setAttribute('disabled', '');
201
- }
202
- }
203
- ;
204
- var selector = "." + this.cssPrefix + "-selected>." + this.cssPrefix + "-columns>." + this.cssPrefix + "-column";
205
- var selectedCols = this.slot.querySelectorAll(selector);
206
- for (var i = 1; i < selectedCols.length - 1; i++) {
207
- var el = selectedCols[i];
208
- el.firstElementChild.firstElementChild.setAttribute('disabled', '');
209
- }
210
- };
211
- AggrSettingsRenderer.prototype.isValid = function () {
212
- var hasSelected = this.selectState.columns.length;
213
- var hasAggrs = this.state.aggregates.length > 0;
214
- var hasGroups = this.state.groups.length > 0;
215
- var hasTotals = this.state.grandTotals;
216
- var hasCounts = this.state.recordCount;
217
- if (hasSelected)
218
- return false;
219
- if (hasGroups) {
220
- return hasAggrs || hasCounts;
221
- }
222
- if (hasAggrs) {
223
- return hasGroups || hasTotals;
224
- }
225
- return false;
226
- };
227
- AggrSettingsRenderer.prototype.getValidationMessage = function () {
228
- var hasSelected = this.selectState.columns.length;
229
- var hasAggrs = this.state.aggregates.length > 0;
230
- var hasGroups = this.state.groups.length > 0;
231
- var hasTotals = this.state.grandTotals;
232
- var hasRecCount = this.state.recordCount;
233
- if (hasSelected)
234
- return i18n.getText('AggrSettings', 'SelectedError') + " ";
235
- if (hasGroups && !hasAggrs && !hasRecCount)
236
- return i18n.getText('AggrSettings', 'NoAggrOrCountError') + " ";
237
- if (hasAggrs && !hasGroups && !hasTotals)
238
- return i18n.getText('AggrSettings', 'NoGroupsOrGrandError') + " ";
239
- return i18n.getText('AggrSettings', 'NoGroupsOrAggrError') + " ";
240
- };
241
- AggrSettingsRenderer.prototype.getSettings = function () {
242
- var settings = new AggregationSettings(this.query);
243
- for (var _i = 0, _a = this.state.groups; _i < _a.length; _i++) {
244
- var group = _a[_i];
245
- settings.addGroup({ columns: group.columns });
246
- }
247
- for (var _b = 0, _c = this.state.aggregates; _b < _c.length; _b++) {
248
- var aggr = _c[_b];
249
- settings.addAggregateColumn(aggr.colId, aggr.funcId);
250
- }
251
- if (this.state.grandTotals) {
252
- settings.addGrandTotals();
253
- }
254
- if (this.state.recordCount) {
255
- settings.addCounts();
256
- }
257
- return settings;
258
- };
259
- AggrSettingsRenderer.prototype.renderColumn = function (b, col, isTaken, funcId) {
260
- var _this = this;
261
- if (funcId === void 0) { funcId = null; }
262
- b.addChild('div', function (b) {
263
- b.data('colid', col.id);
264
- var caption = funcId
265
- ? col.caption + " (" + _this.funcMap[funcId].caption + ")"
266
- : col.caption;
267
- if (!isTaken) {
268
- b
269
- .addClass(_this.cssPrefix + "-column")
270
- .addChild('label', function (b) { return b
271
- .addClass('checkbox')
272
- .addChild('input', function (b) {
273
- b.attr('type', 'checkbox');
274
- if (_this.selectState.columns.indexOf(col.id) >= 0) {
275
- b.attr('checked', '');
276
- }
277
- b.on('change', _this.colCheckboxChangeHandler.bind(_this));
278
- })
279
- .addText(caption); });
280
- }
281
- else {
282
- b
283
- .addClass(_this.cssPrefix + "-column-used")
284
- .addText(caption);
285
- }
286
- });
287
- };
288
- AggrSettingsRenderer.prototype.getGroupForColumn = function (colId) {
289
- var index = this.getGroupIndexForColumn(colId);
290
- if (index >= 0)
291
- return this.state.groups[index];
292
- return null;
293
- };
294
- AggrSettingsRenderer.prototype.getGroupIndexForColumn = function (colId) {
295
- for (var i = 0; i < this.state.groups.length; i++) {
296
- var group = this.state.groups[i];
297
- if (group.columns.indexOf(colId) >= 0)
298
- return i;
299
- }
300
- return -1;
301
- };
302
- AggrSettingsRenderer.prototype.grandCheckboxChangeHandler = function (ev) {
303
- this.state.grandTotals = !this.state.grandTotals;
304
- this.onChanged && this.onChanged();
305
- };
306
- AggrSettingsRenderer.prototype.countsCheckboxChangeHandler = function (ev) {
307
- this.state.recordCount = !this.state.recordCount;
308
- this.onChanged && this.onChanged();
309
- };
310
- AggrSettingsRenderer.prototype.colCheckboxChangeHandler = function (ev) {
311
- var input = ev.target;
312
- var colId = input.parentElement.parentElement.getAttribute('data-colid');
313
- // toggle column to track state
314
- var index = this.selectState.columns.indexOf(colId);
315
- if (index >= 0) {
316
- this.selectState.columns.splice(index, 1);
317
- }
318
- else {
319
- this.selectState.columns.push(colId);
320
- var cols_2 = this.getAvailableColumns();
321
- this.selectState.columns = this.selectState.columns.sort(function (col1, col2) {
322
- var index1 = cols_2.findIndex(function (c) { return c.id == col1; });
323
- var index2 = cols_2.findIndex(function (c) { return c.id == col2; });
324
- return index1 - index2;
325
- });
326
- }
327
- this.changed();
328
- };
329
- AggrSettingsRenderer.prototype.groupBtnClickHandler = function () {
330
- this.state.groups.push({ columns: this.selectState.columns });
331
- var cols = this.getAvailableColumns();
332
- this.state.groups = this.state.groups.sort(function (g1, g2) {
333
- var g1Index = cols.findIndex(function (c) { return c.id == g1.columns[0]; });
334
- var g2Index = cols.findIndex(function (c) { return c.id == g2.columns[0]; });
335
- return g1Index - g2Index;
336
- });
337
- this.dropSelectState();
338
- this.changed();
339
- };
340
- AggrSettingsRenderer.prototype.removeGroupBtnClickHandler = function (ev) {
341
- var btn = ev.target;
342
- var index = Number.parseInt(btn.parentElement.parentElement.getAttribute('data-gindex'));
343
- this.state.groups.splice(index, 1);
344
- this.changed();
345
- };
346
- AggrSettingsRenderer.prototype.removeAggrBtnClickHandler = function (ev) {
347
- var btn = ev.target;
348
- var colId = btn.parentElement.parentElement.querySelector("." + this.cssPrefix + "-column-used")
349
- .getAttribute('data-colid');
350
- var index = this.state.aggregates.findIndex(function (a) { return a.colId == colId; });
351
- if (index >= 0) {
352
- this.state.aggregates.splice(index, 1);
353
- this.changed();
354
- }
355
- };
356
- AggrSettingsRenderer.prototype.aggrBtnClickHandler = function (ev) {
357
- var _this = this;
358
- var model = this.query.getModel();
359
- var colId = this.selectState.columns[0];
360
- var col = this.getAvailableColumns().filter(function (c) { return c.id == colId; })[0];
361
- this.functionMenu.showMenu({
362
- anchor: ev.target,
363
- itemFilterCallback: function (item) {
364
- return _this.funcMap[item.id].appliedTypes.indexOf(col.expr.dataType) >= 0;
365
- },
366
- itemSelectedCallback: function (data) {
367
- _this.state.aggregates.push({
368
- colId: colId,
369
- funcId: data.id
370
- });
371
- _this.dropSelectState();
372
- _this.changed();
373
- }
374
- });
375
- };
376
- AggrSettingsRenderer.prototype.clear = function () {
377
- this.dropSelectState();
378
- this.dropState();
379
- this.changed();
380
- };
381
- AggrSettingsRenderer.prototype.dropSelectState = function () {
382
- this.selectState = {
383
- columns: []
384
- };
385
- };
386
- AggrSettingsRenderer.prototype.dropState = function () {
387
- this.state = {
388
- groups: [],
389
- aggregates: [],
390
- recordCount: true,
391
- grandTotals: false
392
- };
393
- };
394
- AggrSettingsRenderer.prototype.changed = function () {
395
- this.onChanged && this.onChanged();
396
- this.renderCore();
397
- };
398
- AggrSettingsRenderer.prototype.createFunctionMenu = function () {
399
- var model = this.query.getModel();
400
- var funcs = this.query.getModel().getAggrFunctions();
401
- var items = [];
402
- for (var _i = 0, funcs_1 = funcs; _i < funcs_1.length; _i++) {
403
- var func = funcs_1[_i];
404
- if (!func)
405
- continue;
406
- this.funcMap[func.id] = func;
407
- var funcCaption = model
408
- .getAggrFunctionCaption(func.id);
409
- var item = {
410
- id: func.id,
411
- text: funcCaption
412
- };
413
- items.push(item);
414
- }
415
- var menuId = this.slot.id;
416
- if (menuId) {
417
- menuId += '-FunctionsMenu';
418
- }
419
- var menuOptions = {
420
- items: items,
421
- id: menuId,
422
- searchBoxAlwaysShown: false,
423
- domWriteItemsId: true
424
- };
425
- this.functionMenu = new PopupMenu(menuOptions);
426
- };
427
- return AggrSettingsRenderer;
428
- }());
429
- export { AggrSettingsRenderer };
1
+ import { AggregationSettings } from '@easydata/core';
2
+ import { domel } from '@easydata/ui';
3
+ import { PopupMenu } from '../../../utils/popup_menu';
4
+ import { i18n } from '@easyquery/core';
5
+ var AggrSettingsRenderer = /** @class */ (function () {
6
+ function AggrSettingsRenderer(options) {
7
+ this.selectState = {
8
+ columns: []
9
+ };
10
+ this.funcMap = {};
11
+ if (!options || !options.slot)
12
+ throw new Error('slot is required');
13
+ if (!options || !options.query)
14
+ throw new Error('query is required');
15
+ this.slot = options.slot;
16
+ this.query = options.query;
17
+ this.onChanged = options.onChanged;
18
+ this.dropSelectState();
19
+ this.dropState();
20
+ }
21
+ Object.defineProperty(AggrSettingsRenderer.prototype, "cssPrefix", {
22
+ get: function () {
23
+ return 'eqjs-as';
24
+ },
25
+ enumerable: false,
26
+ configurable: true
27
+ });
28
+ AggrSettingsRenderer.prototype.render = function () {
29
+ this.createFunctionMenu();
30
+ this.setInitialState();
31
+ this.changed();
32
+ };
33
+ AggrSettingsRenderer.prototype.setInitialState = function () {
34
+ var aggrSettings = this.query.getAggregationSettings();
35
+ var groups = aggrSettings.getInternalGroups();
36
+ var aggrs = aggrSettings.getAggregates();
37
+ for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {
38
+ var group = groups_1[_i];
39
+ this.state.groups.push({
40
+ columns: group.columns
41
+ });
42
+ }
43
+ for (var _a = 0, aggrs_1 = aggrs; _a < aggrs_1.length; _a++) {
44
+ var aggr = aggrs_1[_a];
45
+ this.state.aggregates.push({
46
+ colId: aggr.colId,
47
+ funcId: aggr.funcId
48
+ });
49
+ }
50
+ this.state.grandTotals = aggrSettings.hasGrandTotals();
51
+ this.state.recordCount = aggrSettings.hasRecordCount();
52
+ };
53
+ AggrSettingsRenderer.prototype.getAvailableColumns = function () {
54
+ return this.query.getColumns().filter(function (c) { return c.enabled; });
55
+ };
56
+ AggrSettingsRenderer.prototype.renderCore = function () {
57
+ var _this = this;
58
+ this.slot.innerHTML = '';
59
+ var cols = this.getAvailableColumns();
60
+ var slotb = domel(this.slot);
61
+ var currentGroup = null;
62
+ var groupBlockColumns = null;
63
+ var selectedBlockColumns = null;
64
+ var aggregates = this.state.aggregates;
65
+ var groupCounter = -1;
66
+ var _loop_1 = function (col) {
67
+ if (currentGroup) {
68
+ if (currentGroup.columns.indexOf(col.id) >= 0) {
69
+ // render to current group div
70
+ this_1.renderColumn(groupBlockColumns, col, true);
71
+ return "continue";
72
+ }
73
+ }
74
+ currentGroup = this_1.getGroupForColumn(col.id);
75
+ if (currentGroup != null) {
76
+ groupCounter++;
77
+ // create groupDiv
78
+ var groupBlock = domel('div', this_1.slot)
79
+ .addClass("".concat(this_1.cssPrefix, "-group"))
80
+ .data('gindex', "".concat(groupCounter));
81
+ groupBlockColumns = domel('div', groupBlock.toDOM())
82
+ .addClass("".concat(this_1.cssPrefix, "-columns"));
83
+ this_1.renderColumn(groupBlockColumns, col, true);
84
+ return "continue";
85
+ }
86
+ var aggr = aggregates.filter(function (a) { return a.colId == col.id; })[0];
87
+ if (aggr) {
88
+ var aggrBlock = domel('div', this_1.slot)
89
+ .addClass("".concat(this_1.cssPrefix, "-aggr"));
90
+ this_1.renderColumn(aggrBlock, col, true, aggr.funcId);
91
+ aggrBlock
92
+ .addChild('div', function (b) { return b
93
+ .addClass("".concat(_this.cssPrefix, "-buttons"))
94
+ .addChild('button', function (b) { return b
95
+ .addClass("".concat(_this.cssPrefix, "-unaggr-btn"))
96
+ .title(i18n.getText('AggrSettings', 'UnaggrBtn'))
97
+ .on('click', _this.removeAggrBtnClickHandler.bind(_this)); }); });
98
+ return "continue";
99
+ }
100
+ if (this_1.selectState.columns.indexOf(col.id) >= 0) {
101
+ // create selectedDiv
102
+ if (selectedBlockColumns == null) {
103
+ var selectedBlock = domel('div', this_1.slot)
104
+ .addClass("".concat(this_1.cssPrefix, "-selected"));
105
+ selectedBlockColumns = domel('div', selectedBlock.toDOM())
106
+ .addClass("".concat(this_1.cssPrefix, "-columns"));
107
+ }
108
+ this_1.renderColumn(selectedBlockColumns, col, false);
109
+ return "continue";
110
+ }
111
+ // render column as is
112
+ this_1.renderColumn(slotb, col, false);
113
+ };
114
+ var this_1 = this;
115
+ for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {
116
+ var col = cols_1[_i];
117
+ _loop_1(col);
118
+ }
119
+ if (selectedBlockColumns) {
120
+ var buttonsContainer = domel('div', selectedBlockColumns.toDOM().parentElement)
121
+ .addClass("".concat(this.cssPrefix, "-buttons"));
122
+ buttonsContainer.addChild('button', function (b) { return b
123
+ .addClass("".concat(_this.cssPrefix, "-group-btn"))
124
+ .title(i18n.getText('AggrSettings', 'GroupBtn'))
125
+ .on('click', _this.groupBtnClickHandler.bind(_this)); });
126
+ if (this.selectState.columns.length == 1) {
127
+ buttonsContainer.addChild('button', function (b) { return b
128
+ .addClass("".concat(_this.cssPrefix, "-aggr-btn"))
129
+ .title(i18n.getText('AggrSettings', 'AggrBtn'))
130
+ .on('click', _this.aggrBtnClickHandler.bind(_this)); });
131
+ }
132
+ }
133
+ domel(this.slot)
134
+ .addChild('div', function (b) { return b
135
+ .addClass("".concat(_this.cssPrefix, "-counts"))
136
+ .addChild('label', function (b) { return b
137
+ .addClass('eqjs-ctrl-switch')
138
+ .addChild('input', function (b) {
139
+ b.attr('type', 'checkbox');
140
+ if (_this.state.recordCount) {
141
+ b.attr('checked', '');
142
+ }
143
+ b.on('change', _this.countsCheckboxChangeHandler.bind(_this));
144
+ })
145
+ .addChild('span', function (b) { return b
146
+ .addClass('slider round'); })
147
+ .addChild('span', function (b) { return b
148
+ .addClass('switch-text')
149
+ .addText(i18n.getText('AggrSettings', 'GroupCountsLabel')); }); }); })
150
+ .addChild('div', function (b) { return b
151
+ .addClass("".concat(_this.cssPrefix, "-grandtotals"))
152
+ .addChild('label', function (b) { return b
153
+ .addClass('eqjs-ctrl-switch')
154
+ .addChild('input', function (b) {
155
+ b.attr('type', 'checkbox');
156
+ if (_this.state.grandTotals) {
157
+ b.attr('checked', '');
158
+ }
159
+ b.on('change', _this.grandCheckboxChangeHandler.bind(_this));
160
+ })
161
+ .addChild('span', function (b) { return b
162
+ .addClass('slider round'); })
163
+ .addChild('span', function (b) { return b
164
+ .addClass('switch-text')
165
+ .addText(i18n.getText('AggrSettings', 'GrandTotalsLabel')); }); }); });
166
+ var groups = this.slot.querySelectorAll(".".concat(this.cssPrefix, "-group"));
167
+ groups.forEach(function (el) {
168
+ domel(el)
169
+ .addChild('div', function (b) { return b
170
+ .addClass("".concat(_this.cssPrefix, "-buttons"))
171
+ .addChild('button', function (b) { return b
172
+ .addClass("".concat(_this.cssPrefix, "-ungroup-btn"))
173
+ .title(i18n.getText('AggrSettings', 'UngroupBtn'))
174
+ .on('click', _this.removeGroupBtnClickHandler.bind(_this)); }); });
175
+ });
176
+ this.validateCheckboxes();
177
+ };
178
+ AggrSettingsRenderer.prototype.validateCheckboxes = function () {
179
+ if (this.selectState.columns.length === 0)
180
+ return;
181
+ var prevElement, prevInputEl, nextInputEl = null;
182
+ for (var i = 0; i < this.slot.childNodes.length; i++) {
183
+ var el = this.slot.childNodes[i];
184
+ if (el.classList.contains("".concat(this.cssPrefix, "-selected"))) {
185
+ if (prevElement && prevElement.classList.contains("".concat(this.cssPrefix, "-column"))) {
186
+ prevInputEl = prevElement;
187
+ }
188
+ }
189
+ else if (el.classList.contains("".concat(this.cssPrefix, "-column"))) {
190
+ if (prevElement && prevElement.classList.contains("".concat(this.cssPrefix, "-selected"))) {
191
+ nextInputEl = el;
192
+ }
193
+ }
194
+ prevElement = el;
195
+ }
196
+ ;
197
+ for (var i = 0; i < this.slot.childNodes.length; i++) {
198
+ var el = this.slot.childNodes[i];
199
+ if (el.classList.contains("".concat(this.cssPrefix, "-column")) && el != prevInputEl && el != nextInputEl) {
200
+ el.firstElementChild.firstElementChild.setAttribute('disabled', '');
201
+ }
202
+ }
203
+ ;
204
+ var selector = ".".concat(this.cssPrefix, "-selected>.").concat(this.cssPrefix, "-columns>.").concat(this.cssPrefix, "-column");
205
+ var selectedCols = this.slot.querySelectorAll(selector);
206
+ for (var i = 1; i < selectedCols.length - 1; i++) {
207
+ var el = selectedCols[i];
208
+ el.firstElementChild.firstElementChild.setAttribute('disabled', '');
209
+ }
210
+ };
211
+ AggrSettingsRenderer.prototype.isValid = function () {
212
+ var hasSelected = this.selectState.columns.length;
213
+ var hasAggrs = this.state.aggregates.length > 0;
214
+ var hasGroups = this.state.groups.length > 0;
215
+ var hasTotals = this.state.grandTotals;
216
+ var hasCounts = this.state.recordCount;
217
+ if (hasSelected)
218
+ return false;
219
+ if (hasGroups) {
220
+ return hasAggrs || hasCounts;
221
+ }
222
+ if (hasAggrs) {
223
+ return hasGroups || hasTotals;
224
+ }
225
+ return false;
226
+ };
227
+ AggrSettingsRenderer.prototype.getValidationMessage = function () {
228
+ var hasSelected = this.selectState.columns.length;
229
+ var hasAggrs = this.state.aggregates.length > 0;
230
+ var hasGroups = this.state.groups.length > 0;
231
+ var hasTotals = this.state.grandTotals;
232
+ var hasRecCount = this.state.recordCount;
233
+ if (hasSelected)
234
+ return "".concat(i18n.getText('AggrSettings', 'SelectedError'), " ");
235
+ if (hasGroups && !hasAggrs && !hasRecCount)
236
+ return "".concat(i18n.getText('AggrSettings', 'NoAggrOrCountError'), " ");
237
+ if (hasAggrs && !hasGroups && !hasTotals)
238
+ return "".concat(i18n.getText('AggrSettings', 'NoGroupsOrGrandError'), " ");
239
+ return "".concat(i18n.getText('AggrSettings', 'NoGroupsOrAggrError'), " ");
240
+ };
241
+ AggrSettingsRenderer.prototype.getSettings = function () {
242
+ var settings = new AggregationSettings(this.query);
243
+ for (var _i = 0, _a = this.state.groups; _i < _a.length; _i++) {
244
+ var group = _a[_i];
245
+ settings.addGroup({ columns: group.columns });
246
+ }
247
+ for (var _b = 0, _c = this.state.aggregates; _b < _c.length; _b++) {
248
+ var aggr = _c[_b];
249
+ settings.addAggregateColumn(aggr.colId, aggr.funcId);
250
+ }
251
+ if (this.state.grandTotals) {
252
+ settings.addGrandTotals();
253
+ }
254
+ if (this.state.recordCount) {
255
+ settings.addCounts();
256
+ }
257
+ return settings;
258
+ };
259
+ AggrSettingsRenderer.prototype.renderColumn = function (b, col, isTaken, funcId) {
260
+ var _this = this;
261
+ if (funcId === void 0) { funcId = null; }
262
+ b.addChild('div', function (b) {
263
+ b.data('colid', col.id);
264
+ var caption = funcId
265
+ ? "".concat(col.caption, " (").concat(_this.funcMap[funcId].caption, ")")
266
+ : col.caption;
267
+ if (!isTaken) {
268
+ b
269
+ .addClass("".concat(_this.cssPrefix, "-column"))
270
+ .addChild('label', function (b) { return b
271
+ .addClass('checkbox')
272
+ .addChild('input', function (b) {
273
+ b.attr('type', 'checkbox');
274
+ if (_this.selectState.columns.indexOf(col.id) >= 0) {
275
+ b.attr('checked', '');
276
+ }
277
+ b.on('change', _this.colCheckboxChangeHandler.bind(_this));
278
+ })
279
+ .addText(caption); });
280
+ }
281
+ else {
282
+ b
283
+ .addClass("".concat(_this.cssPrefix, "-column-used"))
284
+ .addText(caption);
285
+ }
286
+ });
287
+ };
288
+ AggrSettingsRenderer.prototype.getGroupForColumn = function (colId) {
289
+ var index = this.getGroupIndexForColumn(colId);
290
+ if (index >= 0)
291
+ return this.state.groups[index];
292
+ return null;
293
+ };
294
+ AggrSettingsRenderer.prototype.getGroupIndexForColumn = function (colId) {
295
+ for (var i = 0; i < this.state.groups.length; i++) {
296
+ var group = this.state.groups[i];
297
+ if (group.columns.indexOf(colId) >= 0)
298
+ return i;
299
+ }
300
+ return -1;
301
+ };
302
+ AggrSettingsRenderer.prototype.grandCheckboxChangeHandler = function (ev) {
303
+ this.state.grandTotals = !this.state.grandTotals;
304
+ this.onChanged && this.onChanged();
305
+ };
306
+ AggrSettingsRenderer.prototype.countsCheckboxChangeHandler = function (ev) {
307
+ this.state.recordCount = !this.state.recordCount;
308
+ this.onChanged && this.onChanged();
309
+ };
310
+ AggrSettingsRenderer.prototype.colCheckboxChangeHandler = function (ev) {
311
+ var input = ev.target;
312
+ var colId = input.parentElement.parentElement.getAttribute('data-colid');
313
+ // toggle column to track state
314
+ var index = this.selectState.columns.indexOf(colId);
315
+ if (index >= 0) {
316
+ this.selectState.columns.splice(index, 1);
317
+ }
318
+ else {
319
+ this.selectState.columns.push(colId);
320
+ var cols_2 = this.getAvailableColumns();
321
+ this.selectState.columns = this.selectState.columns.sort(function (col1, col2) {
322
+ var index1 = cols_2.findIndex(function (c) { return c.id == col1; });
323
+ var index2 = cols_2.findIndex(function (c) { return c.id == col2; });
324
+ return index1 - index2;
325
+ });
326
+ }
327
+ this.changed();
328
+ };
329
+ AggrSettingsRenderer.prototype.groupBtnClickHandler = function () {
330
+ this.state.groups.push({ columns: this.selectState.columns });
331
+ var cols = this.getAvailableColumns();
332
+ this.state.groups = this.state.groups.sort(function (g1, g2) {
333
+ var g1Index = cols.findIndex(function (c) { return c.id == g1.columns[0]; });
334
+ var g2Index = cols.findIndex(function (c) { return c.id == g2.columns[0]; });
335
+ return g1Index - g2Index;
336
+ });
337
+ this.dropSelectState();
338
+ this.changed();
339
+ };
340
+ AggrSettingsRenderer.prototype.removeGroupBtnClickHandler = function (ev) {
341
+ var btn = ev.target;
342
+ var index = Number.parseInt(btn.parentElement.parentElement.getAttribute('data-gindex'));
343
+ this.state.groups.splice(index, 1);
344
+ this.changed();
345
+ };
346
+ AggrSettingsRenderer.prototype.removeAggrBtnClickHandler = function (ev) {
347
+ var btn = ev.target;
348
+ var colId = btn.parentElement.parentElement.querySelector(".".concat(this.cssPrefix, "-column-used"))
349
+ .getAttribute('data-colid');
350
+ var index = this.state.aggregates.findIndex(function (a) { return a.colId == colId; });
351
+ if (index >= 0) {
352
+ this.state.aggregates.splice(index, 1);
353
+ this.changed();
354
+ }
355
+ };
356
+ AggrSettingsRenderer.prototype.aggrBtnClickHandler = function (ev) {
357
+ var _this = this;
358
+ var model = this.query.getModel();
359
+ var colId = this.selectState.columns[0];
360
+ var col = this.getAvailableColumns().filter(function (c) { return c.id == colId; })[0];
361
+ this.functionMenu.showMenu({
362
+ anchor: ev.target,
363
+ itemFilterCallback: function (item) {
364
+ return _this.funcMap[item.id].appliedTypes.indexOf(col.expr.dataType) >= 0;
365
+ },
366
+ itemSelectedCallback: function (data) {
367
+ _this.state.aggregates.push({
368
+ colId: colId,
369
+ funcId: data.id
370
+ });
371
+ _this.dropSelectState();
372
+ _this.changed();
373
+ }
374
+ });
375
+ };
376
+ AggrSettingsRenderer.prototype.clear = function () {
377
+ this.dropSelectState();
378
+ this.dropState();
379
+ this.changed();
380
+ };
381
+ AggrSettingsRenderer.prototype.dropSelectState = function () {
382
+ this.selectState = {
383
+ columns: []
384
+ };
385
+ };
386
+ AggrSettingsRenderer.prototype.dropState = function () {
387
+ this.state = {
388
+ groups: [],
389
+ aggregates: [],
390
+ recordCount: true,
391
+ grandTotals: false
392
+ };
393
+ };
394
+ AggrSettingsRenderer.prototype.changed = function () {
395
+ this.onChanged && this.onChanged();
396
+ this.renderCore();
397
+ };
398
+ AggrSettingsRenderer.prototype.createFunctionMenu = function () {
399
+ var model = this.query.getModel();
400
+ var funcs = this.query.getModel().getAggrFunctions();
401
+ var items = [];
402
+ for (var _i = 0, funcs_1 = funcs; _i < funcs_1.length; _i++) {
403
+ var func = funcs_1[_i];
404
+ if (!func)
405
+ continue;
406
+ this.funcMap[func.id] = func;
407
+ var funcCaption = model
408
+ .getAggrFunctionCaption(func.id);
409
+ var item = {
410
+ id: func.id,
411
+ text: funcCaption
412
+ };
413
+ items.push(item);
414
+ }
415
+ var menuId = this.slot.id;
416
+ if (menuId) {
417
+ menuId += '-FunctionsMenu';
418
+ }
419
+ var menuOptions = {
420
+ items: items,
421
+ id: menuId,
422
+ searchBoxAlwaysShown: false,
423
+ domWriteItemsId: true
424
+ };
425
+ this.functionMenu = new PopupMenu(menuOptions);
426
+ };
427
+ return AggrSettingsRenderer;
428
+ }());
429
+ export { AggrSettingsRenderer };
430
430
  //# sourceMappingURL=aggr_settings_renderer.js.map