@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,732 +1,734 @@
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 { WidgetGroup, QueryChangePart } from '@easyquery/core';
15
- import { i18n, utils as dataUtils } from '@easydata/core';
16
- import { domel } from '@easydata/ui';
17
- import { browserUtils } from '../utils/browser_utils';
18
- import { View } from './view';
19
- /**
20
- * The view that represents the "ad-hoc reporting" scenario
21
- */
22
- var ReportView = /** @class */ (function (_super) {
23
- __extends(ReportView, _super);
24
- function ReportView() {
25
- var _this = _super.call(this) || this;
26
- _this.reports = [];
27
- _this.reportCache = [];
28
- _this.exportButtons = [];
29
- _this.exportClass = "eqjs-export";
30
- _this.disabledClass = "eqjs-disabled";
31
- _this.enableExport = false;
32
- _this.useReportCache = true;
33
- _this.syncReportOnChange = true;
34
- _this._reportSaveTemplate = "<div id=\"kdlg-dialog-form\" class=\"kfrm-form\">\n <div class=\"kfrm-fields label-above\">\n <label for=\"kdlg-dialog-form-input\" id=\"kdlg-dialog-form-content\"></label>\n <input type=\"text\" name=\"kdlg-dialog-form-input\" id=\"kdlg-dialog-form-input\" />\n <label for=\"kdlg-dialog-form-textarea\" id=\"kdlg-dialog-form-desc-label\"></label>\n <textarea type=\"text\" name=\"kdlg-dialog-form-textarea\" id=\"kdlg-dialog-form-textarea\"></textarea>\n </div>\n </div>";
35
- _this.context.useStoredQueryOnFetch = true;
36
- _this.exportButtonClickHandler = function (srcElement, e) {
37
- if (!srcElement.classList.contains(_this.disabledClass)) {
38
- var format = srcElement.getAttribute("data-format");
39
- _this.context.exportResult({ format: format });
40
- }
41
- };
42
- _this.clearReportButtonClickHandler = _this.clearReportButtonClick.bind(_this);
43
- _this.newReportButtonClickHandler = _this.newReportButtonClick.bind(_this);
44
- _this.loadReportButtonClickHandler = _this.loadReportButtonClick.bind(_this);
45
- _this.saveReportButtonClickHandler = _this.saveReportButtonClick.bind(_this);
46
- _this.removeReportButtonClickHandler = _this.removeReportButtonClick.bind(_this);
47
- _this.reloadReportDataButtonClickHandler = _this.reloadReportDataButtonClick.bind(_this);
48
- browserUtils.onMobileModeChanged(function (_) {
49
- document.location.reload();
50
- });
51
- return _this;
52
- }
53
- ReportView.prototype.initOptions = function (options) {
54
- options = _super.prototype.initOptions.call(this, options);
55
- if (typeof (options.syncQueryOnChange) !== "undefined") {
56
- this.syncReportOnChange = options.syncQueryOnChange;
57
- }
58
- if (typeof (options.syncReportOnChange) !== "undefined") {
59
- this.syncReportOnChange = options.syncReportOnChange;
60
- }
61
- options.syncQueryOnChange = this.syncReportOnChange;
62
- if (typeof (options.useReportCache) !== "undefined") {
63
- this.useReportCache = options.useReportCache;
64
- }
65
- this.defaultReportId = options.defaultReportId;
66
- return options;
67
- };
68
- ReportView.prototype.initDone = function () {
69
- var _this = this;
70
- _super.prototype.initDone.call(this);
71
- var query = this.context.getQuery();
72
- query.addChangedCallback(function (event) {
73
- var eventData = event.data;
74
- if (eventData) {
75
- if (eventData.changeType == "query.switched") {
76
- _this.context.clearResult();
77
- _this.context.refreshWidgets(WidgetGroup.Result);
78
- _this.context.refreshWidgets(WidgetGroup.Query);
79
- }
80
- else {
81
- _this.disableExportButtons();
82
- if (_this.resultCountSlot) {
83
- _this.resultCountSlot.style.display = "none";
84
- }
85
- }
86
- }
87
- //true if we just switched the report or changed facets (query was not changed)
88
- var isLiteUpdate = !eventData
89
- || eventData.changeType == "query.switched"
90
- || eventData.part == QueryChangePart.ExtraData
91
- || eventData.part == QueryChangePart.Facets;
92
- var syncStarted = false;
93
- if (_this.syncReportOnChange) {
94
- var needSync = eventData && eventData.changeType != "query.switched" && !eventData.noSync;
95
- if (needSync) {
96
- syncStarted = true;
97
- _this.syncReport({
98
- success: function () {
99
- // fetch data on query change
100
- if (!isLiteUpdate && _this.viewOptions.fetchDataOnChange) {
101
- _this.fetchData();
102
- }
103
- }
104
- });
105
- }
106
- }
107
- // clear dataset result on query change
108
- if (!isLiteUpdate && _this.resultOptions.clearResultOnQueryChange) {
109
- _this.context.clearResult();
110
- _this.context.refreshWidgets(WidgetGroup.Result);
111
- }
112
- if (!isLiteUpdate && !syncStarted && _this.viewOptions.fetchDataOnChange) {
113
- _this.fetchData();
114
- }
115
- });
116
- window.setTimeout(function () {
117
- _this.context.loadQueryList({
118
- success: function (data) {
119
- if (Array.isArray(data)) {
120
- _this.reports = data;
121
- var exists = _this.reports.filter(function (r) { return r.id == _this.defaultReportId; }).length > 0;
122
- if (exists) {
123
- _this.renderReportList({ reportId: _this.defaultReportId });
124
- }
125
- else {
126
- _this.renderReportList();
127
- }
128
- }
129
- }
130
- });
131
- }, 100);
132
- };
133
- ReportView.prototype.initWidgets = function (options) {
134
- var _this = this;
135
- _super.prototype.initWidgets.call(this, options);
136
- var clearReportButton = "ClearReportButton";
137
- var newReportButton = "NewReportButton";
138
- var loadReportButton = "LoadReportButton";
139
- var saveReportButton = "SaveReportButton";
140
- var removeReportButton = "RemoveReportButton";
141
- var reloadReportDataButton = "ReloadReportDataButton";
142
- var resultCountSpan = "ResultCount";
143
- var exportButtons = "ResultExportButtons";
144
- var exportClass = this.exportClass;
145
- if (options.slots) {
146
- resultCountSpan = options.slots.resultCountSpan || resultCountSpan;
147
- exportButtons = options.slots.exportButtons || exportButtons;
148
- clearReportButton = options.slots.clearReportButton || clearReportButton;
149
- newReportButton = options.slots.newReportButton || newReportButton;
150
- loadReportButton = options.slots.loadReportButton || loadReportButton;
151
- saveReportButton = options.slots.saveReportButton || saveReportButton;
152
- removeReportButton = options.slots.removeReportButton || removeReportButton;
153
- reloadReportDataButton = options.slots.reloadReportDataButton || reloadReportDataButton;
154
- exportClass = options.slots.exportClass || exportClass;
155
- }
156
- this.exportButtons = this.domRoots.reduce(function (elems, root) {
157
- return elems.concat(Array.from(root.querySelectorAll("." + exportClass)));
158
- }, []);
159
- this.enableExport = options.enableExport;
160
- if (this.enableExport) {
161
- //Add event listener for export buttons
162
- this.exportButtons.forEach(function (button) {
163
- button.addEventListener('click', _this.exportButtonClickHandler);
164
- });
165
- }
166
- else {
167
- this.hideExportButtons();
168
- }
169
- this.exportButtonsContainer = this.resolveElement(exportButtons);
170
- if (!this.clearReportButton) {
171
- this.clearReportButton = this.resolveElement(clearReportButton);
172
- if (this.clearReportButton) {
173
- this.clearReportButton.addEventListener('click', this.clearReportButtonClickHandler);
174
- }
175
- }
176
- if (!this.newReportButton) {
177
- this.newReportButton = this.resolveElement(newReportButton);
178
- if (this.newReportButton) {
179
- this.newReportButton.addEventListener('click', this.newReportButtonClickHandler);
180
- }
181
- }
182
- if (!this.loadReportButton) {
183
- this.loadReportButton = this.resolveElement(loadReportButton);
184
- if (this.loadReportButton) {
185
- this.loadReportButton.addEventListener('click', this.loadReportButtonClickHandler);
186
- }
187
- }
188
- if (!this.saveReportButton) {
189
- this.saveReportButton = this.resolveElement(saveReportButton);
190
- if (this.saveReportButton) {
191
- this.saveReportButton.addEventListener('click', this.saveReportButtonClickHandler);
192
- }
193
- }
194
- if (!this.removeReportButton) {
195
- this.removeReportButton = this.resolveElement(removeReportButton);
196
- if (this.removeReportButton) {
197
- this.removeReportButton.addEventListener('click', this.removeReportButtonClickHandler);
198
- }
199
- }
200
- if (!this.reloadReportDataButton) {
201
- this.reloadReportDataButton = this.resolveElement(reloadReportDataButton);
202
- //OBSOLETE: remove the next 3 lines. We just support the old default button ID here
203
- if (!this.reloadReportDataButton) {
204
- this.reloadReportDataButton = this.resolveElement('UpdateReportButton');
205
- }
206
- if (this.reloadReportDataButton) {
207
- this.reloadReportDataButton.addEventListener('click', this.reloadReportDataButtonClickHandler);
208
- }
209
- }
210
- this.reportListSlot = document.getElementById('ReportList');
211
- this.resultCountSlot = this.resolveElement(resultCountSpan);
212
- };
213
- /**
214
- * Creates a new report.
215
- */
216
- ReportView.prototype.newReport = function () {
217
- var _this = this;
218
- var ds = this.context.getServices().getDialogService();
219
- var dlg = ds.open({
220
- title: i18n.getText('NewReportDlgTitle'),
221
- body: this._reportSaveTemplate,
222
- submitable: true,
223
- closable: true,
224
- cancelable: true,
225
- submitOnEnter: true,
226
- arrangeParents: false,
227
- beforeOpen: function () {
228
- var input = document.getElementById("kdlg-dialog-form-input");
229
- input.value = i18n.getText('NewReportDefName');
230
- var content = document.getElementById('kdlg-dialog-form-content');
231
- content.innerHTML = i18n.getText('SaveReportDlgLabel');
232
- var label = document.getElementById('kdlg-dialog-form-desc-label');
233
- label.innerHTML = i18n.getText('ReportDescLabel');
234
- input.focus();
235
- },
236
- onSubmit: function () {
237
- var nameInput = document.getElementById("kdlg-dialog-form-input");
238
- var queryName = nameInput.value;
239
- if (queryName && queryName.replace(/\s/g, '').length > 0) {
240
- dlg.clearAlert();
241
- dlg.disableButtons();
242
- var header_1 = dlg.getRootElement().querySelector('header');
243
- var processEl_1 = domel('div', header_1)
244
- .addClass('eqjs-process-bar local')
245
- .toDOM();
246
- var descInput = document.getElementById("kdlg-dialog-form-textarea");
247
- var queryDesc = descInput.value;
248
- _this.context.newQuery({
249
- name: queryName,
250
- description: queryDesc,
251
- success: function () {
252
- dlg.close();
253
- var query = _this.context.getQuery();
254
- var reportId = query.getId();
255
- _this.insertIntoReportList({ id: reportId, name: query.getName(), description: query.getDescription() });
256
- _this.renderReportList({ reportId: reportId });
257
- },
258
- error: function (error) {
259
- header_1.removeChild(processEl_1);
260
- dlg.enableButtons();
261
- dlg.showAlert(error, 'error');
262
- }
263
- });
264
- }
265
- return false;
266
- }
267
- });
268
- };
269
- /**
270
- * Loads report by ID.
271
- * @param reportId The ID of the report to load.
272
- */
273
- ReportView.prototype.loadReport = function (reportId) {
274
- var _this = this;
275
- if (!reportId) {
276
- throw 'Empty report ID!';
277
- }
278
- var reportToLoad = this.findReportById(reportId);
279
- if (!reportToLoad)
280
- return;
281
- var self = this;
282
- var query = self.context.getQuery();
283
- var reportLoaded = function () {
284
- _this.renderReportProps();
285
- _this.context.resultTable.clear();
286
- query.fireChangedEvent({
287
- part: QueryChangePart.All,
288
- noSync: true,
289
- changeType: 'query.switched'
290
- });
291
- _this.fetchData();
292
- };
293
- var reportContent = this.useReportCache ? this.getReportContentFromCache(reportToLoad) : null;
294
- if (reportContent) {
295
- query.clear();
296
- query.loadFromJson(reportContent, { validate: false });
297
- reportLoaded();
298
- }
299
- else {
300
- this.context.loadQuery({
301
- queryId: reportId,
302
- silent: true,
303
- success: function () {
304
- _this.saveReportContentInCache(reportToLoad, query.toJSON());
305
- reportLoaded();
306
- }
307
- });
308
- }
309
- this.setActiveReport(reportId);
310
- };
311
- /**
312
- * Shows the dialog to save the report with new name.
313
- */
314
- ReportView.prototype.saveCurrentReportAs = function () {
315
- var _this = this;
316
- var query = this.context.getQuery();
317
- var ds = this.context.getServices().getDialogService();
318
- var dlg = ds.open({
319
- title: i18n.getText('SaveReportDlgTitle'),
320
- body: this._reportSaveTemplate,
321
- submitable: true,
322
- closable: true,
323
- cancelable: true,
324
- submitOnEnter: true,
325
- arrangeParents: false,
326
- beforeOpen: function () {
327
- var input = document.getElementById("kdlg-dialog-form-input");
328
- input.value = query.getName();
329
- var content = document.getElementById('kdlg-dialog-form-content');
330
- content.innerHTML = i18n.getText('SaveReportDlgLabel');
331
- var label = document.getElementById('kdlg-dialog-form-desc-label');
332
- label.innerHTML = i18n.getText('ReportDescLabel');
333
- var text = document.getElementById("kdlg-dialog-form-textarea");
334
- text.value = query.getDescription();
335
- input.focus();
336
- },
337
- onSubmit: function () {
338
- var input = document.getElementById("kdlg-dialog-form-input");
339
- var value = input.value;
340
- if (value && value.replace(/\s/g, '').length > 0) {
341
- query.setId(dataUtils.generateId(value.replace(/\s/g, '')));
342
- dlg.clearAlert();
343
- dlg.disableButtons();
344
- var header_2 = dlg.getRootElement().querySelector('header');
345
- var processEl_2 = domel('div', header_2)
346
- .addClass('eqjs-process-bar local')
347
- .toDOM();
348
- var text = document.getElementById("kdlg-dialog-form-textarea");
349
- var desc = text.value;
350
- query.setDescription(desc);
351
- _this.context.newQuery({
352
- clearQuery: false,
353
- name: value,
354
- success: function () {
355
- dlg.close();
356
- _this.context.refreshWidgets(WidgetGroup.Query);
357
- var savedQuery = _this.context.getQuery();
358
- var reportId = savedQuery.getId();
359
- _this.fetchData();
360
- _this.insertIntoReportList({ id: reportId, name: query.getName(), description: query.getDescription() });
361
- _this.renderReportList({ reportId: reportId });
362
- _this.setActiveReport(reportId);
363
- _this.renderReportProps();
364
- },
365
- error: function (error) {
366
- header_2.removeChild(processEl_2);
367
- dlg.enableButtons();
368
- dlg.showAlert(error, 'error');
369
- }
370
- });
371
- }
372
- return false;
373
- }
374
- });
375
- };
376
- /**
377
- * Removes current report.
378
- */
379
- ReportView.prototype.removeCurrentReport = function () {
380
- var _this = this;
381
- var report = this.context.getQuery();
382
- var ds = this.context.getServices().getDialogService();
383
- ds.openConfirm(i18n.getText('RemoveReportDlgTitle'), i18n.getText('RemoveReportContent').replace('{reportName}', report.getName()))
384
- .then(function (result) {
385
- if (result) {
386
- var reportId_1 = report.getId();
387
- _this.context.removeQuery({
388
- queryId: reportId_1,
389
- success: function () {
390
- var index = _this.removeFromReportList(reportId_1);
391
- _this.renderReportList({ reportIndex: index });
392
- }
393
- });
394
- }
395
- });
396
- };
397
- /**
398
- * Sends current report's query to back-end.
399
- */
400
- ReportView.prototype.syncReport = function (options) {
401
- var _this = this;
402
- if (this.useReportCache) {
403
- var query = this.context.getQuery();
404
- var currentReport = this.findReportById(query.getId());
405
- if (currentReport) {
406
- currentReport.lastUpdated = Date.now();
407
- this.saveReportContentInCache(currentReport, query.toJSON());
408
- }
409
- }
410
- this.context.syncQuery({
411
- success: function (responseData) {
412
- if (responseData.query) {
413
- _this.context.refreshWidgets(WidgetGroup.Query);
414
- }
415
- if (responseData.statement) {
416
- _this.context.refreshWidgets(WidgetGroup.Statement);
417
- }
418
- if (options && options.success) {
419
- options.success(responseData);
420
- }
421
- }
422
- });
423
- };
424
- /**
425
- * Sets active report.
426
- * @param reportId The ID of the report to make active.
427
- */
428
- ReportView.prototype.setActiveReport = function (reportId) {
429
- var rlItems = this.reportListSlot.querySelectorAll('li');
430
- for (var i = 0; i < rlItems.length; i++) {
431
- var item = rlItems[i];
432
- item.classList.remove('active');
433
- var rid = item.getAttribute('data-rid');
434
- if (rid === reportId) {
435
- item.classList.add('active');
436
- }
437
- }
438
- ;
439
- };
440
- /**
441
- * Renders current report.
442
- */
443
- ReportView.prototype.renderReportProps = function () {
444
- var query = this.context.getQuery();
445
- var titleElem = document.getElementById('ReportTitle');
446
- titleElem.innerHTML = query.getName();
447
- var columnsPanel = document.querySelector('.columns-bar');
448
- if (columnsPanel) {
449
- columnsPanel.innerHTML = '<strong>Columns:</strong>';
450
- var columns = query.getColumns();
451
- for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {
452
- var column = columns_1[_i];
453
- columnsPanel.innerHTML += '<span class="label label-default">' + column.caption + '</span> ';
454
- }
455
- }
456
- };
457
- /**
458
- * Renders the list of reports.
459
- * @param options The options. In particular, `options.reportIndex` defines which report should be active.
460
- */
461
- ReportView.prototype.renderReportList = function (options) {
462
- this.renderReportPanels();
463
- if (!this.reportListSlot.matches('li')) {
464
- this.reportListSlot.innerHTML = "";
465
- options = options || { reportId: (this.reports.length > 0 ? this.reports[0].id : null) };
466
- var ul = document.createElement('ul');
467
- ul.className = 'list-group list-group-flush';
468
- this.reportListSlot.appendChild(ul);
469
- for (var _i = 0, _a = this.reports; _i < _a.length; _i++) {
470
- var report = _a[_i];
471
- this.renderReportItemInList(report, ul);
472
- }
473
- if (options.reportId) {
474
- this.loadReport(options.reportId);
475
- }
476
- if (typeof (options.reportIndex) !== "undefined") {
477
- var idx = options.reportIndex;
478
- if (idx >= this.reports.length)
479
- idx = this.reports.length - 1;
480
- if (idx < 0 && this.reports.length > 0)
481
- idx = 0;
482
- if (idx >= 0)
483
- this.loadReport(this.reports[idx].id);
484
- }
485
- }
486
- };
487
- ReportView.prototype.detach = function () {
488
- var _this = this;
489
- if (this.exportButtonsContainer) {
490
- this.showExportButtons();
491
- this.exportButtons.forEach(function (button) {
492
- button.removeEventListener('click', _this.exportButtonClickHandler);
493
- });
494
- this.exportButtons = [];
495
- this.exportButtonsContainer = null;
496
- }
497
- if (this.clearReportButton) {
498
- this.clearReportButton.removeEventListener('click', this.clearReportButtonClickHandler);
499
- this.clearReportButton = null;
500
- }
501
- if (this.newReportButton) {
502
- this.newReportButton.removeEventListener('click', this.newReportButtonClickHandler);
503
- this.newReportButton = null;
504
- }
505
- if (this.loadReportButton) {
506
- this.loadReportButton.removeEventListener('click', this.loadReportButtonClickHandler);
507
- this.loadReportButton = null;
508
- }
509
- if (this.saveReportButton) {
510
- this.saveReportButton.addEventListener('click', this.saveReportButtonClickHandler);
511
- this.saveReportButton = null;
512
- }
513
- if (this.removeReportButton) {
514
- this.removeReportButton.removeEventListener('click', this.removeReportButtonClickHandler);
515
- this.removeReportButton = null;
516
- }
517
- if (this.reloadReportDataButton) {
518
- this.reloadReportDataButton.removeEventListener('click', this.reloadReportDataButtonClickHandler);
519
- this.removeReportButton = null;
520
- }
521
- if (this.reportListSlot) {
522
- this.reportListSlot.innerHTML = '';
523
- this.reportListSlot = null;
524
- }
525
- if (this.resultCountSlot) {
526
- this.resultCountSlot.innerHTML = '';
527
- this.resultCountSlot = null;
528
- }
529
- _super.prototype.detach.call(this);
530
- };
531
- /**
532
- * Renders a single item in the list of reports.
533
- * @param report The [[Report]] object to render.
534
- * @param ul The [[HTMLUListElement]] to add the item to.
535
- */
536
- ReportView.prototype.renderReportItemInList = function (report, ul) {
537
- var _this = this;
538
- if (!ul) {
539
- ul = this.reportListSlot.querySelector("ul");
540
- }
541
- var reportName = report.name || report.description || "";
542
- var li = document.createElement('li');
543
- li.className = "list-group-item";
544
- li.style.cursor = 'pointer';
545
- li.setAttribute('data-rid', report.id);
546
- li.innerText = reportName;
547
- if (report.description) {
548
- li.title = report.description;
549
- }
550
- li.addEventListener('click', function (e) {
551
- var target = e.target;
552
- var rid = target.getAttribute('data-rid');
553
- _this.loadReport(rid);
554
- _this.setActiveReport(rid);
555
- });
556
- ul.appendChild(li);
557
- };
558
- /**
559
- * Renders report panels.
560
- */
561
- ReportView.prototype.renderReportPanels = function () {
562
- var reportsContainer = document.getElementById("ReportsContainer");
563
- var noReportPanel = document.getElementById("NoReportPanel");
564
- if (this.reports.length > 0) {
565
- this.hideElement(noReportPanel);
566
- this.showElement(reportsContainer);
567
- }
568
- else {
569
- this.hideElement(reportsContainer);
570
- this.showElement(noReportPanel);
571
- }
572
- };
573
- //TODO: Move these two functions to @easydata/ui
574
- ReportView.prototype.hideElement = function (element) {
575
- if (element) {
576
- element.style.visibility = 'hidden';
577
- }
578
- };
579
- ReportView.prototype.showElement = function (element) {
580
- if (element) {
581
- element.style.removeProperty('visibility');
582
- }
583
- };
584
- /**
585
- * Inserts the report to the list of reports.
586
- * @param report The [[Report]] object to be inserted.
587
- */
588
- ReportView.prototype.insertIntoReportList = function (report) {
589
- this.reports.push(report);
590
- };
591
- /**
592
- * Removes the report from the list of reports.
593
- * @param reportId The ID of the report to be removed.
594
- * @returns the index of removed report.
595
- */
596
- ReportView.prototype.removeFromReportList = function (reportId) {
597
- var index = this.indexOfReportById(reportId);
598
- if (index >= 0)
599
- this.reports.splice(index, 1);
600
- return index;
601
- };
602
- ReportView.prototype.indexOfReportById = function (reportId) {
603
- for (var i = 0; i < this.reports.length; i++) {
604
- if (this.reports[i].id === reportId)
605
- return i;
606
- }
607
- return -1;
608
- };
609
- /**
610
- * The handler of the "Clear" button click.
611
- */
612
- ReportView.prototype.clearReportButtonClick = function () {
613
- this.clearErrors();
614
- this.context.clearQuery();
615
- };
616
- /**
617
- * The handler of the "Update" button click.
618
- */
619
- ReportView.prototype.reloadReportDataButtonClick = function () {
620
- this.fetchData();
621
- };
622
- /**
623
- * The handler of the "Save" button click.
624
- */
625
- ReportView.prototype.saveReportButtonClick = function () {
626
- this.saveCurrentReportAs();
627
- };
628
- /**
629
- * The handler of the "Load" button click.
630
- */
631
- ReportView.prototype.loadReportButtonClick = function () {
632
- this.loadReport("LastQuery");
633
- };
634
- /**
635
- * The handler of the "Remove" button click.
636
- */
637
- ReportView.prototype.removeReportButtonClick = function () {
638
- this.removeCurrentReport();
639
- };
640
- /**
641
- * The handler of the "New" button click.
642
- */
643
- ReportView.prototype.newReportButtonClick = function () {
644
- this.newReport();
645
- };
646
- /**
647
- * The handler of errors.
648
- * @param error The error object.
649
- */
650
- ReportView.prototype.errorHandler = function (error) {
651
- };
652
- /**
653
- * Clears the errors.
654
- */
655
- ReportView.prototype.clearErrors = function () {
656
- };
657
- /**
658
- * Disables export buttons.
659
- */
660
- ReportView.prototype.disableExportButtons = function () {
661
- this.hideExportButtons();
662
- };
663
- /**
664
- * Enables export buttons.
665
- */
666
- ReportView.prototype.enableExportButtons = function () {
667
- this.showExportButtons();
668
- };
669
- /**
670
- * Hides export buttons.
671
- */
672
- ReportView.prototype.hideExportButtons = function () {
673
- if (this.exportButtonsContainer) {
674
- this.exportButtonsContainer.style.display = "none";
675
- }
676
- };
677
- /**
678
- * Shows export buttons.
679
- */
680
- ReportView.prototype.showExportButtons = function () {
681
- if (this.exportButtonsContainer) {
682
- this.exportButtonsContainer.style.display = "initial";
683
- }
684
- };
685
- /**
686
- * Saves reports content to the cache.
687
- * @param report The report.
688
- * @param content The content (Query serialized into JSON).
689
- */
690
- ReportView.prototype.saveReportContentInCache = function (report, content) {
691
- var item = this.findReportCacheItem(report.id);
692
- if (!item) {
693
- item = { id: report.id };
694
- this.reportCache.push(item);
695
- }
696
- item.lastUpdated = report.lastUpdated;
697
- item.content = content;
698
- };
699
- /**
700
- * Gets the report content from cache.
701
- * @param report The report.
702
- * @returns Content of the report (Query in JSOn string)
703
- */
704
- ReportView.prototype.getReportContentFromCache = function (report) {
705
- var item = this.findReportCacheItem(report.id);
706
- if (item && item.lastUpdated === report.lastUpdated) {
707
- return item.content;
708
- }
709
- return null;
710
- };
711
- ReportView.prototype.findReportById = function (id) {
712
- for (var _i = 0, _a = this.reports; _i < _a.length; _i++) {
713
- var item = _a[_i];
714
- if (item.id === id) {
715
- return item;
716
- }
717
- }
718
- return null;
719
- };
720
- ReportView.prototype.findReportCacheItem = function (id) {
721
- for (var _i = 0, _a = this.reportCache; _i < _a.length; _i++) {
722
- var item = _a[_i];
723
- if (item.id === id) {
724
- return item;
725
- }
726
- }
727
- return null;
728
- };
729
- return ReportView;
730
- }(View));
731
- export { ReportView };
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 { WidgetGroup, QueryChangePart } from '@easyquery/core';
17
+ import { i18n, utils as dataUtils } from '@easydata/core';
18
+ import { domel } from '@easydata/ui';
19
+ import { browserUtils } from '../utils/browser_utils';
20
+ import { View } from './view';
21
+ /**
22
+ * The view that represents the "ad-hoc reporting" scenario
23
+ */
24
+ var ReportView = /** @class */ (function (_super) {
25
+ __extends(ReportView, _super);
26
+ function ReportView() {
27
+ var _this = _super.call(this) || this;
28
+ _this.reports = [];
29
+ _this.reportCache = [];
30
+ _this.exportButtons = [];
31
+ _this.exportClass = "eqjs-export";
32
+ _this.disabledClass = "eqjs-disabled";
33
+ _this.enableExport = false;
34
+ _this.useReportCache = true;
35
+ _this.syncReportOnChange = true;
36
+ _this._reportSaveTemplate = "<div id=\"kdlg-dialog-form\" class=\"kfrm-form\">\n <div class=\"kfrm-fields label-above\">\n <label for=\"kdlg-dialog-form-input\" id=\"kdlg-dialog-form-content\"></label>\n <input type=\"text\" name=\"kdlg-dialog-form-input\" id=\"kdlg-dialog-form-input\" />\n <label for=\"kdlg-dialog-form-textarea\" id=\"kdlg-dialog-form-desc-label\"></label>\n <textarea type=\"text\" name=\"kdlg-dialog-form-textarea\" id=\"kdlg-dialog-form-textarea\"></textarea>\n </div>\n </div>";
37
+ _this.context.useStoredQueryOnFetch = true;
38
+ _this.exportButtonClickHandler = function (srcElement, e) {
39
+ if (!srcElement.classList.contains(_this.disabledClass)) {
40
+ var format = srcElement.getAttribute("data-format");
41
+ _this.context.exportResult({ format: format });
42
+ }
43
+ };
44
+ _this.clearReportButtonClickHandler = _this.clearReportButtonClick.bind(_this);
45
+ _this.newReportButtonClickHandler = _this.newReportButtonClick.bind(_this);
46
+ _this.loadReportButtonClickHandler = _this.loadReportButtonClick.bind(_this);
47
+ _this.saveReportButtonClickHandler = _this.saveReportButtonClick.bind(_this);
48
+ _this.removeReportButtonClickHandler = _this.removeReportButtonClick.bind(_this);
49
+ _this.reloadReportDataButtonClickHandler = _this.reloadReportDataButtonClick.bind(_this);
50
+ browserUtils.onMobileModeChanged(function (_) {
51
+ document.location.reload();
52
+ });
53
+ return _this;
54
+ }
55
+ ReportView.prototype.initOptions = function (options) {
56
+ options = _super.prototype.initOptions.call(this, options);
57
+ if (typeof (options.syncQueryOnChange) !== "undefined") {
58
+ this.syncReportOnChange = options.syncQueryOnChange;
59
+ }
60
+ if (typeof (options.syncReportOnChange) !== "undefined") {
61
+ this.syncReportOnChange = options.syncReportOnChange;
62
+ }
63
+ options.syncQueryOnChange = this.syncReportOnChange;
64
+ if (typeof (options.useReportCache) !== "undefined") {
65
+ this.useReportCache = options.useReportCache;
66
+ }
67
+ this.defaultReportId = options.defaultReportId;
68
+ return options;
69
+ };
70
+ ReportView.prototype.initDone = function () {
71
+ var _this = this;
72
+ _super.prototype.initDone.call(this);
73
+ var query = this.context.getQuery();
74
+ query.addChangedCallback(function (event) {
75
+ var eventData = event.data;
76
+ if (eventData) {
77
+ if (eventData.changeType == "query.switched") {
78
+ _this.context.clearResult();
79
+ _this.context.refreshWidgets(WidgetGroup.Result);
80
+ _this.context.refreshWidgets(WidgetGroup.Query);
81
+ }
82
+ else {
83
+ _this.disableExportButtons();
84
+ if (_this.resultCountSlot) {
85
+ _this.resultCountSlot.style.display = "none";
86
+ }
87
+ }
88
+ }
89
+ //true if we just switched the report or changed facets (query was not changed)
90
+ var isLiteUpdate = !eventData
91
+ || eventData.changeType == "query.switched"
92
+ || eventData.part == QueryChangePart.ExtraData
93
+ || eventData.part == QueryChangePart.Facets;
94
+ var syncStarted = false;
95
+ if (_this.syncReportOnChange) {
96
+ var needSync = eventData && eventData.changeType != "query.switched" && !eventData.noSync;
97
+ if (needSync) {
98
+ syncStarted = true;
99
+ _this.syncReport({
100
+ success: function () {
101
+ // fetch data on query change
102
+ if (!isLiteUpdate && _this.viewOptions.fetchDataOnChange) {
103
+ _this.fetchData();
104
+ }
105
+ }
106
+ });
107
+ }
108
+ }
109
+ // clear dataset result on query change
110
+ if (!isLiteUpdate && _this.resultOptions.clearResultOnQueryChange) {
111
+ _this.context.clearResult();
112
+ _this.context.refreshWidgets(WidgetGroup.Result);
113
+ }
114
+ if (!isLiteUpdate && !syncStarted && _this.viewOptions.fetchDataOnChange) {
115
+ _this.fetchData();
116
+ }
117
+ });
118
+ window.setTimeout(function () {
119
+ _this.context.loadQueryList({
120
+ success: function (data) {
121
+ if (Array.isArray(data)) {
122
+ _this.reports = data;
123
+ var exists = _this.reports.filter(function (r) { return r.id == _this.defaultReportId; }).length > 0;
124
+ if (exists) {
125
+ _this.renderReportList({ reportId: _this.defaultReportId });
126
+ }
127
+ else {
128
+ _this.renderReportList();
129
+ }
130
+ }
131
+ }
132
+ });
133
+ }, 100);
134
+ };
135
+ ReportView.prototype.initWidgets = function (options) {
136
+ var _this = this;
137
+ _super.prototype.initWidgets.call(this, options);
138
+ var clearReportButton = "ClearReportButton";
139
+ var newReportButton = "NewReportButton";
140
+ var loadReportButton = "LoadReportButton";
141
+ var saveReportButton = "SaveReportButton";
142
+ var removeReportButton = "RemoveReportButton";
143
+ var reloadReportDataButton = "ReloadReportDataButton";
144
+ var resultCountSpan = "ResultCount";
145
+ var exportButtons = "ResultExportButtons";
146
+ var exportClass = this.exportClass;
147
+ if (options.slots) {
148
+ resultCountSpan = options.slots.resultCountSpan || resultCountSpan;
149
+ exportButtons = options.slots.exportButtons || exportButtons;
150
+ clearReportButton = options.slots.clearReportButton || clearReportButton;
151
+ newReportButton = options.slots.newReportButton || newReportButton;
152
+ loadReportButton = options.slots.loadReportButton || loadReportButton;
153
+ saveReportButton = options.slots.saveReportButton || saveReportButton;
154
+ removeReportButton = options.slots.removeReportButton || removeReportButton;
155
+ reloadReportDataButton = options.slots.reloadReportDataButton || reloadReportDataButton;
156
+ exportClass = options.slots.exportClass || exportClass;
157
+ }
158
+ this.exportButtons = this.domRoots.reduce(function (elems, root) {
159
+ return elems.concat(Array.from(root.querySelectorAll(".".concat(exportClass))));
160
+ }, []);
161
+ this.enableExport = options.enableExport;
162
+ if (this.enableExport) {
163
+ //Add event listener for export buttons
164
+ this.exportButtons.forEach(function (button) {
165
+ button.addEventListener('click', _this.exportButtonClickHandler);
166
+ });
167
+ }
168
+ else {
169
+ this.hideExportButtons();
170
+ }
171
+ this.exportButtonsContainer = this.resolveElement(exportButtons);
172
+ if (!this.clearReportButton) {
173
+ this.clearReportButton = this.resolveElement(clearReportButton);
174
+ if (this.clearReportButton) {
175
+ this.clearReportButton.addEventListener('click', this.clearReportButtonClickHandler);
176
+ }
177
+ }
178
+ if (!this.newReportButton) {
179
+ this.newReportButton = this.resolveElement(newReportButton);
180
+ if (this.newReportButton) {
181
+ this.newReportButton.addEventListener('click', this.newReportButtonClickHandler);
182
+ }
183
+ }
184
+ if (!this.loadReportButton) {
185
+ this.loadReportButton = this.resolveElement(loadReportButton);
186
+ if (this.loadReportButton) {
187
+ this.loadReportButton.addEventListener('click', this.loadReportButtonClickHandler);
188
+ }
189
+ }
190
+ if (!this.saveReportButton) {
191
+ this.saveReportButton = this.resolveElement(saveReportButton);
192
+ if (this.saveReportButton) {
193
+ this.saveReportButton.addEventListener('click', this.saveReportButtonClickHandler);
194
+ }
195
+ }
196
+ if (!this.removeReportButton) {
197
+ this.removeReportButton = this.resolveElement(removeReportButton);
198
+ if (this.removeReportButton) {
199
+ this.removeReportButton.addEventListener('click', this.removeReportButtonClickHandler);
200
+ }
201
+ }
202
+ if (!this.reloadReportDataButton) {
203
+ this.reloadReportDataButton = this.resolveElement(reloadReportDataButton);
204
+ //OBSOLETE: remove the next 3 lines. We just support the old default button ID here
205
+ if (!this.reloadReportDataButton) {
206
+ this.reloadReportDataButton = this.resolveElement('UpdateReportButton');
207
+ }
208
+ if (this.reloadReportDataButton) {
209
+ this.reloadReportDataButton.addEventListener('click', this.reloadReportDataButtonClickHandler);
210
+ }
211
+ }
212
+ this.reportListSlot = document.getElementById('ReportList');
213
+ this.resultCountSlot = this.resolveElement(resultCountSpan);
214
+ };
215
+ /**
216
+ * Creates a new report.
217
+ */
218
+ ReportView.prototype.newReport = function () {
219
+ var _this = this;
220
+ var ds = this.context.getServices().getDialogService();
221
+ var dlg = ds.open({
222
+ title: i18n.getText('NewReportDlgTitle'),
223
+ body: this._reportSaveTemplate,
224
+ submitable: true,
225
+ closable: true,
226
+ cancelable: true,
227
+ submitOnEnter: true,
228
+ arrangeParents: false,
229
+ beforeOpen: function () {
230
+ var input = document.getElementById("kdlg-dialog-form-input");
231
+ input.value = i18n.getText('NewReportDefName');
232
+ var content = document.getElementById('kdlg-dialog-form-content');
233
+ content.innerHTML = i18n.getText('SaveReportDlgLabel');
234
+ var label = document.getElementById('kdlg-dialog-form-desc-label');
235
+ label.innerHTML = i18n.getText('ReportDescLabel');
236
+ input.focus();
237
+ },
238
+ onSubmit: function () {
239
+ var nameInput = document.getElementById("kdlg-dialog-form-input");
240
+ var queryName = nameInput.value;
241
+ if (queryName && queryName.replace(/\s/g, '').length > 0) {
242
+ dlg.clearAlert();
243
+ dlg.disableButtons();
244
+ var header_1 = dlg.getRootElement().querySelector('header');
245
+ var processEl_1 = domel('div', header_1)
246
+ .addClass('eqjs-process-bar local')
247
+ .toDOM();
248
+ var descInput = document.getElementById("kdlg-dialog-form-textarea");
249
+ var queryDesc = descInput.value;
250
+ _this.context.newQuery({
251
+ name: queryName,
252
+ description: queryDesc,
253
+ success: function () {
254
+ dlg.close();
255
+ var query = _this.context.getQuery();
256
+ var reportId = query.getId();
257
+ _this.insertIntoReportList({ id: reportId, name: query.getName(), description: query.getDescription() });
258
+ _this.renderReportList({ reportId: reportId });
259
+ },
260
+ error: function (error) {
261
+ header_1.removeChild(processEl_1);
262
+ dlg.enableButtons();
263
+ dlg.showAlert(error, 'error');
264
+ }
265
+ });
266
+ }
267
+ return false;
268
+ }
269
+ });
270
+ };
271
+ /**
272
+ * Loads report by ID.
273
+ * @param reportId The ID of the report to load.
274
+ */
275
+ ReportView.prototype.loadReport = function (reportId) {
276
+ var _this = this;
277
+ if (!reportId) {
278
+ throw 'Empty report ID!';
279
+ }
280
+ var reportToLoad = this.findReportById(reportId);
281
+ if (!reportToLoad)
282
+ return;
283
+ var self = this;
284
+ var query = self.context.getQuery();
285
+ var reportLoaded = function () {
286
+ _this.renderReportProps();
287
+ _this.context.resultTable.clear();
288
+ query.fireChangedEvent({
289
+ part: QueryChangePart.All,
290
+ noSync: true,
291
+ changeType: 'query.switched'
292
+ });
293
+ _this.fetchData();
294
+ };
295
+ var reportContent = this.useReportCache ? this.getReportContentFromCache(reportToLoad) : null;
296
+ if (reportContent) {
297
+ query.clear();
298
+ query.loadFromJson(reportContent, { validate: false });
299
+ reportLoaded();
300
+ }
301
+ else {
302
+ this.context.loadQuery({
303
+ queryId: reportId,
304
+ silent: true,
305
+ success: function () {
306
+ _this.saveReportContentInCache(reportToLoad, query.toJSON());
307
+ reportLoaded();
308
+ }
309
+ });
310
+ }
311
+ this.setActiveReport(reportId);
312
+ };
313
+ /**
314
+ * Shows the dialog to save the report with new name.
315
+ */
316
+ ReportView.prototype.saveCurrentReportAs = function () {
317
+ var _this = this;
318
+ var query = this.context.getQuery();
319
+ var ds = this.context.getServices().getDialogService();
320
+ var dlg = ds.open({
321
+ title: i18n.getText('SaveReportDlgTitle'),
322
+ body: this._reportSaveTemplate,
323
+ submitable: true,
324
+ closable: true,
325
+ cancelable: true,
326
+ submitOnEnter: true,
327
+ arrangeParents: false,
328
+ beforeOpen: function () {
329
+ var input = document.getElementById("kdlg-dialog-form-input");
330
+ input.value = query.getName();
331
+ var content = document.getElementById('kdlg-dialog-form-content');
332
+ content.innerHTML = i18n.getText('SaveReportDlgLabel');
333
+ var label = document.getElementById('kdlg-dialog-form-desc-label');
334
+ label.innerHTML = i18n.getText('ReportDescLabel');
335
+ var text = document.getElementById("kdlg-dialog-form-textarea");
336
+ text.value = query.getDescription();
337
+ input.focus();
338
+ },
339
+ onSubmit: function () {
340
+ var input = document.getElementById("kdlg-dialog-form-input");
341
+ var value = input.value;
342
+ if (value && value.replace(/\s/g, '').length > 0) {
343
+ query.setId(dataUtils.generateId(value.replace(/\s/g, '')));
344
+ dlg.clearAlert();
345
+ dlg.disableButtons();
346
+ var header_2 = dlg.getRootElement().querySelector('header');
347
+ var processEl_2 = domel('div', header_2)
348
+ .addClass('eqjs-process-bar local')
349
+ .toDOM();
350
+ var text = document.getElementById("kdlg-dialog-form-textarea");
351
+ var desc = text.value;
352
+ query.setDescription(desc);
353
+ _this.context.newQuery({
354
+ clearQuery: false,
355
+ name: value,
356
+ success: function () {
357
+ dlg.close();
358
+ _this.context.refreshWidgets(WidgetGroup.Query);
359
+ var savedQuery = _this.context.getQuery();
360
+ var reportId = savedQuery.getId();
361
+ _this.fetchData();
362
+ _this.insertIntoReportList({ id: reportId, name: query.getName(), description: query.getDescription() });
363
+ _this.renderReportList({ reportId: reportId });
364
+ _this.setActiveReport(reportId);
365
+ _this.renderReportProps();
366
+ },
367
+ error: function (error) {
368
+ header_2.removeChild(processEl_2);
369
+ dlg.enableButtons();
370
+ dlg.showAlert(error, 'error');
371
+ }
372
+ });
373
+ }
374
+ return false;
375
+ }
376
+ });
377
+ };
378
+ /**
379
+ * Removes current report.
380
+ */
381
+ ReportView.prototype.removeCurrentReport = function () {
382
+ var _this = this;
383
+ var report = this.context.getQuery();
384
+ var ds = this.context.getServices().getDialogService();
385
+ ds.openConfirm(i18n.getText('RemoveReportDlgTitle'), i18n.getText('RemoveReportContent').replace('{reportName}', report.getName()))
386
+ .then(function (result) {
387
+ if (result) {
388
+ var reportId_1 = report.getId();
389
+ _this.context.removeQuery({
390
+ queryId: reportId_1,
391
+ success: function () {
392
+ var index = _this.removeFromReportList(reportId_1);
393
+ _this.renderReportList({ reportIndex: index });
394
+ }
395
+ });
396
+ }
397
+ });
398
+ };
399
+ /**
400
+ * Sends current report's query to back-end.
401
+ */
402
+ ReportView.prototype.syncReport = function (options) {
403
+ var _this = this;
404
+ if (this.useReportCache) {
405
+ var query = this.context.getQuery();
406
+ var currentReport = this.findReportById(query.getId());
407
+ if (currentReport) {
408
+ currentReport.lastUpdated = Date.now();
409
+ this.saveReportContentInCache(currentReport, query.toJSON());
410
+ }
411
+ }
412
+ this.context.syncQuery({
413
+ success: function (responseData) {
414
+ if (responseData.query) {
415
+ _this.context.refreshWidgets(WidgetGroup.Query);
416
+ }
417
+ if (responseData.statement) {
418
+ _this.context.refreshWidgets(WidgetGroup.Statement);
419
+ }
420
+ if (options && options.success) {
421
+ options.success(responseData);
422
+ }
423
+ }
424
+ });
425
+ };
426
+ /**
427
+ * Sets active report.
428
+ * @param reportId The ID of the report to make active.
429
+ */
430
+ ReportView.prototype.setActiveReport = function (reportId) {
431
+ var rlItems = this.reportListSlot.querySelectorAll('li');
432
+ for (var i = 0; i < rlItems.length; i++) {
433
+ var item = rlItems[i];
434
+ item.classList.remove('active');
435
+ var rid = item.getAttribute('data-rid');
436
+ if (rid === reportId) {
437
+ item.classList.add('active');
438
+ }
439
+ }
440
+ ;
441
+ };
442
+ /**
443
+ * Renders current report.
444
+ */
445
+ ReportView.prototype.renderReportProps = function () {
446
+ var query = this.context.getQuery();
447
+ var titleElem = document.getElementById('ReportTitle');
448
+ titleElem.innerHTML = query.getName();
449
+ var columnsPanel = document.querySelector('.columns-bar');
450
+ if (columnsPanel) {
451
+ columnsPanel.innerHTML = '<strong>Columns:</strong>';
452
+ var columns = query.getColumns();
453
+ for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {
454
+ var column = columns_1[_i];
455
+ columnsPanel.innerHTML += '<span class="label label-default">' + column.caption + '</span> ';
456
+ }
457
+ }
458
+ };
459
+ /**
460
+ * Renders the list of reports.
461
+ * @param options The options. In particular, `options.reportIndex` defines which report should be active.
462
+ */
463
+ ReportView.prototype.renderReportList = function (options) {
464
+ this.renderReportPanels();
465
+ if (!this.reportListSlot.matches('li')) {
466
+ this.reportListSlot.innerHTML = "";
467
+ options = options || { reportId: (this.reports.length > 0 ? this.reports[0].id : null) };
468
+ var ul = document.createElement('ul');
469
+ ul.className = 'list-group list-group-flush';
470
+ this.reportListSlot.appendChild(ul);
471
+ for (var _i = 0, _a = this.reports; _i < _a.length; _i++) {
472
+ var report = _a[_i];
473
+ this.renderReportItemInList(report, ul);
474
+ }
475
+ if (options.reportId) {
476
+ this.loadReport(options.reportId);
477
+ }
478
+ if (typeof (options.reportIndex) !== "undefined") {
479
+ var idx = options.reportIndex;
480
+ if (idx >= this.reports.length)
481
+ idx = this.reports.length - 1;
482
+ if (idx < 0 && this.reports.length > 0)
483
+ idx = 0;
484
+ if (idx >= 0)
485
+ this.loadReport(this.reports[idx].id);
486
+ }
487
+ }
488
+ };
489
+ ReportView.prototype.detach = function () {
490
+ var _this = this;
491
+ if (this.exportButtonsContainer) {
492
+ this.showExportButtons();
493
+ this.exportButtons.forEach(function (button) {
494
+ button.removeEventListener('click', _this.exportButtonClickHandler);
495
+ });
496
+ this.exportButtons = [];
497
+ this.exportButtonsContainer = null;
498
+ }
499
+ if (this.clearReportButton) {
500
+ this.clearReportButton.removeEventListener('click', this.clearReportButtonClickHandler);
501
+ this.clearReportButton = null;
502
+ }
503
+ if (this.newReportButton) {
504
+ this.newReportButton.removeEventListener('click', this.newReportButtonClickHandler);
505
+ this.newReportButton = null;
506
+ }
507
+ if (this.loadReportButton) {
508
+ this.loadReportButton.removeEventListener('click', this.loadReportButtonClickHandler);
509
+ this.loadReportButton = null;
510
+ }
511
+ if (this.saveReportButton) {
512
+ this.saveReportButton.addEventListener('click', this.saveReportButtonClickHandler);
513
+ this.saveReportButton = null;
514
+ }
515
+ if (this.removeReportButton) {
516
+ this.removeReportButton.removeEventListener('click', this.removeReportButtonClickHandler);
517
+ this.removeReportButton = null;
518
+ }
519
+ if (this.reloadReportDataButton) {
520
+ this.reloadReportDataButton.removeEventListener('click', this.reloadReportDataButtonClickHandler);
521
+ this.removeReportButton = null;
522
+ }
523
+ if (this.reportListSlot) {
524
+ this.reportListSlot.innerHTML = '';
525
+ this.reportListSlot = null;
526
+ }
527
+ if (this.resultCountSlot) {
528
+ this.resultCountSlot.innerHTML = '';
529
+ this.resultCountSlot = null;
530
+ }
531
+ _super.prototype.detach.call(this);
532
+ };
533
+ /**
534
+ * Renders a single item in the list of reports.
535
+ * @param report The [[Report]] object to render.
536
+ * @param ul The [[HTMLUListElement]] to add the item to.
537
+ */
538
+ ReportView.prototype.renderReportItemInList = function (report, ul) {
539
+ var _this = this;
540
+ if (!ul) {
541
+ ul = this.reportListSlot.querySelector("ul");
542
+ }
543
+ var reportName = report.name || report.description || "";
544
+ var li = document.createElement('li');
545
+ li.className = "list-group-item";
546
+ li.style.cursor = 'pointer';
547
+ li.setAttribute('data-rid', report.id);
548
+ li.innerText = reportName;
549
+ if (report.description) {
550
+ li.title = report.description;
551
+ }
552
+ li.addEventListener('click', function (e) {
553
+ var target = e.target;
554
+ var rid = target.getAttribute('data-rid');
555
+ _this.loadReport(rid);
556
+ _this.setActiveReport(rid);
557
+ });
558
+ ul.appendChild(li);
559
+ };
560
+ /**
561
+ * Renders report panels.
562
+ */
563
+ ReportView.prototype.renderReportPanels = function () {
564
+ var reportsContainer = document.getElementById("ReportsContainer");
565
+ var noReportPanel = document.getElementById("NoReportPanel");
566
+ if (this.reports.length > 0) {
567
+ this.hideElement(noReportPanel);
568
+ this.showElement(reportsContainer);
569
+ }
570
+ else {
571
+ this.hideElement(reportsContainer);
572
+ this.showElement(noReportPanel);
573
+ }
574
+ };
575
+ //TODO: Move these two functions to @easydata/ui
576
+ ReportView.prototype.hideElement = function (element) {
577
+ if (element) {
578
+ element.style.visibility = 'hidden';
579
+ }
580
+ };
581
+ ReportView.prototype.showElement = function (element) {
582
+ if (element) {
583
+ element.style.removeProperty('visibility');
584
+ }
585
+ };
586
+ /**
587
+ * Inserts the report to the list of reports.
588
+ * @param report The [[Report]] object to be inserted.
589
+ */
590
+ ReportView.prototype.insertIntoReportList = function (report) {
591
+ this.reports.push(report);
592
+ };
593
+ /**
594
+ * Removes the report from the list of reports.
595
+ * @param reportId The ID of the report to be removed.
596
+ * @returns the index of removed report.
597
+ */
598
+ ReportView.prototype.removeFromReportList = function (reportId) {
599
+ var index = this.indexOfReportById(reportId);
600
+ if (index >= 0)
601
+ this.reports.splice(index, 1);
602
+ return index;
603
+ };
604
+ ReportView.prototype.indexOfReportById = function (reportId) {
605
+ for (var i = 0; i < this.reports.length; i++) {
606
+ if (this.reports[i].id === reportId)
607
+ return i;
608
+ }
609
+ return -1;
610
+ };
611
+ /**
612
+ * The handler of the "Clear" button click.
613
+ */
614
+ ReportView.prototype.clearReportButtonClick = function () {
615
+ this.clearErrors();
616
+ this.context.clearQuery();
617
+ };
618
+ /**
619
+ * The handler of the "Update" button click.
620
+ */
621
+ ReportView.prototype.reloadReportDataButtonClick = function () {
622
+ this.fetchData();
623
+ };
624
+ /**
625
+ * The handler of the "Save" button click.
626
+ */
627
+ ReportView.prototype.saveReportButtonClick = function () {
628
+ this.saveCurrentReportAs();
629
+ };
630
+ /**
631
+ * The handler of the "Load" button click.
632
+ */
633
+ ReportView.prototype.loadReportButtonClick = function () {
634
+ this.loadReport("LastQuery");
635
+ };
636
+ /**
637
+ * The handler of the "Remove" button click.
638
+ */
639
+ ReportView.prototype.removeReportButtonClick = function () {
640
+ this.removeCurrentReport();
641
+ };
642
+ /**
643
+ * The handler of the "New" button click.
644
+ */
645
+ ReportView.prototype.newReportButtonClick = function () {
646
+ this.newReport();
647
+ };
648
+ /**
649
+ * The handler of errors.
650
+ * @param error The error object.
651
+ */
652
+ ReportView.prototype.errorHandler = function (error) {
653
+ };
654
+ /**
655
+ * Clears the errors.
656
+ */
657
+ ReportView.prototype.clearErrors = function () {
658
+ };
659
+ /**
660
+ * Disables export buttons.
661
+ */
662
+ ReportView.prototype.disableExportButtons = function () {
663
+ this.hideExportButtons();
664
+ };
665
+ /**
666
+ * Enables export buttons.
667
+ */
668
+ ReportView.prototype.enableExportButtons = function () {
669
+ this.showExportButtons();
670
+ };
671
+ /**
672
+ * Hides export buttons.
673
+ */
674
+ ReportView.prototype.hideExportButtons = function () {
675
+ if (this.exportButtonsContainer) {
676
+ this.exportButtonsContainer.style.display = "none";
677
+ }
678
+ };
679
+ /**
680
+ * Shows export buttons.
681
+ */
682
+ ReportView.prototype.showExportButtons = function () {
683
+ if (this.exportButtonsContainer) {
684
+ this.exportButtonsContainer.style.display = "initial";
685
+ }
686
+ };
687
+ /**
688
+ * Saves reports content to the cache.
689
+ * @param report The report.
690
+ * @param content The content (Query serialized into JSON).
691
+ */
692
+ ReportView.prototype.saveReportContentInCache = function (report, content) {
693
+ var item = this.findReportCacheItem(report.id);
694
+ if (!item) {
695
+ item = { id: report.id };
696
+ this.reportCache.push(item);
697
+ }
698
+ item.lastUpdated = report.lastUpdated;
699
+ item.content = content;
700
+ };
701
+ /**
702
+ * Gets the report content from cache.
703
+ * @param report The report.
704
+ * @returns Content of the report (Query in JSOn string)
705
+ */
706
+ ReportView.prototype.getReportContentFromCache = function (report) {
707
+ var item = this.findReportCacheItem(report.id);
708
+ if (item && item.lastUpdated === report.lastUpdated) {
709
+ return item.content;
710
+ }
711
+ return null;
712
+ };
713
+ ReportView.prototype.findReportById = function (id) {
714
+ for (var _i = 0, _a = this.reports; _i < _a.length; _i++) {
715
+ var item = _a[_i];
716
+ if (item.id === id) {
717
+ return item;
718
+ }
719
+ }
720
+ return null;
721
+ };
722
+ ReportView.prototype.findReportCacheItem = function (id) {
723
+ for (var _i = 0, _a = this.reportCache; _i < _a.length; _i++) {
724
+ var item = _a[_i];
725
+ if (item.id === id) {
726
+ return item;
727
+ }
728
+ }
729
+ return null;
730
+ };
731
+ return ReportView;
732
+ }(View));
733
+ export { ReportView };
732
734
  //# sourceMappingURL=report_view.js.map