@easyquery/ui 7.2.3 → 7.2.4-rc01

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/dist/assets/css/easyquery.css +5 -2
  2. package/dist/browser/eq.community.css.map +1 -1
  3. package/dist/browser/eq.community.js +32224 -33715
  4. package/dist/browser/eq.community.js.map +1 -1
  5. package/dist/browser/eq.community.min.js +1 -9
  6. package/dist/browser/eq.community.min.js.map +1 -1
  7. package/dist/browser/eq.core.css +22 -114
  8. package/dist/browser/eq.core.min.css +3 -10
  9. package/dist/browser/eq.view.css +1 -1
  10. package/dist/browser/eq.view.css.map +1 -1
  11. package/dist/browser/eq.view.min.css +1 -10
  12. package/dist/bundles/easyquery.ui.js +22951 -22870
  13. package/dist/bundles/easyquery.ui.js.map +1 -1
  14. package/dist/bundles/easyquery.ui.min.js +1 -1
  15. package/dist/bundles/easyquery.ui.min.js.map +1 -1
  16. package/dist/lib/dialog/aggr_settings_dialog.d.ts +12 -12
  17. package/dist/lib/dialog/aggr_settings_dialog.js +106 -106
  18. package/dist/lib/dialog/export_dialog.d.ts +7 -7
  19. package/dist/lib/dialog/export_dialog.js +63 -63
  20. package/dist/lib/extensions.d.ts +7 -7
  21. package/dist/lib/extensions.js +13 -13
  22. package/dist/lib/facets/chart_facet.d.ts +21 -21
  23. package/dist/lib/facets/chart_facet.js +240 -238
  24. package/dist/lib/facets/chart_facet.js.map +1 -1
  25. package/dist/lib/facets/datatable_facet.d.ts +15 -15
  26. package/dist/lib/facets/datatable_facet.js +71 -69
  27. package/dist/lib/facets/datatable_facet.js.map +1 -1
  28. package/dist/lib/facets/pivot_table_facet.d.ts +51 -51
  29. package/dist/lib/facets/pivot_table_facet.js +698 -696
  30. package/dist/lib/facets/pivot_table_facet.js.map +1 -1
  31. package/dist/lib/facets/result_facet.d.ts +40 -40
  32. package/dist/lib/facets/result_facet.js +246 -246
  33. package/dist/lib/facets/result_facet.js.map +1 -1
  34. package/dist/lib/i18n/text_resources.d.ts +1 -1
  35. package/dist/lib/i18n/text_resources.js +260 -259
  36. package/dist/lib/i18n/text_resources.js.map +1 -1
  37. package/dist/lib/public_api.d.ts +61 -61
  38. package/dist/lib/public_api.js +92 -90
  39. package/dist/lib/public_api.js.map +1 -1
  40. package/dist/lib/types/facet_type.d.ts +5 -5
  41. package/dist/lib/types/facet_type.js +6 -6
  42. package/dist/lib/types/qp_editable_part.d.ts +15 -15
  43. package/dist/lib/types/qp_editable_part.js +16 -16
  44. package/dist/lib/utils/browser_utils.d.ts +8 -8
  45. package/dist/lib/utils/browser_utils.js +58 -58
  46. package/dist/lib/utils/display_format_parser.d.ts +11 -11
  47. package/dist/lib/utils/display_format_parser.js +61 -61
  48. package/dist/lib/utils/dropdown.d.ts +11 -11
  49. package/dist/lib/utils/dropdown.js +57 -55
  50. package/dist/lib/utils/dropdown.js.map +1 -1
  51. package/dist/lib/utils/popup_menu.d.ts +163 -163
  52. package/dist/lib/utils/popup_menu.js +1259 -1260
  53. package/dist/lib/utils/popup_menu.js.map +1 -1
  54. package/dist/lib/utils/utils.d.ts +9 -9
  55. package/dist/lib/utils/utils.js +46 -46
  56. package/dist/lib/utils/utils.js.map +1 -1
  57. package/dist/lib/views/adv_search_view.d.ts +95 -95
  58. package/dist/lib/views/adv_search_view.js +712 -710
  59. package/dist/lib/views/adv_search_view.js.map +1 -1
  60. package/dist/lib/views/data_filter_view.d.ts +17 -17
  61. package/dist/lib/views/data_filter_view.js +79 -77
  62. package/dist/lib/views/data_filter_view.js.map +1 -1
  63. package/dist/lib/views/html_data_filter_view.d.ts +19 -19
  64. package/dist/lib/views/html_data_filter_view.js +44 -42
  65. package/dist/lib/views/html_data_filter_view.js.map +1 -1
  66. package/dist/lib/views/report_view.d.ts +173 -173
  67. package/dist/lib/views/report_view.js +733 -731
  68. package/dist/lib/views/report_view.js.map +1 -1
  69. package/dist/lib/views/view.d.ts +149 -149
  70. package/dist/lib/views/view.js +538 -538
  71. package/dist/lib/views/view.js.map +1 -1
  72. package/dist/lib/views/view_options.d.ts +113 -113
  73. package/dist/lib/views/view_options.js +1 -0
  74. package/dist/lib/widgets/aggregation_bar.d.ts +30 -30
  75. package/dist/lib/widgets/aggregation_bar.js +145 -143
  76. package/dist/lib/widgets/aggregation_bar.js.map +1 -1
  77. package/dist/lib/widgets/charts/chart_type.d.ts +14 -14
  78. package/dist/lib/widgets/charts/chart_type.js +15 -15
  79. package/dist/lib/widgets/charts/chart_widget.d.ts +92 -92
  80. package/dist/lib/widgets/charts/chart_widget.js +384 -382
  81. package/dist/lib/widgets/charts/chart_widget.js.map +1 -1
  82. package/dist/lib/widgets/charts/chart_widget_chartjs.d.ts +23 -23
  83. package/dist/lib/widgets/charts/chart_widget_chartjs.js +186 -184
  84. package/dist/lib/widgets/charts/chart_widget_chartjs.js.map +1 -1
  85. package/dist/lib/widgets/charts/chart_widget_google.d.ts +23 -23
  86. package/dist/lib/widgets/charts/chart_widget_google.js +165 -163
  87. package/dist/lib/widgets/charts/chart_widget_google.js.map +1 -1
  88. package/dist/lib/widgets/columns_bar.d.ts +64 -64
  89. package/dist/lib/widgets/columns_bar.js +722 -721
  90. package/dist/lib/widgets/columns_bar.js.map +1 -1
  91. package/dist/lib/widgets/columns_panel.d.ts +64 -62
  92. package/dist/lib/widgets/columns_panel.js +740 -721
  93. package/dist/lib/widgets/columns_panel.js.map +1 -1
  94. package/dist/lib/widgets/easy_grid_widget.d.ts +38 -38
  95. package/dist/lib/widgets/easy_grid_widget.js +229 -227
  96. package/dist/lib/widgets/easy_grid_widget.js.map +1 -1
  97. package/dist/lib/widgets/entities_panel.d.ts +49 -49
  98. package/dist/lib/widgets/entities_panel.js +627 -625
  99. package/dist/lib/widgets/entities_panel.js.map +1 -1
  100. package/dist/lib/widgets/eq_result_html_grid.d.ts +32 -32
  101. package/dist/lib/widgets/eq_result_html_grid.js +185 -183
  102. package/dist/lib/widgets/eq_result_html_grid.js.map +1 -1
  103. package/dist/lib/widgets/export_widget.d.ts +10 -10
  104. package/dist/lib/widgets/export_widget.js +57 -55
  105. package/dist/lib/widgets/export_widget.js.map +1 -1
  106. package/dist/lib/widgets/facet_container.d.ts +12 -12
  107. package/dist/lib/widgets/facet_container.js +53 -51
  108. package/dist/lib/widgets/facet_container.js.map +1 -1
  109. package/dist/lib/widgets/filter_bar.d.ts +38 -38
  110. package/dist/lib/widgets/filter_bar.js +259 -257
  111. package/dist/lib/widgets/filter_bar.js.map +1 -1
  112. package/dist/lib/widgets/grid.d.ts +35 -35
  113. package/dist/lib/widgets/grid.js +79 -77
  114. package/dist/lib/widgets/grid.js.map +1 -1
  115. package/dist/lib/widgets/html_content_widget.d.ts +35 -35
  116. package/dist/lib/widgets/html_content_widget.js +71 -69
  117. package/dist/lib/widgets/html_content_widget.js.map +1 -1
  118. package/dist/lib/widgets/locale_widget.d.ts +16 -16
  119. package/dist/lib/widgets/locale_widget.js +79 -77
  120. package/dist/lib/widgets/locale_widget.js.map +1 -1
  121. package/dist/lib/widgets/manage_drilldown_widget.d.ts +18 -18
  122. package/dist/lib/widgets/manage_drilldown_widget.js +154 -152
  123. package/dist/lib/widgets/manage_drilldown_widget.js.map +1 -1
  124. package/dist/lib/widgets/process_widget.d.ts +21 -21
  125. package/dist/lib/widgets/process_widget.js +50 -48
  126. package/dist/lib/widgets/process_widget.js.map +1 -1
  127. package/dist/lib/widgets/query_panel.d.ts +62 -58
  128. package/dist/lib/widgets/query_panel.js +675 -653
  129. package/dist/lib/widgets/query_panel.js.map +1 -1
  130. package/dist/lib/widgets/queryname_widget.d.ts +27 -27
  131. package/dist/lib/widgets/queryname_widget.js +109 -107
  132. package/dist/lib/widgets/queryname_widget.js.map +1 -1
  133. package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.d.ts +54 -54
  134. package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.js +429 -429
  135. package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.js.map +1 -1
  136. package/dist/lib/widgets/renderers/base_element_renderer.d.ts +15 -15
  137. package/dist/lib/widgets/renderers/base_element_renderer.js +63 -63
  138. package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.d.ts +11 -11
  139. package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.js +62 -60
  140. package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.js.map +1 -1
  141. package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.d.ts +53 -53
  142. package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.js +550 -550
  143. package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.js.map +1 -1
  144. package/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.d.ts +9 -9
  145. package/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.js +79 -77
  146. package/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.js.map +1 -1
  147. package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.d.ts +17 -17
  148. package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.js +180 -178
  149. package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.js.map +1 -1
  150. package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.d.ts +74 -72
  151. package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.js +829 -817
  152. package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.js.map +1 -1
  153. package/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.d.ts +21 -18
  154. package/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.js +238 -214
  155. package/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.js.map +1 -1
  156. package/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.d.ts +13 -13
  157. package/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.js +180 -178
  158. package/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.js.map +1 -1
  159. package/dist/lib/widgets/renderers/dropdown_renderer.d.ts +9 -9
  160. package/dist/lib/widgets/renderers/dropdown_renderer.js +42 -40
  161. package/dist/lib/widgets/renderers/dropdown_renderer.js.map +1 -1
  162. package/dist/lib/widgets/renderers/querypanel/addrow_renderer.d.ts +16 -16
  163. package/dist/lib/widgets/renderers/querypanel/addrow_renderer.js +87 -85
  164. package/dist/lib/widgets/renderers/querypanel/addrow_renderer.js.map +1 -1
  165. package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.d.ts +14 -14
  166. package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.js +71 -69
  167. package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.js.map +1 -1
  168. package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.d.ts +7 -7
  169. package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.js +41 -39
  170. package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.js.map +1 -1
  171. package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.d.ts +27 -27
  172. package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.js +231 -229
  173. package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.js.map +1 -1
  174. package/dist/lib/widgets/renderers/querypanel/condition_renderer.d.ts +48 -48
  175. package/dist/lib/widgets/renderers/querypanel/condition_renderer.js +509 -507
  176. package/dist/lib/widgets/renderers/querypanel/condition_renderer.js.map +1 -1
  177. package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.d.ts +13 -13
  178. package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.js +108 -106
  179. package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.js.map +1 -1
  180. package/dist/lib/widgets/renderers/querypanel/expression_renderer.d.ts +28 -28
  181. package/dist/lib/widgets/renderers/querypanel/expression_renderer.js +91 -89
  182. package/dist/lib/widgets/renderers/querypanel/expression_renderer.js.map +1 -1
  183. package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.d.ts +14 -14
  184. package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.js +165 -163
  185. package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.js.map +1 -1
  186. package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.d.ts +35 -35
  187. package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.js +317 -315
  188. package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.js.map +1 -1
  189. package/dist/lib/widgets/renderers/querypanel/operator_renderer.d.ts +19 -19
  190. package/dist/lib/widgets/renderers/querypanel/operator_renderer.js +95 -93
  191. package/dist/lib/widgets/renderers/querypanel/operator_renderer.js.map +1 -1
  192. package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.d.ts +27 -27
  193. package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.js +237 -235
  194. package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.js.map +1 -1
  195. package/dist/lib/widgets/renderers/querypanel/text_renderer.d.ts +11 -11
  196. package/dist/lib/widgets/renderers/querypanel/text_renderer.js +36 -36
  197. package/dist/lib/widgets/renderers/querypanel/text_renderer.js.map +1 -1
  198. package/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.d.ts +26 -26
  199. package/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.js +163 -163
  200. package/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.js.map +1 -1
  201. package/dist/lib/widgets/result_facets_panel.d.ts +64 -64
  202. package/dist/lib/widgets/result_facets_panel.js +503 -501
  203. package/dist/lib/widgets/result_facets_panel.js.map +1 -1
  204. package/dist/lib/widgets/sorting_bar.d.ts +32 -34
  205. package/dist/lib/widgets/sorting_bar.js +245 -328
  206. package/dist/lib/widgets/sorting_bar.js.map +1 -1
  207. package/dist/lib/widgets/statement_panel.d.ts +21 -21
  208. package/dist/lib/widgets/statement_panel.js +60 -58
  209. package/dist/lib/widgets/statement_panel.js.map +1 -1
  210. package/dist/lib/widgets/widget_options.d.ts +433 -429
  211. package/dist/lib/widgets/widget_options.js +1 -0
  212. package/package.json +25 -25
  213. package/webpack.config.js +31 -24
  214. package/dist/browser/eq.community.min.css.map +0 -1
  215. package/dist/browser/eq.view.min.css.map +0 -1
@@ -1,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