@easyquery/ui 7.2.3-rc03 → 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 -34146
  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,697 +1,699 @@
1
- var __extends = (this && this.__extends) || (function () {
2
- var extendStatics = function (d, b) {
3
- extendStatics = Object.setPrototypeOf ||
4
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
- return extendStatics(d, b);
7
- };
8
- return function (d, b) {
9
- extendStatics(d, b);
10
- function __() { this.constructor = d; }
11
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
- };
13
- })();
14
- import { domel } from '@easydata/ui';
15
- import { EasyDataTable, DataType, utils as dataUtils, i18n } from '@easydata/core';
16
- import { EasyGrid } from '@easydata/ui';
17
- import { FacetType } from '../types/facet_type';
18
- import { ResultFacet } from './result_facet';
19
- import { browserUtils } from '../utils/browser_utils';
20
- var AggrFunc;
21
- (function (AggrFunc) {
22
- AggrFunc["Sum"] = "SUM";
23
- AggrFunc["Average"] = "AVG";
24
- AggrFunc["Min"] = "MIN";
25
- AggrFunc["Max"] = "MAX";
26
- AggrFunc["Count"] = "COUNT";
27
- })(AggrFunc || (AggrFunc = {}));
28
- var FormFieldType;
29
- (function (FormFieldType) {
30
- FormFieldType[FormFieldType["ColumnField"] = 0] = "ColumnField";
31
- FormFieldType[FormFieldType["RowField"] = 1] = "RowField";
32
- FormFieldType[FormFieldType["CellData"] = 2] = "CellData";
33
- })(FormFieldType || (FormFieldType = {}));
34
- var DFMT_REGEX = /{0:(.*?)}/g;
35
- var PivotTableFacet = /** @class */ (function (_super) {
36
- __extends(PivotTableFacet, _super);
37
- function PivotTableFacet() {
38
- var _this = _super !== null && _super.apply(this, arguments) || this;
39
- _this.title = i18n.getText('Facets', 'Pivot', 'FacetTitle');
40
- _this.dialogTitle = i18n.getText('Facets', 'Pivot', 'DlgTitle');
41
- _this.pivotTable = new EasyDataTable();
42
- return _this;
43
- }
44
- PivotTableFacet.prototype.init = function (slot) {
45
- var _this = this;
46
- _super.prototype.init.call(this, slot);
47
- this.options.maxRowCount = this.options.maxRowCount || 500;
48
- this.options.viewportRowsCount = this.options.viewportRowsCount || 50;
49
- this.grid = new EasyGrid({
50
- slot: this.contentDiv,
51
- dataTable: this.pivotTable,
52
- paging: {
53
- enabled: false,
54
- pageSize: this.options.maxRowCount
55
- },
56
- viewportRowsCount: this.options.viewportRowsCount,
57
- useRowNumeration: false,
58
- showPlusButton: false,
59
- allowDragDrop: false,
60
- onGetCellRenderer: function (column, defaultRenderer) {
61
- if (column.dataColumn) {
62
- if (column.dataColumn.id == "total") {
63
- return function (value, column, cell, rowEl) {
64
- defaultRenderer(value, column, cell, rowEl);
65
- cell.classList.add('pivot-cell-total');
66
- };
67
- }
68
- if (_this.settings.totalsRow) {
69
- var colIndex = _this.pivotTable.columns.getIndex(column.dataColumn.id);
70
- var isFirst = colIndex === 0;
71
- if (isFirst) {
72
- return function (value, column, cell, rowEl) {
73
- var idx = Number.parseInt(rowEl.getAttribute('data-row-idx'));
74
- var isLast = idx === _this.pivotTable.getCachedCount() - 1;
75
- if (isLast) {
76
- value = i18n.getText('Facets', 'Pivot', 'TotalGridLabel');
77
- }
78
- defaultRenderer(value, column, cell, rowEl);
79
- };
80
- }
81
- }
82
- }
83
- }
84
- });
85
- };
86
- PivotTableFacet.prototype.getType = function () {
87
- return FacetType.PivotTable;
88
- };
89
- PivotTableFacet.prototype.destroy = function () {
90
- if (this.grid) {
91
- this.grid.destroy();
92
- }
93
- };
94
- PivotTableFacet.prototype.createAggrFuncSelectBuilder = function (aggrFunc) {
95
- var model = this.getContext().getModel();
96
- var csb = domel('select');
97
- var aggrfuncs = Object.keys(AggrFunc).map(function (k) { return AggrFunc[k]; });
98
- var _loop_1 = function (aggrfunc) {
99
- csb.addChild('option', function (b) {
100
- b
101
- .attr('value', aggrfunc)
102
- .text(model.getAggrFunctionCaption(aggrfunc));
103
- });
104
- };
105
- for (var _i = 0, aggrfuncs_1 = aggrfuncs; _i < aggrfuncs_1.length; _i++) {
106
- var aggrfunc = aggrfuncs_1[_i];
107
- _loop_1(aggrfunc);
108
- }
109
- var options = csb.toDOM().querySelectorAll('option');
110
- if (aggrFunc != undefined) {
111
- options.forEach(function (option) {
112
- if (option.value == aggrFunc) {
113
- option.selected = true;
114
- }
115
- });
116
- }
117
- else {
118
- options[0].selected = true;
119
- }
120
- return csb;
121
- };
122
- PivotTableFacet.prototype.createColumnsSelectBuilder = function (allowedTypes, colName, formFieldType) {
123
- var dataTable = this.getContextDataTable();
124
- var csb = domel('select');
125
- var firstNumericColIndex = null;
126
- var optionIndex = 0;
127
- var _loop_2 = function (i) {
128
- var column = dataTable.columns.get(i);
129
- var colLabel = column.label;
130
- var colType = column.type;
131
- var colId = column.id;
132
- if (allowedTypes && allowedTypes.indexOf(colType) < 0)
133
- return "continue";
134
- if (firstNumericColIndex === null && dataUtils.isNumericType(colType)) {
135
- firstNumericColIndex = optionIndex;
136
- }
137
- csb.addChild('option', function (b) {
138
- b
139
- .attr('value', colId)
140
- .text(colLabel);
141
- });
142
- optionIndex++;
143
- };
144
- for (var i = 0; i < dataTable.columns.count; i++) {
145
- _loop_2(i);
146
- }
147
- var options = Array.from(csb.toDOM().querySelectorAll('option'));
148
- if (options.length > 0) {
149
- if (colName != undefined) {
150
- for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {
151
- var option = options_1[_i];
152
- if (option.value == colName) {
153
- csb.toDOM().value = option.value;
154
- break;
155
- }
156
- }
157
- }
158
- else {
159
- switch (formFieldType) {
160
- case FormFieldType.ColumnField: {
161
- csb.toDOM().value = options[0].value;
162
- break;
163
- }
164
- case FormFieldType.RowField: {
165
- csb.toDOM().value = options.length > 1 ? options[1].value : options[0].value;
166
- break;
167
- }
168
- case FormFieldType.CellData: {
169
- csb.toDOM().value = firstNumericColIndex === null ? options[0].value : options[firstNumericColIndex].value;
170
- break;
171
- }
172
- }
173
- }
174
- }
175
- return csb;
176
- };
177
- PivotTableFacet.prototype.renderFormFields = function (form, fieldsContainer) {
178
- var _this = this;
179
- _super.prototype.renderFormFields.call(this, form, fieldsContainer);
180
- var settings = this.settings || { totalsRow: true, totalsCol: true };
181
- var colTypes = [DataType.String, DataType.Date, DataType.DateTime, DataType.Int32,
182
- DataType.Int64, DataType.Word, DataType.Byte];
183
- var fieldTypes = [DataType.String, DataType.Float, DataType.Int32,
184
- DataType.Int64, DataType.Word, DataType.Byte, DataType.Currency];
185
- var isIE = browserUtils.isIE();
186
- var current = fieldsContainer;
187
- var horizClass = isIE ? 'kfrm-fields-ie is-horizontal' : 'kfrm-fields is-horizontal';
188
- var getCurrent = function () {
189
- if (isIE) {
190
- return domel('div', fieldsContainer)
191
- .addClass('kfrm-field-ie')
192
- .toDOM();
193
- }
194
- else {
195
- return fieldsContainer;
196
- }
197
- };
198
- if (isIE) {
199
- domel(fieldsContainer)
200
- .addChildElement(getCurrent());
201
- }
202
- else {
203
- domel(fieldsContainer)
204
- .addChild('div')
205
- .addChild('div');
206
- }
207
- current = getCurrent();
208
- domel(current)
209
- .addChild('label', function (b) { return b
210
- .attr('for', 'column_field')
211
- .text(i18n.getText('Facets', 'Pivot', 'ColumnFieldSelectorLabel')); })
212
- .addChild('div', function (b) { return b
213
- .addClass(horizClass)
214
- .addChild('div', function (b) { return b
215
- .addClass('kfrm-select')
216
- .attr('name', 'column_field')
217
- .addChildElement(_this.createColumnsSelectBuilder(colTypes, settings.colName, FormFieldType.ColumnField)
218
- .id('pivotTableColFieldSelector')
219
- .toDOM()); })
220
- .addChild('button', function (b) { return b
221
- .addClass('kfrm-button')
222
- .addClass('eqjs-facets-button-swap')
223
- .attr('title', i18n.getText('Facets', 'Pivot', 'SwapBtnTitle'))
224
- .on('click', function () {
225
- var colSelect = document.getElementById('pivotTableColFieldSelector');
226
- var rowSelect = document.getElementById('pivotTableRowFieldSelector');
227
- var tmp = colSelect.value;
228
- colSelect.value = rowSelect.value;
229
- rowSelect.value = tmp;
230
- }); }); });
231
- current = getCurrent();
232
- domel(current)
233
- .addChild('label', function (b) { return b
234
- .attr('for', 'row_field')
235
- .text(i18n.getText('Facets', 'Pivot', 'RowFieldSelectorLabel')); })
236
- .addChild('div', function (b) { return b
237
- .addClass('kfrm-select')
238
- .attr('name', 'row_field')
239
- .addChildElement(_this.createColumnsSelectBuilder(colTypes, settings.rowName, FormFieldType.RowField)
240
- .id('pivotTableRowFieldSelector')
241
- .toDOM()); });
242
- current = getCurrent();
243
- domel(current)
244
- .addChild('label', function (b) { return b
245
- .attr('for', 'data_function')
246
- .text(i18n.getText('Facets', 'Pivot', 'CellDataSelectorLabel')); })
247
- .addChild('div', function (b) { return b
248
- .addClass(horizClass)
249
- .addChild('div', function (b) { return b
250
- .addClass('kfrm-select')
251
- .attr('name', 'data_function')
252
- .addChildElement(_this.createAggrFuncSelectBuilder(settings.aggrFunc)
253
- .id('pivotTableAggrFuncSelector')
254
- .toDOM()); })
255
- .addChild('label', function (b) { return b.addText('of '); })
256
- .addChild('div', function (b) { return b
257
- .addClass('kfrm-select')
258
- .attr('name', 'data_column')
259
- .addChildElement(_this.createColumnsSelectBuilder(fieldTypes, settings.fieldName, FormFieldType.CellData)
260
- .on('change', function (ev) {
261
- var colId = ev.target.value;
262
- _this.validateSelectedField(colId);
263
- })
264
- .id('pivotTableCellFieldSelector')
265
- .toDOM()); }); });
266
- current = getCurrent();
267
- domel(current)
268
- .addChild('div')
269
- .addChild('div', function (b) { return b
270
- .addClass(horizClass)
271
- .addChild('label', function (b) { return b
272
- .addClass('checkbox')
273
- .addChild('input', function (b) {
274
- b
275
- .id('pivotTableHasTotalsRow')
276
- .type('checkbox');
277
- if (settings.totalsRow)
278
- b.attr('checked', '');
279
- })
280
- .addText(' ' + i18n.getText('Facets', 'Pivot', 'TotalsRowLabel')); })
281
- .addChild('label', function (b) { return b
282
- .addClass('checkbox')
283
- .addChild('input', function (b) {
284
- b
285
- .id('pivotTableHasTotalsCol')
286
- .type('checkbox');
287
- if (settings.totalsCol)
288
- b.attr('checked', '');
289
- })
290
- .addText(' ' + i18n.getText('Facets', 'Pivot', 'TotalsColLabel')); }); });
291
- };
292
- PivotTableFacet.prototype.afterDialogOpened = function (dlg) {
293
- var colId = document.getElementById('pivotTableCellFieldSelector').value;
294
- if (colId) {
295
- this.validateSelectedField(colId);
296
- }
297
- if (this.getQuery().getColumns().length <= 2) {
298
- dlg.showAlert('The dataset should contain at least three columns to build a pivot table', 'error');
299
- dlg.getSubmitButtonElement().disabled = true;
300
- }
301
- };
302
- PivotTableFacet.prototype.validateSelectedField = function (colId) {
303
- var dataTable = this.getContextDataTable();
304
- var colIndex = dataTable.columns.getIndex(colId);
305
- var col = dataTable.columns.get(colIndex);
306
- var aggrSelector = document.getElementById('pivotTableAggrFuncSelector');
307
- if (col.type == DataType.String) {
308
- aggrSelector.disabled = true;
309
- aggrSelector.value = AggrFunc.Count;
310
- }
311
- else {
312
- aggrSelector.disabled = false;
313
- }
314
- };
315
- PivotTableFacet.prototype.submitSettingsDialog = function () {
316
- var result = _super.prototype.submitSettingsDialog.call(this);
317
- if (result) {
318
- this.settings = {
319
- colName: document.getElementById('pivotTableColFieldSelector').value,
320
- rowName: document.getElementById('pivotTableRowFieldSelector').value,
321
- aggrFunc: document.getElementById('pivotTableAggrFuncSelector').value,
322
- fieldName: document.getElementById('pivotTableCellFieldSelector').value,
323
- totalsRow: document.getElementById('pivotTableHasTotalsRow').checked,
324
- totalsCol: document.getElementById('pivotTableHasTotalsCol').checked
325
- };
326
- this.refresh();
327
- }
328
- return result;
329
- };
330
- PivotTableFacet.prototype.saveToData = function () {
331
- var data = _super.prototype.saveToData.call(this);
332
- if (this.settings) {
333
- dataUtils.assignDeep(data, this.settings);
334
- }
335
- return data;
336
- };
337
- PivotTableFacet.prototype.loadFromData = function (data) {
338
- _super.prototype.loadFromData.call(this, data);
339
- if (data) {
340
- this.settings = dataUtils.assignDeep(this.settings, data);
341
- if (this.settings.aggrFunc == 'AVERAGE') {
342
- this.settings.aggrFunc = AggrFunc.Average;
343
- }
344
- }
345
- };
346
- PivotTableFacet.prototype.refreshCore = function () {
347
- this.updatePivotData();
348
- if (this.grid) {
349
- var dataSize = this.pivotTable.getTotal();
350
- var maxRow = this.grid.options.paging.pageSize;
351
- if (dataSize > maxRow) {
352
- this.contentDiv.classList.remove('pivot-grid-with-totals');
353
- this.showErrorMessage(i18n.getText('Facets', 'ErrTooMuchData'));
354
- }
355
- if (this.options.viewportRowsCount > dataSize) {
356
- this.grid.options.viewportRowsCount = dataSize;
357
- }
358
- else {
359
- this.grid.options.viewportRowsCount = this.options.viewportRowsCount;
360
- }
361
- this.grid.refresh();
362
- }
363
- };
364
- PivotTableFacet.prototype.getContextDataTable = function () {
365
- var context = this.getContext();
366
- return context.resultTable;
367
- };
368
- PivotTableFacet.prototype.updatePivotData = function () {
369
- this.pivotTable.clear();
370
- var dataTable = this.getContextDataTable();
371
- if (!dataTable || dataTable.getTotal() == 0) {
372
- return;
373
- }
374
- if (!this.settings) {
375
- return;
376
- }
377
- var colName = this.settings.colName;
378
- var rowName = this.settings.rowName;
379
- var fieldName = this.settings.fieldName;
380
- var colIdx = dataTable.columns.getIndex(colName);
381
- var rowIdx = dataTable.columns.getIndex(rowName);
382
- var fieldIdx = dataTable.columns.getIndex(fieldName);
383
- if (colIdx == undefined || rowIdx == undefined || fieldIdx == undefined) {
384
- this.showUnableDisplayMessage(i18n.getText('Facets', 'ErrQueryChanged'));
385
- return;
386
- }
387
- var columnField = dataTable.columns.get(fieldIdx);
388
- var columnCol = dataTable.columns.get(colIdx);
389
- var columnRow = dataTable.columns.get(rowIdx);
390
- var rowLabel = columnRow.label;
391
- var rowType = columnRow.type;
392
- var colLabel = columnCol.label;
393
- var colValues = [];
394
- var rowValues = [];
395
- var rows = dataTable.getCachedRows();
396
- for (var i = 0; i < rows.length; i++) {
397
- var colValue = rows[i].getValue(colIdx);
398
- if (colValues.indexOf(colValue) < 0) {
399
- colValues.push(colValue);
400
- }
401
- var rowValue = rows[i].getValue(rowIdx);
402
- if (rowValues.indexOf(rowValue) < 0) {
403
- rowValues.push(rowValue);
404
- }
405
- }
406
- this.pivotTable.columns.add({
407
- id: rowLabel + '\\' + colLabel,
408
- label: rowLabel + '\\' + colLabel,
409
- description: '',
410
- type: rowType,
411
- dfmt: columnRow.displayFormat,
412
- style: columnRow.style
413
- });
414
- var null_columns = [];
415
- var colFieldFormatter = null;
416
- if (dataUtils.isNumericType(columnCol.type)) {
417
- colFieldFormatter = this.formatNumber;
418
- }
419
- else if (dataUtils.getDateDataTypes().indexOf(columnCol.type) >= 0) {
420
- colFieldFormatter = this.formatDate;
421
- }
422
- for (var i = 0; i < colValues.length; i++) {
423
- var colValue = colValues[i];
424
- if (!colValue) {
425
- null_columns.push(i);
426
- }
427
- else {
428
- var label = colFieldFormatter
429
- ? colFieldFormatter(columnCol, colValue)
430
- : colValue;
431
- this.pivotTable.columns.add({
432
- id: colValue,
433
- label: label,
434
- description: '',
435
- dfmt: columnField.displayFormat,
436
- type: this.settings.aggrFunc !== AggrFunc.Count
437
- ? columnField.type : DataType.Int64,
438
- style: columnField.style
439
- });
440
- }
441
- }
442
- var new_rows = [];
443
- for (var i = 0; i < rowValues.length; i++) {
444
- new_rows.push([]);
445
- new_rows[i].push(rowValues[i]);
446
- }
447
- for (var i = 0; i < rowValues.length; i++) {
448
- for (var j = 0; j < colValues.length; j++) {
449
- if (null_columns.indexOf(j) >= 0)
450
- continue;
451
- new_rows[i].push(this.calcAggrFunc(this.settings.aggrFunc, {
452
- colName: this.settings.colName,
453
- rowName: this.settings.rowName,
454
- fieldName: this.settings.fieldName,
455
- rowValue: rowValues[i],
456
- colValue: colValues[j]
457
- }));
458
- }
459
- }
460
- if (this.settings.totalsCol) {
461
- this.pivotTable.columns.add({
462
- id: "total",
463
- label: i18n.getText('Facets', 'Pivot', 'TotalGridLabel'),
464
- description: '',
465
- dfmt: columnField.displayFormat,
466
- type: this.settings.aggrFunc !== AggrFunc.Count
467
- ? columnField.type : DataType.Int64
468
- });
469
- for (var i = 0; i < new_rows.length; i++) {
470
- var row = new_rows[i];
471
- var totalByRow = 0;
472
- if (this.settings.aggrFunc == AggrFunc.Min
473
- || this.settings.aggrFunc == AggrFunc.Max) {
474
- totalByRow = row[1];
475
- }
476
- for (var j = 1; j < row.length; j++) {
477
- var value = row[j];
478
- if (value !== null) {
479
- if (this.settings.aggrFunc === AggrFunc.Min) {
480
- if (value < totalByRow)
481
- totalByRow = value;
482
- }
483
- else if (this.settings.aggrFunc === AggrFunc.Max) {
484
- if (value > totalByRow)
485
- totalByRow = value;
486
- }
487
- else {
488
- totalByRow += value;
489
- }
490
- }
491
- }
492
- if (this.settings.aggrFunc === AggrFunc.Average) {
493
- totalByRow /= row.length - 1;
494
- }
495
- row.push(totalByRow);
496
- }
497
- }
498
- for (var _i = 0, new_rows_1 = new_rows; _i < new_rows_1.length; _i++) {
499
- var row = new_rows_1[_i];
500
- this.pivotTable.addRow(row);
501
- }
502
- if (this.settings.totalsRow) {
503
- var total_row = [];
504
- // to be able to create date value
505
- total_row.push(null);
506
- for (var i = 1; i < this.pivotTable.columns.count; i++) {
507
- var rows_1 = this.pivotTable.getCachedRows();
508
- var totalByCol = 0;
509
- if (this.settings.aggrFunc == AggrFunc.Min
510
- || this.settings.aggrFunc == AggrFunc.Max) {
511
- totalByCol = rows_1[0].getValue(i);
512
- }
513
- for (var j = 0; j < rows_1.length; j++) {
514
- var value = rows_1[j].getValue(i);
515
- if (value !== null) {
516
- if (this.settings.aggrFunc === AggrFunc.Min) {
517
- if (value < totalByCol)
518
- totalByCol = value;
519
- }
520
- else if (this.settings.aggrFunc === AggrFunc.Max) {
521
- if (value > totalByCol)
522
- totalByCol = value;
523
- }
524
- else {
525
- totalByCol += value;
526
- }
527
- }
528
- }
529
- if (this.settings.aggrFunc === AggrFunc.Average) {
530
- totalByCol /= rows_1.length;
531
- }
532
- total_row.push(totalByCol);
533
- }
534
- this.pivotTable.addRow(total_row);
535
- this.contentDiv.classList.add('pivot-grid-with-totals');
536
- }
537
- else {
538
- this.contentDiv.classList.remove('pivot-grid-with-totals');
539
- }
540
- };
541
- PivotTableFacet.prototype.calcAggrFunc = function (func, options) {
542
- switch (func) {
543
- case AggrFunc.Sum:
544
- return this.sum(options);
545
- case AggrFunc.Average:
546
- return this.average(options);
547
- case AggrFunc.Min:
548
- return this.min(options);
549
- case AggrFunc.Max:
550
- return this.max(options);
551
- case AggrFunc.Count:
552
- return this.count(options);
553
- default:
554
- return 0;
555
- }
556
- };
557
- PivotTableFacet.prototype.getSettings = function () {
558
- return this.settings;
559
- };
560
- PivotTableFacet.prototype.formatDate = function (column, value) {
561
- var isDate = Object.prototype.toString.call(value) === '[object Date]';
562
- var strValue = (value || '').toString();
563
- if (isDate) {
564
- if (column && column.displayFormat
565
- && DFMT_REGEX.test(column.displayFormat)) {
566
- strValue = column.displayFormat.replace(DFMT_REGEX, function (_, $1) {
567
- return i18n.dateTimeToStr(value, column.type, $1);
568
- });
569
- }
570
- else {
571
- var locale = i18n.getCurrentLocale();
572
- var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };
573
- switch (column.type) {
574
- case DataType.Date:
575
- strValue = value.toLocaleDateString(locale);
576
- break;
577
- case DataType.Time:
578
- strValue = value.toLocaleTimeString(locale, timeOptions);
579
- break;
580
- case DataType.DateTime:
581
- strValue = value.toLocaleDateString(locale) + " " + value.toLocaleTimeString(locale, timeOptions);
582
- break;
583
- }
584
- }
585
- }
586
- return strValue;
587
- };
588
- PivotTableFacet.prototype.formatNumber = function (column, value) {
589
- var strValue = (value || '').toString();
590
- if (typeof value == 'number') {
591
- if (column && column.displayFormat
592
- && DFMT_REGEX.test(column.displayFormat)) {
593
- strValue = column.displayFormat.replace(DFMT_REGEX, function (_, $1) {
594
- return i18n.numberToStr(value, $1);
595
- });
596
- }
597
- else {
598
- strValue = value.toLocaleString();
599
- }
600
- }
601
- return strValue;
602
- };
603
- PivotTableFacet.prototype.sum = function (options) {
604
- var result = 0;
605
- var dataTable = this.getContextDataTable();
606
- var rows = dataTable.getCachedRows();
607
- for (var i = 0; i < rows.length; i++) {
608
- var rowValue = rows[i].getValue(options.rowName);
609
- var colValue = rows[i].getValue(options.colName);
610
- if (rowValue !== options.rowValue
611
- || colValue !== options.colValue) {
612
- continue;
613
- }
614
- var fieldValue = rows[i].getValue(options.fieldName);
615
- result += fieldValue;
616
- }
617
- return result;
618
- };
619
- PivotTableFacet.prototype.average = function (options) {
620
- var result = 0;
621
- var count = 0;
622
- var dataTable = this.getContextDataTable();
623
- var rows = dataTable.getCachedRows();
624
- for (var i = 0; i < rows.length; i++) {
625
- var rowValue = rows[i].getValue(options.rowName);
626
- var colValue = rows[i].getValue(options.colName);
627
- if (rowValue !== options.rowValue
628
- || colValue !== options.colValue) {
629
- continue;
630
- }
631
- var fieldValue = rows[i].getValue(options.fieldName);
632
- result += fieldValue;
633
- count++;
634
- }
635
- if (count != 0)
636
- result = result / count;
637
- return result;
638
- };
639
- PivotTableFacet.prototype.min = function (options) {
640
- var min = Number.MAX_SAFE_INTEGER;
641
- var dataTable = this.getContextDataTable();
642
- var rows = dataTable.getCachedRows();
643
- for (var i = 0; i < rows.length; i++) {
644
- var rowValue = rows[i].getValue(options.rowName);
645
- var colValue = rows[i].getValue(options.colName);
646
- if (rowValue !== options.rowValue
647
- || colValue !== options.colValue) {
648
- continue;
649
- }
650
- var fieldValue = rows[i].getValue(options.fieldName);
651
- if (fieldValue < min) {
652
- min = fieldValue;
653
- }
654
- }
655
- if (min == Number.MAX_SAFE_INTEGER)
656
- return null;
657
- return min;
658
- };
659
- PivotTableFacet.prototype.max = function (options) {
660
- var max = Number.MIN_SAFE_INTEGER;
661
- var dataTable = this.getContextDataTable();
662
- var rows = dataTable.getCachedRows();
663
- for (var i = 0; i < rows.length; i++) {
664
- var rowValue = rows[i].getValue(options.rowName);
665
- var colValue = rows[i].getValue(options.colName);
666
- if (rowValue !== options.rowValue
667
- || colValue !== options.colValue) {
668
- continue;
669
- }
670
- var fieldValue = rows[i].getValue(options.fieldName);
671
- if (fieldValue > max) {
672
- max = fieldValue;
673
- }
674
- }
675
- if (max == Number.MIN_SAFE_INTEGER)
676
- return null;
677
- return max;
678
- };
679
- PivotTableFacet.prototype.count = function (options) {
680
- var dataTable = this.getContextDataTable();
681
- var count = 0;
682
- var rows = dataTable.getCachedRows();
683
- for (var i = 0; i < rows.length; i++) {
684
- var rowValue = rows[i].getValue(options.rowName);
685
- var colValue = rows[i].getValue(options.colName);
686
- if (rowValue !== options.rowValue
687
- || colValue !== options.colValue) {
688
- continue;
689
- }
690
- count++;
691
- }
692
- return count;
693
- };
694
- return PivotTableFacet;
695
- }(ResultFacet));
696
- export { PivotTableFacet };
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ import { domel } from '@easydata/ui';
17
+ import { EasyDataTable, DataType, utils as dataUtils, i18n } from '@easydata/core';
18
+ import { EasyGrid } from '@easydata/ui';
19
+ import { FacetType } from '../types/facet_type';
20
+ import { ResultFacet } from './result_facet';
21
+ import { browserUtils } from '../utils/browser_utils';
22
+ var AggrFunc;
23
+ (function (AggrFunc) {
24
+ AggrFunc["Sum"] = "SUM";
25
+ AggrFunc["Average"] = "AVG";
26
+ AggrFunc["Min"] = "MIN";
27
+ AggrFunc["Max"] = "MAX";
28
+ AggrFunc["Count"] = "COUNT";
29
+ })(AggrFunc || (AggrFunc = {}));
30
+ var FormFieldType;
31
+ (function (FormFieldType) {
32
+ FormFieldType[FormFieldType["ColumnField"] = 0] = "ColumnField";
33
+ FormFieldType[FormFieldType["RowField"] = 1] = "RowField";
34
+ FormFieldType[FormFieldType["CellData"] = 2] = "CellData";
35
+ })(FormFieldType || (FormFieldType = {}));
36
+ var DFMT_REGEX = /{0:(.*?)}/g;
37
+ var PivotTableFacet = /** @class */ (function (_super) {
38
+ __extends(PivotTableFacet, _super);
39
+ function PivotTableFacet() {
40
+ var _this = _super !== null && _super.apply(this, arguments) || this;
41
+ _this.title = i18n.getText('Facets', 'Pivot', 'FacetTitle');
42
+ _this.dialogTitle = i18n.getText('Facets', 'Pivot', 'DlgTitle');
43
+ _this.pivotTable = new EasyDataTable();
44
+ return _this;
45
+ }
46
+ PivotTableFacet.prototype.init = function (slot) {
47
+ var _this = this;
48
+ _super.prototype.init.call(this, slot);
49
+ this.options.maxRowCount = this.options.maxRowCount || 500;
50
+ this.options.viewportRowsCount = this.options.viewportRowsCount || 50;
51
+ this.grid = new EasyGrid({
52
+ slot: this.contentDiv,
53
+ dataTable: this.pivotTable,
54
+ paging: {
55
+ enabled: false,
56
+ pageSize: this.options.maxRowCount
57
+ },
58
+ viewportRowsCount: this.options.viewportRowsCount,
59
+ useRowNumeration: false,
60
+ showPlusButton: false,
61
+ allowDragDrop: false,
62
+ onGetCellRenderer: function (column, defaultRenderer) {
63
+ if (column.dataColumn) {
64
+ if (column.dataColumn.id == "total") {
65
+ return function (value, column, cell, rowEl) {
66
+ defaultRenderer(value, column, cell, rowEl);
67
+ cell.classList.add('pivot-cell-total');
68
+ };
69
+ }
70
+ if (_this.settings.totalsRow) {
71
+ var colIndex = _this.pivotTable.columns.getIndex(column.dataColumn.id);
72
+ var isFirst = colIndex === 0;
73
+ if (isFirst) {
74
+ return function (value, column, cell, rowEl) {
75
+ var idx = Number.parseInt(rowEl.getAttribute('data-row-idx'));
76
+ var isLast = idx === _this.pivotTable.getCachedCount() - 1;
77
+ if (isLast) {
78
+ value = i18n.getText('Facets', 'Pivot', 'TotalGridLabel');
79
+ }
80
+ defaultRenderer(value, column, cell, rowEl);
81
+ };
82
+ }
83
+ }
84
+ }
85
+ }
86
+ });
87
+ };
88
+ PivotTableFacet.prototype.getType = function () {
89
+ return FacetType.PivotTable;
90
+ };
91
+ PivotTableFacet.prototype.destroy = function () {
92
+ if (this.grid) {
93
+ this.grid.destroy();
94
+ }
95
+ };
96
+ PivotTableFacet.prototype.createAggrFuncSelectBuilder = function (aggrFunc) {
97
+ var model = this.getContext().getModel();
98
+ var csb = domel('select');
99
+ var aggrfuncs = Object.keys(AggrFunc).map(function (k) { return AggrFunc[k]; });
100
+ var _loop_1 = function (aggrfunc) {
101
+ csb.addChild('option', function (b) {
102
+ b
103
+ .attr('value', aggrfunc)
104
+ .text(model.getAggrFunctionCaption(aggrfunc));
105
+ });
106
+ };
107
+ for (var _i = 0, aggrfuncs_1 = aggrfuncs; _i < aggrfuncs_1.length; _i++) {
108
+ var aggrfunc = aggrfuncs_1[_i];
109
+ _loop_1(aggrfunc);
110
+ }
111
+ var options = csb.toDOM().querySelectorAll('option');
112
+ if (aggrFunc != undefined) {
113
+ options.forEach(function (option) {
114
+ if (option.value == aggrFunc) {
115
+ option.selected = true;
116
+ }
117
+ });
118
+ }
119
+ else {
120
+ options[0].selected = true;
121
+ }
122
+ return csb;
123
+ };
124
+ PivotTableFacet.prototype.createColumnsSelectBuilder = function (allowedTypes, colName, formFieldType) {
125
+ var dataTable = this.getContextDataTable();
126
+ var csb = domel('select');
127
+ var firstNumericColIndex = null;
128
+ var optionIndex = 0;
129
+ var _loop_2 = function (i) {
130
+ var column = dataTable.columns.get(i);
131
+ var colLabel = column.label;
132
+ var colType = column.type;
133
+ var colId = column.id;
134
+ if (allowedTypes && allowedTypes.indexOf(colType) < 0)
135
+ return "continue";
136
+ if (firstNumericColIndex === null && dataUtils.isNumericType(colType)) {
137
+ firstNumericColIndex = optionIndex;
138
+ }
139
+ csb.addChild('option', function (b) {
140
+ b
141
+ .attr('value', colId)
142
+ .text(colLabel);
143
+ });
144
+ optionIndex++;
145
+ };
146
+ for (var i = 0; i < dataTable.columns.count; i++) {
147
+ _loop_2(i);
148
+ }
149
+ var options = Array.from(csb.toDOM().querySelectorAll('option'));
150
+ if (options.length > 0) {
151
+ if (colName != undefined) {
152
+ for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {
153
+ var option = options_1[_i];
154
+ if (option.value == colName) {
155
+ csb.toDOM().value = option.value;
156
+ break;
157
+ }
158
+ }
159
+ }
160
+ else {
161
+ switch (formFieldType) {
162
+ case FormFieldType.ColumnField: {
163
+ csb.toDOM().value = options[0].value;
164
+ break;
165
+ }
166
+ case FormFieldType.RowField: {
167
+ csb.toDOM().value = options.length > 1 ? options[1].value : options[0].value;
168
+ break;
169
+ }
170
+ case FormFieldType.CellData: {
171
+ csb.toDOM().value = firstNumericColIndex === null ? options[0].value : options[firstNumericColIndex].value;
172
+ break;
173
+ }
174
+ }
175
+ }
176
+ }
177
+ return csb;
178
+ };
179
+ PivotTableFacet.prototype.renderFormFields = function (form, fieldsContainer) {
180
+ var _this = this;
181
+ _super.prototype.renderFormFields.call(this, form, fieldsContainer);
182
+ var settings = this.settings || { totalsRow: true, totalsCol: true };
183
+ var colTypes = [DataType.String, DataType.Date, DataType.DateTime, DataType.Int32,
184
+ DataType.Int64, DataType.Word, DataType.Byte];
185
+ var fieldTypes = [DataType.String, DataType.Float, DataType.Int32,
186
+ DataType.Int64, DataType.Word, DataType.Byte, DataType.Currency];
187
+ var isIE = browserUtils.isIE();
188
+ var current = fieldsContainer;
189
+ var horizClass = isIE ? 'kfrm-fields-ie is-horizontal' : 'kfrm-fields is-horizontal';
190
+ var getCurrent = function () {
191
+ if (isIE) {
192
+ return domel('div', fieldsContainer)
193
+ .addClass('kfrm-field-ie')
194
+ .toDOM();
195
+ }
196
+ else {
197
+ return fieldsContainer;
198
+ }
199
+ };
200
+ if (isIE) {
201
+ domel(fieldsContainer)
202
+ .addChildElement(getCurrent());
203
+ }
204
+ else {
205
+ domel(fieldsContainer)
206
+ .addChild('div')
207
+ .addChild('div');
208
+ }
209
+ current = getCurrent();
210
+ domel(current)
211
+ .addChild('label', function (b) { return b
212
+ .attr('for', 'column_field')
213
+ .text(i18n.getText('Facets', 'Pivot', 'ColumnFieldSelectorLabel')); })
214
+ .addChild('div', function (b) { return b
215
+ .addClass(horizClass)
216
+ .addChild('div', function (b) { return b
217
+ .addClass('kfrm-select')
218
+ .attr('name', 'column_field')
219
+ .addChildElement(_this.createColumnsSelectBuilder(colTypes, settings.colName, FormFieldType.ColumnField)
220
+ .id('pivotTableColFieldSelector')
221
+ .toDOM()); })
222
+ .addChild('button', function (b) { return b
223
+ .addClass('kfrm-button')
224
+ .addClass('eqjs-facets-button-swap')
225
+ .attr('title', i18n.getText('Facets', 'Pivot', 'SwapBtnTitle'))
226
+ .on('click', function () {
227
+ var colSelect = document.getElementById('pivotTableColFieldSelector');
228
+ var rowSelect = document.getElementById('pivotTableRowFieldSelector');
229
+ var tmp = colSelect.value;
230
+ colSelect.value = rowSelect.value;
231
+ rowSelect.value = tmp;
232
+ }); }); });
233
+ current = getCurrent();
234
+ domel(current)
235
+ .addChild('label', function (b) { return b
236
+ .attr('for', 'row_field')
237
+ .text(i18n.getText('Facets', 'Pivot', 'RowFieldSelectorLabel')); })
238
+ .addChild('div', function (b) { return b
239
+ .addClass('kfrm-select')
240
+ .attr('name', 'row_field')
241
+ .addChildElement(_this.createColumnsSelectBuilder(colTypes, settings.rowName, FormFieldType.RowField)
242
+ .id('pivotTableRowFieldSelector')
243
+ .toDOM()); });
244
+ current = getCurrent();
245
+ domel(current)
246
+ .addChild('label', function (b) { return b
247
+ .attr('for', 'data_function')
248
+ .text(i18n.getText('Facets', 'Pivot', 'CellDataSelectorLabel')); })
249
+ .addChild('div', function (b) { return b
250
+ .addClass(horizClass)
251
+ .addChild('div', function (b) { return b
252
+ .addClass('kfrm-select')
253
+ .attr('name', 'data_function')
254
+ .addChildElement(_this.createAggrFuncSelectBuilder(settings.aggrFunc)
255
+ .id('pivotTableAggrFuncSelector')
256
+ .toDOM()); })
257
+ .addChild('label', function (b) { return b.addText('of '); })
258
+ .addChild('div', function (b) { return b
259
+ .addClass('kfrm-select')
260
+ .attr('name', 'data_column')
261
+ .addChildElement(_this.createColumnsSelectBuilder(fieldTypes, settings.fieldName, FormFieldType.CellData)
262
+ .on('change', function (ev) {
263
+ var colId = ev.target.value;
264
+ _this.validateSelectedField(colId);
265
+ })
266
+ .id('pivotTableCellFieldSelector')
267
+ .toDOM()); }); });
268
+ current = getCurrent();
269
+ domel(current)
270
+ .addChild('div')
271
+ .addChild('div', function (b) { return b
272
+ .addClass(horizClass)
273
+ .addChild('label', function (b) { return b
274
+ .addClass('checkbox')
275
+ .addChild('input', function (b) {
276
+ b
277
+ .id('pivotTableHasTotalsRow')
278
+ .type('checkbox');
279
+ if (settings.totalsRow)
280
+ b.attr('checked', '');
281
+ })
282
+ .addText(' ' + i18n.getText('Facets', 'Pivot', 'TotalsRowLabel')); })
283
+ .addChild('label', function (b) { return b
284
+ .addClass('checkbox')
285
+ .addChild('input', function (b) {
286
+ b
287
+ .id('pivotTableHasTotalsCol')
288
+ .type('checkbox');
289
+ if (settings.totalsCol)
290
+ b.attr('checked', '');
291
+ })
292
+ .addText(' ' + i18n.getText('Facets', 'Pivot', 'TotalsColLabel')); }); });
293
+ };
294
+ PivotTableFacet.prototype.afterDialogOpened = function (dlg) {
295
+ var colId = document.getElementById('pivotTableCellFieldSelector').value;
296
+ if (colId) {
297
+ this.validateSelectedField(colId);
298
+ }
299
+ if (this.getQuery().getColumns().length <= 2) {
300
+ dlg.showAlert('The dataset should contain at least three columns to build a pivot table', 'error');
301
+ dlg.getSubmitButtonElement().disabled = true;
302
+ }
303
+ };
304
+ PivotTableFacet.prototype.validateSelectedField = function (colId) {
305
+ var dataTable = this.getContextDataTable();
306
+ var colIndex = dataTable.columns.getIndex(colId);
307
+ var col = dataTable.columns.get(colIndex);
308
+ var aggrSelector = document.getElementById('pivotTableAggrFuncSelector');
309
+ if (col.type == DataType.String) {
310
+ aggrSelector.disabled = true;
311
+ aggrSelector.value = AggrFunc.Count;
312
+ }
313
+ else {
314
+ aggrSelector.disabled = false;
315
+ }
316
+ };
317
+ PivotTableFacet.prototype.submitSettingsDialog = function () {
318
+ var result = _super.prototype.submitSettingsDialog.call(this);
319
+ if (result) {
320
+ this.settings = {
321
+ colName: document.getElementById('pivotTableColFieldSelector').value,
322
+ rowName: document.getElementById('pivotTableRowFieldSelector').value,
323
+ aggrFunc: document.getElementById('pivotTableAggrFuncSelector').value,
324
+ fieldName: document.getElementById('pivotTableCellFieldSelector').value,
325
+ totalsRow: document.getElementById('pivotTableHasTotalsRow').checked,
326
+ totalsCol: document.getElementById('pivotTableHasTotalsCol').checked
327
+ };
328
+ this.refresh();
329
+ }
330
+ return result;
331
+ };
332
+ PivotTableFacet.prototype.saveToData = function () {
333
+ var data = _super.prototype.saveToData.call(this);
334
+ if (this.settings) {
335
+ dataUtils.assignDeep(data, this.settings);
336
+ }
337
+ return data;
338
+ };
339
+ PivotTableFacet.prototype.loadFromData = function (data) {
340
+ _super.prototype.loadFromData.call(this, data);
341
+ if (data) {
342
+ this.settings = dataUtils.assignDeep(this.settings, data);
343
+ if (this.settings.aggrFunc == 'AVERAGE') {
344
+ this.settings.aggrFunc = AggrFunc.Average;
345
+ }
346
+ }
347
+ };
348
+ PivotTableFacet.prototype.refreshCore = function () {
349
+ this.updatePivotData();
350
+ if (this.grid) {
351
+ var dataSize = this.pivotTable.getTotal();
352
+ var maxRow = this.grid.options.paging.pageSize;
353
+ if (dataSize > maxRow) {
354
+ this.contentDiv.classList.remove('pivot-grid-with-totals');
355
+ this.showErrorMessage(i18n.getText('Facets', 'ErrTooMuchData'));
356
+ }
357
+ if (this.options.viewportRowsCount > dataSize) {
358
+ this.grid.options.viewportRowsCount = dataSize;
359
+ }
360
+ else {
361
+ this.grid.options.viewportRowsCount = this.options.viewportRowsCount;
362
+ }
363
+ this.grid.refresh();
364
+ }
365
+ };
366
+ PivotTableFacet.prototype.getContextDataTable = function () {
367
+ var context = this.getContext();
368
+ return context.resultTable;
369
+ };
370
+ PivotTableFacet.prototype.updatePivotData = function () {
371
+ this.pivotTable.clear();
372
+ var dataTable = this.getContextDataTable();
373
+ if (!dataTable || dataTable.getTotal() == 0) {
374
+ return;
375
+ }
376
+ if (!this.settings) {
377
+ return;
378
+ }
379
+ var colName = this.settings.colName;
380
+ var rowName = this.settings.rowName;
381
+ var fieldName = this.settings.fieldName;
382
+ var colIdx = dataTable.columns.getIndex(colName);
383
+ var rowIdx = dataTable.columns.getIndex(rowName);
384
+ var fieldIdx = dataTable.columns.getIndex(fieldName);
385
+ if (colIdx == undefined || rowIdx == undefined || fieldIdx == undefined) {
386
+ this.showUnableDisplayMessage(i18n.getText('Facets', 'ErrQueryChanged'));
387
+ return;
388
+ }
389
+ var columnField = dataTable.columns.get(fieldIdx);
390
+ var columnCol = dataTable.columns.get(colIdx);
391
+ var columnRow = dataTable.columns.get(rowIdx);
392
+ var rowLabel = columnRow.label;
393
+ var rowType = columnRow.type;
394
+ var colLabel = columnCol.label;
395
+ var colValues = [];
396
+ var rowValues = [];
397
+ var rows = dataTable.getCachedRows();
398
+ for (var i = 0; i < rows.length; i++) {
399
+ var colValue = rows[i].getValue(colIdx);
400
+ if (colValues.indexOf(colValue) < 0) {
401
+ colValues.push(colValue);
402
+ }
403
+ var rowValue = rows[i].getValue(rowIdx);
404
+ if (rowValues.indexOf(rowValue) < 0) {
405
+ rowValues.push(rowValue);
406
+ }
407
+ }
408
+ this.pivotTable.columns.add({
409
+ id: rowLabel + '\\' + colLabel,
410
+ label: rowLabel + '\\' + colLabel,
411
+ description: '',
412
+ type: rowType,
413
+ dfmt: columnRow.displayFormat,
414
+ style: columnRow.style
415
+ });
416
+ var null_columns = [];
417
+ var colFieldFormatter = null;
418
+ if (dataUtils.isNumericType(columnCol.type)) {
419
+ colFieldFormatter = this.formatNumber;
420
+ }
421
+ else if (dataUtils.getDateDataTypes().indexOf(columnCol.type) >= 0) {
422
+ colFieldFormatter = this.formatDate;
423
+ }
424
+ for (var i = 0; i < colValues.length; i++) {
425
+ var colValue = colValues[i];
426
+ if (!colValue) {
427
+ null_columns.push(i);
428
+ }
429
+ else {
430
+ var label = colFieldFormatter
431
+ ? colFieldFormatter(columnCol, colValue)
432
+ : colValue;
433
+ this.pivotTable.columns.add({
434
+ id: colValue,
435
+ label: label,
436
+ description: '',
437
+ dfmt: columnField.displayFormat,
438
+ type: this.settings.aggrFunc !== AggrFunc.Count
439
+ ? columnField.type : DataType.Int64,
440
+ style: columnField.style
441
+ });
442
+ }
443
+ }
444
+ var new_rows = [];
445
+ for (var i = 0; i < rowValues.length; i++) {
446
+ new_rows.push([]);
447
+ new_rows[i].push(rowValues[i]);
448
+ }
449
+ for (var i = 0; i < rowValues.length; i++) {
450
+ for (var j = 0; j < colValues.length; j++) {
451
+ if (null_columns.indexOf(j) >= 0)
452
+ continue;
453
+ new_rows[i].push(this.calcAggrFunc(this.settings.aggrFunc, {
454
+ colName: this.settings.colName,
455
+ rowName: this.settings.rowName,
456
+ fieldName: this.settings.fieldName,
457
+ rowValue: rowValues[i],
458
+ colValue: colValues[j]
459
+ }));
460
+ }
461
+ }
462
+ if (this.settings.totalsCol) {
463
+ this.pivotTable.columns.add({
464
+ id: "total",
465
+ label: i18n.getText('Facets', 'Pivot', 'TotalGridLabel'),
466
+ description: '',
467
+ dfmt: columnField.displayFormat,
468
+ type: this.settings.aggrFunc !== AggrFunc.Count
469
+ ? columnField.type : DataType.Int64
470
+ });
471
+ for (var i = 0; i < new_rows.length; i++) {
472
+ var row = new_rows[i];
473
+ var totalByRow = 0;
474
+ if (this.settings.aggrFunc == AggrFunc.Min
475
+ || this.settings.aggrFunc == AggrFunc.Max) {
476
+ totalByRow = row[1];
477
+ }
478
+ for (var j = 1; j < row.length; j++) {
479
+ var value = row[j];
480
+ if (value !== null) {
481
+ if (this.settings.aggrFunc === AggrFunc.Min) {
482
+ if (value < totalByRow)
483
+ totalByRow = value;
484
+ }
485
+ else if (this.settings.aggrFunc === AggrFunc.Max) {
486
+ if (value > totalByRow)
487
+ totalByRow = value;
488
+ }
489
+ else {
490
+ totalByRow += value;
491
+ }
492
+ }
493
+ }
494
+ if (this.settings.aggrFunc === AggrFunc.Average) {
495
+ totalByRow /= row.length - 1;
496
+ }
497
+ row.push(totalByRow);
498
+ }
499
+ }
500
+ for (var _i = 0, new_rows_1 = new_rows; _i < new_rows_1.length; _i++) {
501
+ var row = new_rows_1[_i];
502
+ this.pivotTable.addRow(row);
503
+ }
504
+ if (this.settings.totalsRow) {
505
+ var total_row = [];
506
+ // to be able to create date value
507
+ total_row.push(null);
508
+ for (var i = 1; i < this.pivotTable.columns.count; i++) {
509
+ var rows_1 = this.pivotTable.getCachedRows();
510
+ var totalByCol = 0;
511
+ if (this.settings.aggrFunc == AggrFunc.Min
512
+ || this.settings.aggrFunc == AggrFunc.Max) {
513
+ totalByCol = rows_1[0].getValue(i);
514
+ }
515
+ for (var j = 0; j < rows_1.length; j++) {
516
+ var value = rows_1[j].getValue(i);
517
+ if (value !== null) {
518
+ if (this.settings.aggrFunc === AggrFunc.Min) {
519
+ if (value < totalByCol)
520
+ totalByCol = value;
521
+ }
522
+ else if (this.settings.aggrFunc === AggrFunc.Max) {
523
+ if (value > totalByCol)
524
+ totalByCol = value;
525
+ }
526
+ else {
527
+ totalByCol += value;
528
+ }
529
+ }
530
+ }
531
+ if (this.settings.aggrFunc === AggrFunc.Average) {
532
+ totalByCol /= rows_1.length;
533
+ }
534
+ total_row.push(totalByCol);
535
+ }
536
+ this.pivotTable.addRow(total_row);
537
+ this.contentDiv.classList.add('pivot-grid-with-totals');
538
+ }
539
+ else {
540
+ this.contentDiv.classList.remove('pivot-grid-with-totals');
541
+ }
542
+ };
543
+ PivotTableFacet.prototype.calcAggrFunc = function (func, options) {
544
+ switch (func) {
545
+ case AggrFunc.Sum:
546
+ return this.sum(options);
547
+ case AggrFunc.Average:
548
+ return this.average(options);
549
+ case AggrFunc.Min:
550
+ return this.min(options);
551
+ case AggrFunc.Max:
552
+ return this.max(options);
553
+ case AggrFunc.Count:
554
+ return this.count(options);
555
+ default:
556
+ return 0;
557
+ }
558
+ };
559
+ PivotTableFacet.prototype.getSettings = function () {
560
+ return this.settings;
561
+ };
562
+ PivotTableFacet.prototype.formatDate = function (column, value) {
563
+ var isDate = Object.prototype.toString.call(value) === '[object Date]';
564
+ var strValue = (value || '').toString();
565
+ if (isDate) {
566
+ if (column && column.displayFormat
567
+ && DFMT_REGEX.test(column.displayFormat)) {
568
+ strValue = column.displayFormat.replace(DFMT_REGEX, function (_, $1) {
569
+ return i18n.dateTimeToStr(value, column.type, $1);
570
+ });
571
+ }
572
+ else {
573
+ var locale = i18n.getCurrentLocale();
574
+ var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };
575
+ switch (column.type) {
576
+ case DataType.Date:
577
+ strValue = value.toLocaleDateString(locale);
578
+ break;
579
+ case DataType.Time:
580
+ strValue = value.toLocaleTimeString(locale, timeOptions);
581
+ break;
582
+ case DataType.DateTime:
583
+ strValue = "".concat(value.toLocaleDateString(locale), " ").concat(value.toLocaleTimeString(locale, timeOptions));
584
+ break;
585
+ }
586
+ }
587
+ }
588
+ return strValue;
589
+ };
590
+ PivotTableFacet.prototype.formatNumber = function (column, value) {
591
+ var strValue = (value || '').toString();
592
+ if (typeof value == 'number') {
593
+ if (column && column.displayFormat
594
+ && DFMT_REGEX.test(column.displayFormat)) {
595
+ strValue = column.displayFormat.replace(DFMT_REGEX, function (_, $1) {
596
+ return i18n.numberToStr(value, $1);
597
+ });
598
+ }
599
+ else {
600
+ strValue = value.toLocaleString();
601
+ }
602
+ }
603
+ return strValue;
604
+ };
605
+ PivotTableFacet.prototype.sum = function (options) {
606
+ var result = 0;
607
+ var dataTable = this.getContextDataTable();
608
+ var rows = dataTable.getCachedRows();
609
+ for (var i = 0; i < rows.length; i++) {
610
+ var rowValue = rows[i].getValue(options.rowName);
611
+ var colValue = rows[i].getValue(options.colName);
612
+ if (rowValue !== options.rowValue
613
+ || colValue !== options.colValue) {
614
+ continue;
615
+ }
616
+ var fieldValue = rows[i].getValue(options.fieldName);
617
+ result += fieldValue;
618
+ }
619
+ return result;
620
+ };
621
+ PivotTableFacet.prototype.average = function (options) {
622
+ var result = 0;
623
+ var count = 0;
624
+ var dataTable = this.getContextDataTable();
625
+ var rows = dataTable.getCachedRows();
626
+ for (var i = 0; i < rows.length; i++) {
627
+ var rowValue = rows[i].getValue(options.rowName);
628
+ var colValue = rows[i].getValue(options.colName);
629
+ if (rowValue !== options.rowValue
630
+ || colValue !== options.colValue) {
631
+ continue;
632
+ }
633
+ var fieldValue = rows[i].getValue(options.fieldName);
634
+ result += fieldValue;
635
+ count++;
636
+ }
637
+ if (count != 0)
638
+ result = result / count;
639
+ return result;
640
+ };
641
+ PivotTableFacet.prototype.min = function (options) {
642
+ var min = Number.MAX_SAFE_INTEGER;
643
+ var dataTable = this.getContextDataTable();
644
+ var rows = dataTable.getCachedRows();
645
+ for (var i = 0; i < rows.length; i++) {
646
+ var rowValue = rows[i].getValue(options.rowName);
647
+ var colValue = rows[i].getValue(options.colName);
648
+ if (rowValue !== options.rowValue
649
+ || colValue !== options.colValue) {
650
+ continue;
651
+ }
652
+ var fieldValue = rows[i].getValue(options.fieldName);
653
+ if (fieldValue < min) {
654
+ min = fieldValue;
655
+ }
656
+ }
657
+ if (min == Number.MAX_SAFE_INTEGER)
658
+ return null;
659
+ return min;
660
+ };
661
+ PivotTableFacet.prototype.max = function (options) {
662
+ var max = Number.MIN_SAFE_INTEGER;
663
+ var dataTable = this.getContextDataTable();
664
+ var rows = dataTable.getCachedRows();
665
+ for (var i = 0; i < rows.length; i++) {
666
+ var rowValue = rows[i].getValue(options.rowName);
667
+ var colValue = rows[i].getValue(options.colName);
668
+ if (rowValue !== options.rowValue
669
+ || colValue !== options.colValue) {
670
+ continue;
671
+ }
672
+ var fieldValue = rows[i].getValue(options.fieldName);
673
+ if (fieldValue > max) {
674
+ max = fieldValue;
675
+ }
676
+ }
677
+ if (max == Number.MIN_SAFE_INTEGER)
678
+ return null;
679
+ return max;
680
+ };
681
+ PivotTableFacet.prototype.count = function (options) {
682
+ var dataTable = this.getContextDataTable();
683
+ var count = 0;
684
+ var rows = dataTable.getCachedRows();
685
+ for (var i = 0; i < rows.length; i++) {
686
+ var rowValue = rows[i].getValue(options.rowName);
687
+ var colValue = rows[i].getValue(options.colName);
688
+ if (rowValue !== options.rowValue
689
+ || colValue !== options.colValue) {
690
+ continue;
691
+ }
692
+ count++;
693
+ }
694
+ return count;
695
+ };
696
+ return PivotTableFacet;
697
+ }(ResultFacet));
698
+ export { PivotTableFacet };
697
699
  //# sourceMappingURL=pivot_table_facet.js.map