@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,711 +1,713 @@
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 { i18n } from '@easydata/core';
15
- import { QueryChangePart, WidgetGroup } from '@easyquery/core';
16
- import { domel } from '@easydata/ui';
17
- import { PopupMenu } from '../utils/popup_menu';
18
- import { browserUtils } from '../utils/browser_utils';
19
- import { View } from '../views/view';
20
- /**
21
- * The EasyQuery client-side view that represents the UI for advanced search page
22
- */
23
- var AdvancedSearchView = /** @class */ (function (_super) {
24
- __extends(AdvancedSearchView, _super);
25
- function AdvancedSearchView() {
26
- var _this = _super.call(this) || this;
27
- _this.exportButtons = [];
28
- // Name of the class to add to disabled elements.
29
- _this.disabledClass = "eqjs-disabled";
30
- _this.dropdownContainerClass = "eqv-dropdown-container";
31
- _this.dropdownButtonClass = "eqv-drop-button";
32
- _this.dropdownContentClass = "eqv-dropdown-content";
33
- _this.dropdownShowClass = "eqv-dropdown-show";
34
- _this._querySaveTemplate = "<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 </div>\n </div>";
35
- _this.queryListMenu = null;
36
- _this.fetchDataButtonClickHandler = _this.fetchDataButtonClick.bind(_this);
37
- _this.clearQueryButtonClickHandler = _this.clearQueryButtonClick.bind(_this);
38
- _this.newQueryButtonClickHandler = _this.newQueryButtonClick.bind(_this);
39
- _this.loadQueryButtonClickHandler = _this.loadQueryButtonClick.bind(_this);
40
- _this.saveQueryButtonClickHandler = _this.saveQueryButtonClick.bind(_this);
41
- _this.copyQueryButtonClickHandler = _this.copyQueryButtonClick.bind(_this);
42
- _this.removeQueryButtonClickHandler = _this.removeQueryButtonClick.bind(_this);
43
- _this.storageButtonClickHandler = _this.storageDropButtonClick.bind(_this);
44
- _this.saveQueryToFileButtonClickHandler = _this.saveQueryToFileButtonClick.bind(_this);
45
- _this.loadQueryFromFileButtonClickHandler = _this.loadQueryFromFileButtonClick.bind(_this);
46
- var self = _this;
47
- _this.exportButtonClickHandler = function (e) {
48
- if (!this.classList.contains(self.disabledClass)) {
49
- var format = this.getAttribute("data-format");
50
- self.getContext().exportResult({ format: format });
51
- }
52
- };
53
- _this.queryChangedHandler = function (ev) {
54
- var eventData = ev.data;
55
- if (_this.resultOptions.clearResultOnQueryChange) {
56
- _this.context.clearResult();
57
- _this.context.refreshWidgets(WidgetGroup.Result);
58
- }
59
- _this.disableExportButtons();
60
- if (_this.resultCountSlot) {
61
- _this.resultCountSlot.style.display = "none";
62
- }
63
- if (_this.viewOptions.syncQueryOnChange) {
64
- _this.syncQuery();
65
- }
66
- if (_this.viewOptions.fetchDataOnChange) {
67
- if (!eventData || (eventData.part != QueryChangePart.ExtraData
68
- && eventData.part != QueryChangePart.Facets)) {
69
- _this.fetchData();
70
- }
71
- }
72
- };
73
- _this.outsideClickHandler = function (event) {
74
- var currentContent = null;
75
- if (event.target.matches("." + _this.dropdownButtonClass)) {
76
- currentContent = event.target.parentElement.querySelector("." + _this.dropdownContentClass);
77
- }
78
- else if (event.target.matches("." + _this.dropdownButtonClass + " > span")) {
79
- currentContent = event.target.parentElement.parentElement.querySelector("." + _this.dropdownContentClass);
80
- }
81
- var dropdowns = _this.resolveElementsByClassName(_this.dropdownContentClass);
82
- for (var i = 0; i < dropdowns.length; i++) {
83
- var openDropdown = dropdowns[i];
84
- if (currentContent != openDropdown) {
85
- if (openDropdown.classList.contains(_this.dropdownShowClass)) {
86
- openDropdown.classList.remove(_this.dropdownShowClass);
87
- }
88
- }
89
- }
90
- };
91
- return _this;
92
- }
93
- AdvancedSearchView.prototype.refreshQueryList = function () {
94
- var _this = this;
95
- if (this.queryListPanel) {
96
- this.queryListPanel.innerHTML = '';
97
- this.context.loadQueryList({
98
- success: function (data) {
99
- var b = domel('ul', _this.queryListPanel)
100
- .addClass('list-group list-group-flush');
101
- data.map(function (item) {
102
- b.addChild('li', function (b) {
103
- b.addClass('list-group-item')
104
- .setStyle('cursor', 'pointer')
105
- .data('id', item.id)
106
- .text(item.name)
107
- .on('click', function () {
108
- _this.checkIfQueryModified(function () { return _this.loadQuery(item.id); });
109
- });
110
- });
111
- });
112
- }
113
- });
114
- }
115
- };
116
- AdvancedSearchView.prototype.initOptions = function (options) {
117
- options = _super.prototype.initOptions.call(this, options);
118
- if (typeof (options.syncQueryOnChange) == 'undefined') {
119
- options.syncQueryOnChange = true;
120
- }
121
- return options;
122
- };
123
- AdvancedSearchView.prototype.initWidgets = function (options) {
124
- var _this = this;
125
- _super.prototype.initWidgets.call(this, options);
126
- var exportClass = "eqjs-export";
127
- var queryContentInputId = "QueryContentJson";
128
- var clearQueryButtonId = "ClearQueryButton";
129
- var newQueryButtonId = "NewQueryButton";
130
- var loadQueryButtonId = "LoadQueryButton";
131
- var saveQueryButtonId = "SaveQueryButton";
132
- var copyQueryButtonId = "CopyQueryButton";
133
- var removeQueryButtonId = "RemoveQueryButton";
134
- var storageButtonId = "StorageDropButton";
135
- var fetchDataButtonId = "FetchDataButton";
136
- var loadQueryFromFileButtonId = "LoadQueryFromFileButton";
137
- var saveQueryToFileButtonId = "SaveQueryToFileButton";
138
- var queryListPanelId = "QueryListPanel";
139
- if (options.slots) {
140
- queryContentInputId = options.slots.queryContentInput || queryContentInputId;
141
- fetchDataButtonId = options.slots.fetchDataButton || fetchDataButtonId;
142
- clearQueryButtonId = options.slots.clearQueryButton || clearQueryButtonId;
143
- newQueryButtonId = options.slots.newQueryButton || newQueryButtonId;
144
- loadQueryButtonId = options.slots.loadQueryButton || loadQueryButtonId;
145
- saveQueryButtonId = options.slots.saveQueryButton || saveQueryButtonId;
146
- copyQueryButtonId = options.slots.copyQueryButton || copyQueryButtonId;
147
- removeQueryButtonId = options.slots.removeQueryButton || removeQueryButtonId;
148
- storageButtonId = options.slots.storageButton || storageButtonId;
149
- exportClass = options.slots.exportClass || exportClass;
150
- loadQueryFromFileButtonId = options.slots.loadQueryFromFileButton || loadQueryFromFileButtonId;
151
- saveQueryToFileButtonId = options.slots.saveQueryToFileButton || saveQueryToFileButtonId;
152
- queryListPanelId = options.slots.queryListPanel || queryListPanelId;
153
- }
154
- this.exportButtons = this.domRoots.reduce(function (elems, root) {
155
- return elems.concat(Array.from(root.querySelectorAll("." + exportClass)));
156
- }, []);
157
- if (!options.enableExport) {
158
- this.hideExportButtons();
159
- }
160
- this.disableExportButtons();
161
- //Add event listener for export buttons
162
- var self = this;
163
- this.exportButtons.forEach(function (button) {
164
- button.addEventListener('click', _this.exportButtonClickHandler);
165
- });
166
- if (!this.fetchDataButton) {
167
- this.fetchDataButton = this.resolveElement(fetchDataButtonId);
168
- if (!this.fetchDataButton) {
169
- this.fetchDataButton = this.resolveElement('ExecuteQueryButton'); //deprecated, should be removed on the next major update
170
- }
171
- if (this.fetchDataButton) {
172
- this.fetchDataButton.addEventListener('click', this.fetchDataButtonClickHandler);
173
- }
174
- }
175
- if (!this.clearQueryButton) {
176
- this.clearQueryButton = this.resolveElement(clearQueryButtonId);
177
- if (this.clearQueryButton) {
178
- this.clearQueryButton.addEventListener('click', this.clearQueryButtonClickHandler);
179
- }
180
- }
181
- if (!this.newQueryButton) {
182
- this.newQueryButton = this.resolveElement(newQueryButtonId);
183
- if (this.newQueryButton) {
184
- this.newQueryButton.addEventListener('click', this.newQueryButtonClickHandler);
185
- }
186
- }
187
- if (!this.loadQueryButton) {
188
- this.loadQueryButton = this.resolveElement(loadQueryButtonId);
189
- if (this.loadQueryButton) {
190
- this.loadQueryButton.addEventListener('click', this.loadQueryButtonClickHandler);
191
- }
192
- }
193
- if (!this.saveQueryButton) {
194
- this.saveQueryButton = this.resolveElement(saveQueryButtonId);
195
- if (this.saveQueryButton) {
196
- this.saveQueryButton.addEventListener('click', this.saveQueryButtonClickHandler);
197
- }
198
- }
199
- if (!this.copyQueryButton) {
200
- this.copyQueryButton = this.resolveElement(copyQueryButtonId);
201
- if (this.copyQueryButton) {
202
- this.copyQueryButton.addEventListener('click', this.copyQueryButtonClickHandler);
203
- }
204
- }
205
- if (!this.removeQueryButton) {
206
- this.removeQueryButton = this.resolveElement(removeQueryButtonId);
207
- if (this.removeQueryButton) {
208
- this.removeQueryButton.addEventListener('click', this.removeQueryButtonClickHandler);
209
- }
210
- }
211
- if (!this.storageDropButton) {
212
- this.storageDropButton = this.resolveElement(storageButtonId);
213
- if (this.storageDropButton) {
214
- this.storageDropButton.addEventListener('click', this.storageButtonClickHandler);
215
- }
216
- }
217
- if (!this.saveQueryToFileButton) {
218
- this.saveQueryToFileButton = this.resolveElement(saveQueryToFileButtonId);
219
- if (this.saveQueryToFileButton) {
220
- this.saveQueryToFileButton.addEventListener('click', this.saveQueryToFileButtonClickHandler);
221
- }
222
- }
223
- if (!this.queryListPanel) {
224
- this.queryListPanel = this.resolveElement(queryListPanelId);
225
- //For backward compatibility. Remove on the next update
226
- if (!this.queryListPanel) {
227
- this.queryListPanel = this.resolveElement('QueryListSlot');
228
- }
229
- if (this.queryListPanel) {
230
- this.context.addEventListener('ready', function () {
231
- _this.refreshQueryList();
232
- });
233
- }
234
- }
235
- if (!this.loadQueryFromFileButton) {
236
- this.loadQueryFromFileButton = this.resolveElement(loadQueryFromFileButtonId);
237
- if (this.loadQueryFromFileButton) {
238
- this.loadQueryFromFileInput = document.createElement('input');
239
- this.loadQueryFromFileInput.type = 'file';
240
- this.loadQueryFromFileInput.accept = options.queryFileExtensions;
241
- this.loadQueryFromFileInput.style.display = 'none';
242
- document.body.appendChild(this.loadQueryFromFileInput);
243
- this.loadQueryFromFileInput.addEventListener('change', this.loadQueryFromFileInputSelect.bind(this));
244
- this.loadQueryFromFileButton.addEventListener('click', this.loadQueryFromFileButtonClickHandler);
245
- }
246
- }
247
- // hide any dropdown menu when user clicks somewhere
248
- window.addEventListener('click', this.outsideClickHandler);
249
- };
250
- AdvancedSearchView.prototype.initDone = function () {
251
- _super.prototype.initDone.call(this);
252
- var query = this.context.getQuery();
253
- query.addChangedCallback(this.queryChangedHandler);
254
- };
255
- /**
256
- * Sends current query to the backend.
257
- */
258
- AdvancedSearchView.prototype.syncQuery = function () {
259
- var _this = this;
260
- this.context.syncQuery({
261
- success: function (responseData) {
262
- if (responseData.statement) {
263
- _this.context.refreshWidgets(WidgetGroup.Statement);
264
- }
265
- }
266
- });
267
- };
268
- /**
269
- * Disables export buttons.
270
- */
271
- AdvancedSearchView.prototype.disableExportButtons = function () {
272
- var _this = this;
273
- this.exportButtons.forEach(function (button) {
274
- button.disabled = true;
275
- if (!button.classList.contains(_this.disabledClass)) {
276
- button.classList.add(_this.disabledClass);
277
- }
278
- });
279
- };
280
- /**
281
- * Enables export buttons.
282
- */
283
- AdvancedSearchView.prototype.enableExportButtons = function () {
284
- var _this = this;
285
- this.exportButtons.forEach(function (button) {
286
- button.disabled = false;
287
- if (button.classList.contains(_this.disabledClass)) {
288
- button.classList.remove(_this.disabledClass);
289
- }
290
- });
291
- };
292
- /**
293
- * Hides export buttons.
294
- */
295
- AdvancedSearchView.prototype.hideExportButtons = function () {
296
- this.exportButtons.forEach(function (button) {
297
- button.style.display = "none";
298
- });
299
- };
300
- AdvancedSearchView.prototype.clearQueryButtonClick = function () {
301
- this.context.clearQuery();
302
- this.context.refreshWidgets(WidgetGroup.Statement);
303
- };
304
- AdvancedSearchView.prototype.createNewQuery = function (options) {
305
- return this.context.newQuery(options);
306
- };
307
- AdvancedSearchView.prototype.loadQuery = function (queryId) {
308
- if (!queryId)
309
- return;
310
- this.context.loadQuery({
311
- queryId: queryId,
312
- silent: false
313
- });
314
- };
315
- AdvancedSearchView.prototype.saveQuery = function (success, error) {
316
- var _this = this;
317
- this.context.saveQuery({
318
- success: function () {
319
- if (success)
320
- success();
321
- _this.context.getQuery().fireChangedEvent({
322
- part: QueryChangePart.Properties,
323
- wasModified: false
324
- });
325
- _this.refreshQueryList();
326
- },
327
- error: error
328
- });
329
- };
330
- AdvancedSearchView.prototype.saveCurrentQuery = function (copyQuery, callback) {
331
- var _this = this;
332
- if (copyQuery === void 0) { copyQuery = false; }
333
- var query = this.context.getQuery();
334
- if (query.isNewbie || copyQuery) {
335
- this.showSaveQueryDialog(function (result) { return new Promise(function (resolve) {
336
- if (!result)
337
- return;
338
- query.regenerateId();
339
- query.setName(result);
340
- query.fireChangedEvent({
341
- part: QueryChangePart.Properties,
342
- wasModified: true
343
- });
344
- _this.saveQuery(function () { resolve({ success: true }); callback; }, function (error) { return resolve({ success: false, message: error }); });
345
- }); });
346
- }
347
- else {
348
- this.saveQuery(callback);
349
- }
350
- };
351
- AdvancedSearchView.prototype.checkIfQueryModified = function (callback) {
352
- var _this = this;
353
- if (this.context.getQuery().isModified()
354
- && !this.viewOptions.disableConfirmationOnQueryChange) {
355
- this.showQueryChangedDialog(function (result) {
356
- if (result) {
357
- _this.saveCurrentQuery(false, callback);
358
- }
359
- else {
360
- callback();
361
- }
362
- });
363
- }
364
- else {
365
- callback();
366
- }
367
- };
368
- AdvancedSearchView.prototype.removeCurrentQuery = function () {
369
- var _this = this;
370
- this.context.removeQuery({
371
- success: function () {
372
- _this.createNewQuery({
373
- useStorage: false
374
- });
375
- if (_this.resultCountSlot) {
376
- _this.resultCountSlot.style.display = "none";
377
- }
378
- _this.context.clearResult();
379
- _this.refreshQueryList();
380
- }
381
- });
382
- };
383
- // ------------------ Dialog wrappers ---------------------
384
- AdvancedSearchView.prototype.showNewQueryDialog = function (callback) {
385
- var ds = this.context.getServices().getDialogService();
386
- var defVal = i18n.getText('NewQueryDefName');
387
- var dlg = ds.open({
388
- title: i18n.getText('NewQueryTitle'),
389
- body: this._querySaveTemplate,
390
- submitable: true,
391
- closable: true,
392
- cancelable: true,
393
- submitOnEnter: true,
394
- arrangeParents: false,
395
- beforeOpen: function () {
396
- var input = document.getElementById("kdlg-dialog-form-input");
397
- if (defVal) {
398
- input.value = defVal;
399
- }
400
- var content = document.getElementById('kdlg-dialog-form-content');
401
- content.innerHTML = i18n.getText('NewQueryContent');
402
- input.focus();
403
- },
404
- onSubmit: function () {
405
- var input = document.getElementById("kdlg-dialog-form-input");
406
- var value = input.value;
407
- if (value && value.replace(/\s/g, '').length > 0) {
408
- if (!callback)
409
- return true;
410
- dlg.disableButtons();
411
- var header_1 = dlg.getRootElement().querySelector('header');
412
- var processEl_1 = domel('div', header_1)
413
- .addClass('eqjs-process-bar local')
414
- .toDOM();
415
- callback(value)
416
- .then(function (result) {
417
- header_1.removeChild(processEl_1);
418
- dlg.enableButtons();
419
- if (result.success) {
420
- dlg.close();
421
- }
422
- else {
423
- dlg.showAlert(result.message, 'error');
424
- }
425
- });
426
- }
427
- return false;
428
- }
429
- });
430
- };
431
- AdvancedSearchView.prototype.showQueryChangedDialog = function (callback) {
432
- var ds = this.context.getServices().getDialogService();
433
- ds.openConfirm(i18n.getText('QueryChangedTitle'), i18n.getText('QueryChangedContent'), callback);
434
- };
435
- AdvancedSearchView.prototype.showSaveQueryDialog = function (callback) {
436
- var ds = this.context.getServices().getDialogService();
437
- var query = this.context.getQuery();
438
- var newQueryName = query.isNewbie
439
- ? query.getName()
440
- : i18n.getText('SaveQueryDefName').replace('{queryName}', query.getName());
441
- var dlg = ds.open({
442
- title: i18n.getText('SaveQueryTitle'),
443
- body: this._querySaveTemplate,
444
- submitable: true,
445
- closable: true,
446
- cancelable: true,
447
- submitOnEnter: true,
448
- arrangeParents: false,
449
- beforeOpen: function () {
450
- var input = document.getElementById("kdlg-dialog-form-input");
451
- input.value = newQueryName;
452
- var content = document.getElementById('kdlg-dialog-form-content');
453
- content.innerHTML = i18n.getText('SaveQueryContent');
454
- input.focus();
455
- },
456
- onSubmit: function () {
457
- var input = document.getElementById("kdlg-dialog-form-input");
458
- var value = input.value;
459
- if (value && value.replace(/\s/g, '').length > 0) {
460
- if (!callback)
461
- return true;
462
- dlg.disableButtons();
463
- var header_2 = dlg.getRootElement().querySelector('header');
464
- var processEl_2 = domel('div', header_2)
465
- .addClass('eqjs-process-bar local')
466
- .toDOM();
467
- callback(value)
468
- .then(function (result) {
469
- dlg.enableButtons();
470
- header_2.removeChild(processEl_2);
471
- if (result.success) {
472
- dlg.close();
473
- }
474
- else {
475
- dlg.showAlert(result.message, 'error');
476
- }
477
- });
478
- }
479
- return false;
480
- }
481
- });
482
- };
483
- AdvancedSearchView.prototype.showRemoveQueryDialog = function (callback) {
484
- var ds = this.context.getServices().getDialogService();
485
- var query = this.context.getQuery();
486
- ds.openConfirm(i18n.getText('RemoveQueryTitle'), i18n.getText('RemoveQueryContent').replace('{queryName}', query.getName()), callback);
487
- };
488
- AdvancedSearchView.prototype.showSaveQueryToFileDialog = function (callback) {
489
- var ds = this.getContext().getServices().getDialogService();
490
- var query = this.context.getQuery();
491
- var body = this.renderSaveToFileDialogBody(query.getName());
492
- var dlg = ds.open({
493
- title: i18n.getText('SaveQueryToFileDlgTitle'),
494
- body: body,
495
- onSubmit: function () {
496
- var fileNameInput = body.querySelector('#kdlgFileNameInput');
497
- var fileName = fileNameInput ? fileNameInput.value : "Query";
498
- var formatSelector = body.querySelector('#kdlgFileFormatSelector');
499
- var format = formatSelector ? formatSelector.value : 'json';
500
- if (callback) {
501
- dlg.disableButtons();
502
- var header_3 = dlg.getRootElement().querySelector('header');
503
- var processEl_3 = domel('div', header_3)
504
- .addClass('eqjs-process-bar local')
505
- .toDOM();
506
- callback(fileName, format)
507
- .then(function (result) {
508
- dlg.enableButtons();
509
- header_3.removeChild(processEl_3);
510
- if (result.success) {
511
- dlg.close();
512
- }
513
- else {
514
- dlg.showAlert(result.message, 'error');
515
- }
516
- });
517
- return false;
518
- }
519
- return true;
520
- }
521
- });
522
- };
523
- AdvancedSearchView.prototype.renderSaveToFileDialogBody = function (name, format) {
524
- if (format === void 0) { format = "json"; }
525
- var isIE = browserUtils.isIE();
526
- var fieldsClass = isIE
527
- ? 'kfrm-fields-ie col-ie-1-4 label-align-right'
528
- : 'kfrm-fields col-a-1 label-align-right';
529
- var horizClass = isIE
530
- ? 'kfrm-fields-ie is-horizontal'
531
- : 'kfrm-fields is-horizontal';
532
- return domel('div')
533
- .addClass('kfrm-form')
534
- .addChild('div', function (b) {
535
- b.addClass(fieldsClass)
536
- .addChild('label', function (b) { return b
537
- .attr('for', 'file_name')
538
- .addText(i18n.getText('FileNameLabel')); })
539
- .addChild('div', function (b) { return b
540
- .addClass(horizClass)
541
- .addChild('input', function (b) { return b
542
- .id('kdlgFileNameInput')
543
- .name('file_name')
544
- .type('text')
545
- .attr('value', name); })
546
- .addChild('label', function (b) { return b
547
- .addText('.'); })
548
- .addChild('div', function (b) { return b
549
- .addClass('kfrm-select')
550
- .addChild('select', function (b) { return b
551
- .id('kdlgFileFormatSelector')
552
- .addClass('kdlg-form-control')
553
- .addOption({
554
- value: 'xml',
555
- selected: 'xml' === format
556
- })
557
- .addOption({
558
- value: 'json',
559
- selected: 'json' === format
560
- }); }); }); });
561
- })
562
- .toDOM();
563
- };
564
- // ------------------ Query management buttons handler ---------------------
565
- AdvancedSearchView.prototype.newQueryButtonClick = function () {
566
- var _this = this;
567
- this.checkIfQueryModified(function () {
568
- _this.createNewQuery();
569
- });
570
- };
571
- AdvancedSearchView.prototype.saveQueryToFileButtonClick = function () {
572
- var _this = this;
573
- this.showSaveQueryToFileDialog(function (fileName, format) { return new Promise(function (resolve) {
574
- _this.context.getQueryFile({
575
- fileName: fileName,
576
- format: format,
577
- success: function () { return resolve({ success: true }); },
578
- error: function (error) { return resolve({ success: false, message: error }); }
579
- });
580
- }); });
581
- };
582
- AdvancedSearchView.prototype.loadQueryFromFileButtonClick = function () {
583
- var _this = this;
584
- this.checkIfQueryModified(function () {
585
- _this.showLoadQueryFromFileDialog();
586
- });
587
- };
588
- AdvancedSearchView.prototype.showLoadQueryFromFileDialog = function () {
589
- this.loadQueryFromFileInput.click();
590
- };
591
- AdvancedSearchView.prototype.loadQueryFromFileInputSelect = function () {
592
- var _this = this;
593
- var files = this.loadQueryFromFileInput.files;
594
- var file = files.item(0);
595
- var data = new FormData();
596
- data.append(file.name, file);
597
- this.loadQueryFromFileInput.value = "";
598
- this.context.uploadQueryFile({
599
- data: data,
600
- success: function () {
601
- _this.syncQuery();
602
- _this.refreshQueryList();
603
- }
604
- });
605
- };
606
- AdvancedSearchView.prototype.loadQueryButtonClick = function () {
607
- var _this = this;
608
- this.context.loadQueryList({
609
- success: function (data) {
610
- _this.fillLoadQueryButtonMenu(data);
611
- _this.queryListMenu.showMenu({
612
- anchor: _this.loadQueryButton,
613
- adjustHeight: false,
614
- itemSelectedCallback: function (data) {
615
- _this.checkIfQueryModified(function () { return _this.loadQuery(data.id); });
616
- }
617
- });
618
- }
619
- });
620
- };
621
- AdvancedSearchView.prototype.fillLoadQueryButtonMenu = function (queryList) {
622
- var query = this.getContext().getQuery();
623
- this.queryListMenu = new PopupMenu({
624
- items: queryList.map(function (item) { return ({ id: item.id, text: item.name }); }),
625
- selectedIds: query.getId()
626
- });
627
- };
628
- AdvancedSearchView.prototype.saveQueryButtonClick = function () {
629
- this.saveCurrentQuery();
630
- };
631
- AdvancedSearchView.prototype.copyQueryButtonClick = function () {
632
- this.saveCurrentQuery(true);
633
- };
634
- AdvancedSearchView.prototype.removeQueryButtonClick = function () {
635
- var _this = this;
636
- this.showRemoveQueryDialog(function (result) {
637
- if (result) {
638
- _this.removeCurrentQuery();
639
- }
640
- });
641
- };
642
- AdvancedSearchView.prototype.storageDropButtonClick = function () {
643
- var _this = this;
644
- var container = this.storageDropButton.parentElement;
645
- var content = container.querySelector("." + this.dropdownContentClass);
646
- if (content) {
647
- window.setTimeout(function () { return content.classList.toggle(_this.dropdownShowClass); }, 100);
648
- }
649
- };
650
- AdvancedSearchView.prototype.fetchDataButtonClick = function () {
651
- this.fetchData();
652
- };
653
- AdvancedSearchView.prototype.detach = function () {
654
- var _this = this;
655
- this.enableExportButtons();
656
- this.exportButtons.forEach(function (button) {
657
- button.removeEventListener('click', _this.exportButtonClickHandler);
658
- });
659
- this.exportButtons = [];
660
- if (this.fetchDataButton) {
661
- this.fetchDataButton.removeEventListener('click', this.fetchDataButtonClickHandler);
662
- this.fetchDataButton = null;
663
- }
664
- if (this.clearQueryButton) {
665
- this.clearQueryButton.removeEventListener('click', this.clearQueryButtonClickHandler);
666
- this.clearQueryButton = null;
667
- }
668
- if (this.newQueryButton) {
669
- this.newQueryButton.removeEventListener('click', this.newQueryButtonClickHandler);
670
- this.newQueryButton = null;
671
- }
672
- if (this.loadQueryButton) {
673
- this.loadQueryButton.removeEventListener('click', this.loadQueryButtonClickHandler);
674
- this.loadQueryButton = null;
675
- }
676
- if (this.saveQueryButton) {
677
- this.saveQueryButton.removeEventListener('click', this.saveQueryButtonClickHandler);
678
- this.saveQueryButton = null;
679
- }
680
- if (this.copyQueryButton) {
681
- this.copyQueryButton.removeEventListener('click', this.copyQueryButtonClickHandler);
682
- this.copyQueryButton = null;
683
- }
684
- if (this.removeQueryButton) {
685
- this.removeQueryButton.removeEventListener('click', this.removeQueryButtonClickHandler);
686
- this.removeQueryButton = null;
687
- }
688
- if (this.storageDropButton) {
689
- this.storageDropButton.removeEventListener('click', this.storageButtonClickHandler);
690
- this.storageDropButton = null;
691
- }
692
- if (this.saveQueryToFileButton) {
693
- this.saveQueryToFileButton.removeEventListener('click', this.saveQueryToFileButtonClickHandler);
694
- this.saveQueryToFileButton = null;
695
- }
696
- if (this.queryListPanel) {
697
- this.queryListPanel = null;
698
- }
699
- if (this.loadQueryFromFileButton) {
700
- if (this.loadQueryFromFileInput) {
701
- document.body.removeChild(this.loadQueryFromFileInput);
702
- }
703
- this.loadQueryFromFileButton.removeEventListener('click', this.loadQueryFromFileButtonClickHandler);
704
- this.loadQueryFromFileButton = null;
705
- }
706
- _super.prototype.detach.call(this);
707
- };
708
- return AdvancedSearchView;
709
- }(View));
710
- export { AdvancedSearchView };
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 { i18n } from '@easydata/core';
17
+ import { QueryChangePart, WidgetGroup } from '@easyquery/core';
18
+ import { domel } from '@easydata/ui';
19
+ import { PopupMenu } from '../utils/popup_menu';
20
+ import { browserUtils } from '../utils/browser_utils';
21
+ import { View } from '../views/view';
22
+ /**
23
+ * The EasyQuery client-side view that represents the UI for advanced search page
24
+ */
25
+ var AdvancedSearchView = /** @class */ (function (_super) {
26
+ __extends(AdvancedSearchView, _super);
27
+ function AdvancedSearchView() {
28
+ var _this = _super.call(this) || this;
29
+ _this.exportButtons = [];
30
+ // Name of the class to add to disabled elements.
31
+ _this.disabledClass = "eqjs-disabled";
32
+ _this.dropdownContainerClass = "eqv-dropdown-container";
33
+ _this.dropdownButtonClass = "eqv-drop-button";
34
+ _this.dropdownContentClass = "eqv-dropdown-content";
35
+ _this.dropdownShowClass = "eqv-dropdown-show";
36
+ _this._querySaveTemplate = "<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 </div>\n </div>";
37
+ _this.queryListMenu = null;
38
+ _this.fetchDataButtonClickHandler = _this.fetchDataButtonClick.bind(_this);
39
+ _this.clearQueryButtonClickHandler = _this.clearQueryButtonClick.bind(_this);
40
+ _this.newQueryButtonClickHandler = _this.newQueryButtonClick.bind(_this);
41
+ _this.loadQueryButtonClickHandler = _this.loadQueryButtonClick.bind(_this);
42
+ _this.saveQueryButtonClickHandler = _this.saveQueryButtonClick.bind(_this);
43
+ _this.copyQueryButtonClickHandler = _this.copyQueryButtonClick.bind(_this);
44
+ _this.removeQueryButtonClickHandler = _this.removeQueryButtonClick.bind(_this);
45
+ _this.storageButtonClickHandler = _this.storageDropButtonClick.bind(_this);
46
+ _this.saveQueryToFileButtonClickHandler = _this.saveQueryToFileButtonClick.bind(_this);
47
+ _this.loadQueryFromFileButtonClickHandler = _this.loadQueryFromFileButtonClick.bind(_this);
48
+ var self = _this;
49
+ _this.exportButtonClickHandler = function (e) {
50
+ if (!this.classList.contains(self.disabledClass)) {
51
+ var format = this.getAttribute("data-format");
52
+ self.getContext().exportResult({ format: format });
53
+ }
54
+ };
55
+ _this.queryChangedHandler = function (ev) {
56
+ var eventData = ev.data;
57
+ if (_this.resultOptions.clearResultOnQueryChange) {
58
+ _this.context.clearResult();
59
+ _this.context.refreshWidgets(WidgetGroup.Result);
60
+ }
61
+ _this.disableExportButtons();
62
+ if (_this.resultCountSlot) {
63
+ _this.resultCountSlot.style.display = "none";
64
+ }
65
+ if (_this.viewOptions.syncQueryOnChange) {
66
+ _this.syncQuery();
67
+ }
68
+ if (_this.viewOptions.fetchDataOnChange) {
69
+ if (!eventData || (eventData.part != QueryChangePart.ExtraData
70
+ && eventData.part != QueryChangePart.Facets)) {
71
+ _this.fetchData();
72
+ }
73
+ }
74
+ };
75
+ _this.outsideClickHandler = function (event) {
76
+ var currentContent = null;
77
+ if (event.target.matches(".".concat(_this.dropdownButtonClass))) {
78
+ currentContent = event.target.parentElement.querySelector(".".concat(_this.dropdownContentClass));
79
+ }
80
+ else if (event.target.matches(".".concat(_this.dropdownButtonClass, " > span"))) {
81
+ currentContent = event.target.parentElement.parentElement.querySelector(".".concat(_this.dropdownContentClass));
82
+ }
83
+ var dropdowns = _this.resolveElementsByClassName(_this.dropdownContentClass);
84
+ for (var i = 0; i < dropdowns.length; i++) {
85
+ var openDropdown = dropdowns[i];
86
+ if (currentContent != openDropdown) {
87
+ if (openDropdown.classList.contains(_this.dropdownShowClass)) {
88
+ openDropdown.classList.remove(_this.dropdownShowClass);
89
+ }
90
+ }
91
+ }
92
+ };
93
+ return _this;
94
+ }
95
+ AdvancedSearchView.prototype.refreshQueryList = function () {
96
+ var _this = this;
97
+ if (this.queryListPanel) {
98
+ this.queryListPanel.innerHTML = '';
99
+ this.context.loadQueryList({
100
+ success: function (data) {
101
+ var b = domel('ul', _this.queryListPanel)
102
+ .addClass('list-group list-group-flush');
103
+ data.map(function (item) {
104
+ b.addChild('li', function (b) {
105
+ b.addClass('list-group-item')
106
+ .setStyle('cursor', 'pointer')
107
+ .data('id', item.id)
108
+ .text(item.name)
109
+ .on('click', function () {
110
+ _this.checkIfQueryModified(function () { return _this.loadQuery(item.id); });
111
+ });
112
+ });
113
+ });
114
+ }
115
+ });
116
+ }
117
+ };
118
+ AdvancedSearchView.prototype.initOptions = function (options) {
119
+ options = _super.prototype.initOptions.call(this, options);
120
+ if (typeof (options.syncQueryOnChange) == 'undefined') {
121
+ options.syncQueryOnChange = true;
122
+ }
123
+ return options;
124
+ };
125
+ AdvancedSearchView.prototype.initWidgets = function (options) {
126
+ var _this = this;
127
+ _super.prototype.initWidgets.call(this, options);
128
+ var exportClass = "eqjs-export";
129
+ var queryContentInputId = "QueryContentJson";
130
+ var clearQueryButtonId = "ClearQueryButton";
131
+ var newQueryButtonId = "NewQueryButton";
132
+ var loadQueryButtonId = "LoadQueryButton";
133
+ var saveQueryButtonId = "SaveQueryButton";
134
+ var copyQueryButtonId = "CopyQueryButton";
135
+ var removeQueryButtonId = "RemoveQueryButton";
136
+ var storageButtonId = "StorageDropButton";
137
+ var fetchDataButtonId = "FetchDataButton";
138
+ var loadQueryFromFileButtonId = "LoadQueryFromFileButton";
139
+ var saveQueryToFileButtonId = "SaveQueryToFileButton";
140
+ var queryListPanelId = "QueryListPanel";
141
+ if (options.slots) {
142
+ queryContentInputId = options.slots.queryContentInput || queryContentInputId;
143
+ fetchDataButtonId = options.slots.fetchDataButton || fetchDataButtonId;
144
+ clearQueryButtonId = options.slots.clearQueryButton || clearQueryButtonId;
145
+ newQueryButtonId = options.slots.newQueryButton || newQueryButtonId;
146
+ loadQueryButtonId = options.slots.loadQueryButton || loadQueryButtonId;
147
+ saveQueryButtonId = options.slots.saveQueryButton || saveQueryButtonId;
148
+ copyQueryButtonId = options.slots.copyQueryButton || copyQueryButtonId;
149
+ removeQueryButtonId = options.slots.removeQueryButton || removeQueryButtonId;
150
+ storageButtonId = options.slots.storageButton || storageButtonId;
151
+ exportClass = options.slots.exportClass || exportClass;
152
+ loadQueryFromFileButtonId = options.slots.loadQueryFromFileButton || loadQueryFromFileButtonId;
153
+ saveQueryToFileButtonId = options.slots.saveQueryToFileButton || saveQueryToFileButtonId;
154
+ queryListPanelId = options.slots.queryListPanel || queryListPanelId;
155
+ }
156
+ this.exportButtons = this.domRoots.reduce(function (elems, root) {
157
+ return elems.concat(Array.from(root.querySelectorAll(".".concat(exportClass))));
158
+ }, []);
159
+ if (!options.enableExport) {
160
+ this.hideExportButtons();
161
+ }
162
+ this.disableExportButtons();
163
+ //Add event listener for export buttons
164
+ var self = this;
165
+ this.exportButtons.forEach(function (button) {
166
+ button.addEventListener('click', _this.exportButtonClickHandler);
167
+ });
168
+ if (!this.fetchDataButton) {
169
+ this.fetchDataButton = this.resolveElement(fetchDataButtonId);
170
+ if (!this.fetchDataButton) {
171
+ this.fetchDataButton = this.resolveElement('ExecuteQueryButton'); //deprecated, should be removed on the next major update
172
+ }
173
+ if (this.fetchDataButton) {
174
+ this.fetchDataButton.addEventListener('click', this.fetchDataButtonClickHandler);
175
+ }
176
+ }
177
+ if (!this.clearQueryButton) {
178
+ this.clearQueryButton = this.resolveElement(clearQueryButtonId);
179
+ if (this.clearQueryButton) {
180
+ this.clearQueryButton.addEventListener('click', this.clearQueryButtonClickHandler);
181
+ }
182
+ }
183
+ if (!this.newQueryButton) {
184
+ this.newQueryButton = this.resolveElement(newQueryButtonId);
185
+ if (this.newQueryButton) {
186
+ this.newQueryButton.addEventListener('click', this.newQueryButtonClickHandler);
187
+ }
188
+ }
189
+ if (!this.loadQueryButton) {
190
+ this.loadQueryButton = this.resolveElement(loadQueryButtonId);
191
+ if (this.loadQueryButton) {
192
+ this.loadQueryButton.addEventListener('click', this.loadQueryButtonClickHandler);
193
+ }
194
+ }
195
+ if (!this.saveQueryButton) {
196
+ this.saveQueryButton = this.resolveElement(saveQueryButtonId);
197
+ if (this.saveQueryButton) {
198
+ this.saveQueryButton.addEventListener('click', this.saveQueryButtonClickHandler);
199
+ }
200
+ }
201
+ if (!this.copyQueryButton) {
202
+ this.copyQueryButton = this.resolveElement(copyQueryButtonId);
203
+ if (this.copyQueryButton) {
204
+ this.copyQueryButton.addEventListener('click', this.copyQueryButtonClickHandler);
205
+ }
206
+ }
207
+ if (!this.removeQueryButton) {
208
+ this.removeQueryButton = this.resolveElement(removeQueryButtonId);
209
+ if (this.removeQueryButton) {
210
+ this.removeQueryButton.addEventListener('click', this.removeQueryButtonClickHandler);
211
+ }
212
+ }
213
+ if (!this.storageDropButton) {
214
+ this.storageDropButton = this.resolveElement(storageButtonId);
215
+ if (this.storageDropButton) {
216
+ this.storageDropButton.addEventListener('click', this.storageButtonClickHandler);
217
+ }
218
+ }
219
+ if (!this.saveQueryToFileButton) {
220
+ this.saveQueryToFileButton = this.resolveElement(saveQueryToFileButtonId);
221
+ if (this.saveQueryToFileButton) {
222
+ this.saveQueryToFileButton.addEventListener('click', this.saveQueryToFileButtonClickHandler);
223
+ }
224
+ }
225
+ if (!this.queryListPanel) {
226
+ this.queryListPanel = this.resolveElement(queryListPanelId);
227
+ //For backward compatibility. Remove on the next update
228
+ if (!this.queryListPanel) {
229
+ this.queryListPanel = this.resolveElement('QueryListSlot');
230
+ }
231
+ if (this.queryListPanel) {
232
+ this.context.addEventListener('ready', function () {
233
+ _this.refreshQueryList();
234
+ });
235
+ }
236
+ }
237
+ if (!this.loadQueryFromFileButton) {
238
+ this.loadQueryFromFileButton = this.resolveElement(loadQueryFromFileButtonId);
239
+ if (this.loadQueryFromFileButton) {
240
+ this.loadQueryFromFileInput = document.createElement('input');
241
+ this.loadQueryFromFileInput.type = 'file';
242
+ this.loadQueryFromFileInput.accept = options.queryFileExtensions;
243
+ this.loadQueryFromFileInput.style.display = 'none';
244
+ document.body.appendChild(this.loadQueryFromFileInput);
245
+ this.loadQueryFromFileInput.addEventListener('change', this.loadQueryFromFileInputSelect.bind(this));
246
+ this.loadQueryFromFileButton.addEventListener('click', this.loadQueryFromFileButtonClickHandler);
247
+ }
248
+ }
249
+ // hide any dropdown menu when user clicks somewhere
250
+ window.addEventListener('click', this.outsideClickHandler);
251
+ };
252
+ AdvancedSearchView.prototype.initDone = function () {
253
+ _super.prototype.initDone.call(this);
254
+ var query = this.context.getQuery();
255
+ query.addChangedCallback(this.queryChangedHandler);
256
+ };
257
+ /**
258
+ * Sends current query to the backend.
259
+ */
260
+ AdvancedSearchView.prototype.syncQuery = function () {
261
+ var _this = this;
262
+ this.context.syncQuery({
263
+ success: function (responseData) {
264
+ if (responseData.statement) {
265
+ _this.context.refreshWidgets(WidgetGroup.Statement);
266
+ }
267
+ }
268
+ });
269
+ };
270
+ /**
271
+ * Disables export buttons.
272
+ */
273
+ AdvancedSearchView.prototype.disableExportButtons = function () {
274
+ var _this = this;
275
+ this.exportButtons.forEach(function (button) {
276
+ button.disabled = true;
277
+ if (!button.classList.contains(_this.disabledClass)) {
278
+ button.classList.add(_this.disabledClass);
279
+ }
280
+ });
281
+ };
282
+ /**
283
+ * Enables export buttons.
284
+ */
285
+ AdvancedSearchView.prototype.enableExportButtons = function () {
286
+ var _this = this;
287
+ this.exportButtons.forEach(function (button) {
288
+ button.disabled = false;
289
+ if (button.classList.contains(_this.disabledClass)) {
290
+ button.classList.remove(_this.disabledClass);
291
+ }
292
+ });
293
+ };
294
+ /**
295
+ * Hides export buttons.
296
+ */
297
+ AdvancedSearchView.prototype.hideExportButtons = function () {
298
+ this.exportButtons.forEach(function (button) {
299
+ button.style.display = "none";
300
+ });
301
+ };
302
+ AdvancedSearchView.prototype.clearQueryButtonClick = function () {
303
+ this.context.clearQuery();
304
+ this.context.refreshWidgets(WidgetGroup.Statement);
305
+ };
306
+ AdvancedSearchView.prototype.createNewQuery = function (options) {
307
+ return this.context.newQuery(options);
308
+ };
309
+ AdvancedSearchView.prototype.loadQuery = function (queryId) {
310
+ if (!queryId)
311
+ return;
312
+ this.context.loadQuery({
313
+ queryId: queryId,
314
+ silent: false
315
+ });
316
+ };
317
+ AdvancedSearchView.prototype.saveQuery = function (success, error) {
318
+ var _this = this;
319
+ this.context.saveQuery({
320
+ success: function () {
321
+ if (success)
322
+ success();
323
+ _this.context.getQuery().fireChangedEvent({
324
+ part: QueryChangePart.Properties,
325
+ wasModified: false
326
+ });
327
+ _this.refreshQueryList();
328
+ },
329
+ error: error
330
+ });
331
+ };
332
+ AdvancedSearchView.prototype.saveCurrentQuery = function (copyQuery, callback) {
333
+ var _this = this;
334
+ if (copyQuery === void 0) { copyQuery = false; }
335
+ var query = this.context.getQuery();
336
+ if (query.isNewbie || copyQuery) {
337
+ this.showSaveQueryDialog(function (result) { return new Promise(function (resolve) {
338
+ if (!result)
339
+ return;
340
+ query.regenerateId();
341
+ query.setName(result);
342
+ query.fireChangedEvent({
343
+ part: QueryChangePart.Properties,
344
+ wasModified: true
345
+ });
346
+ _this.saveQuery(function () { resolve({ success: true }); callback; }, function (error) { return resolve({ success: false, message: error }); });
347
+ }); });
348
+ }
349
+ else {
350
+ this.saveQuery(callback);
351
+ }
352
+ };
353
+ AdvancedSearchView.prototype.checkIfQueryModified = function (callback) {
354
+ var _this = this;
355
+ if (this.context.getQuery().isModified()
356
+ && !this.viewOptions.disableConfirmationOnQueryChange) {
357
+ this.showQueryChangedDialog(function (result) {
358
+ if (result) {
359
+ _this.saveCurrentQuery(false, callback);
360
+ }
361
+ else {
362
+ callback();
363
+ }
364
+ });
365
+ }
366
+ else {
367
+ callback();
368
+ }
369
+ };
370
+ AdvancedSearchView.prototype.removeCurrentQuery = function () {
371
+ var _this = this;
372
+ this.context.removeQuery({
373
+ success: function () {
374
+ _this.createNewQuery({
375
+ useStorage: false
376
+ });
377
+ if (_this.resultCountSlot) {
378
+ _this.resultCountSlot.style.display = "none";
379
+ }
380
+ _this.context.clearResult();
381
+ _this.refreshQueryList();
382
+ }
383
+ });
384
+ };
385
+ // ------------------ Dialog wrappers ---------------------
386
+ AdvancedSearchView.prototype.showNewQueryDialog = function (callback) {
387
+ var ds = this.context.getServices().getDialogService();
388
+ var defVal = i18n.getText('NewQueryDefName');
389
+ var dlg = ds.open({
390
+ title: i18n.getText('NewQueryTitle'),
391
+ body: this._querySaveTemplate,
392
+ submitable: true,
393
+ closable: true,
394
+ cancelable: true,
395
+ submitOnEnter: true,
396
+ arrangeParents: false,
397
+ beforeOpen: function () {
398
+ var input = document.getElementById("kdlg-dialog-form-input");
399
+ if (defVal) {
400
+ input.value = defVal;
401
+ }
402
+ var content = document.getElementById('kdlg-dialog-form-content');
403
+ content.innerHTML = i18n.getText('NewQueryContent');
404
+ input.focus();
405
+ },
406
+ onSubmit: function () {
407
+ var input = document.getElementById("kdlg-dialog-form-input");
408
+ var value = input.value;
409
+ if (value && value.replace(/\s/g, '').length > 0) {
410
+ if (!callback)
411
+ return true;
412
+ dlg.disableButtons();
413
+ var header_1 = dlg.getRootElement().querySelector('header');
414
+ var processEl_1 = domel('div', header_1)
415
+ .addClass('eqjs-process-bar local')
416
+ .toDOM();
417
+ callback(value)
418
+ .then(function (result) {
419
+ header_1.removeChild(processEl_1);
420
+ dlg.enableButtons();
421
+ if (result.success) {
422
+ dlg.close();
423
+ }
424
+ else {
425
+ dlg.showAlert(result.message, 'error');
426
+ }
427
+ });
428
+ }
429
+ return false;
430
+ }
431
+ });
432
+ };
433
+ AdvancedSearchView.prototype.showQueryChangedDialog = function (callback) {
434
+ var ds = this.context.getServices().getDialogService();
435
+ ds.openConfirm(i18n.getText('QueryChangedTitle'), i18n.getText('QueryChangedContent'), callback);
436
+ };
437
+ AdvancedSearchView.prototype.showSaveQueryDialog = function (callback) {
438
+ var ds = this.context.getServices().getDialogService();
439
+ var query = this.context.getQuery();
440
+ var newQueryName = query.isNewbie
441
+ ? query.getName()
442
+ : i18n.getText('SaveQueryDefName').replace('{queryName}', query.getName());
443
+ var dlg = ds.open({
444
+ title: i18n.getText('SaveQueryTitle'),
445
+ body: this._querySaveTemplate,
446
+ submitable: true,
447
+ closable: true,
448
+ cancelable: true,
449
+ submitOnEnter: true,
450
+ arrangeParents: false,
451
+ beforeOpen: function () {
452
+ var input = document.getElementById("kdlg-dialog-form-input");
453
+ input.value = newQueryName;
454
+ var content = document.getElementById('kdlg-dialog-form-content');
455
+ content.innerHTML = i18n.getText('SaveQueryContent');
456
+ input.focus();
457
+ },
458
+ onSubmit: function () {
459
+ var input = document.getElementById("kdlg-dialog-form-input");
460
+ var value = input.value;
461
+ if (value && value.replace(/\s/g, '').length > 0) {
462
+ if (!callback)
463
+ return true;
464
+ dlg.disableButtons();
465
+ var header_2 = dlg.getRootElement().querySelector('header');
466
+ var processEl_2 = domel('div', header_2)
467
+ .addClass('eqjs-process-bar local')
468
+ .toDOM();
469
+ callback(value)
470
+ .then(function (result) {
471
+ dlg.enableButtons();
472
+ header_2.removeChild(processEl_2);
473
+ if (result.success) {
474
+ dlg.close();
475
+ }
476
+ else {
477
+ dlg.showAlert(result.message, 'error');
478
+ }
479
+ });
480
+ }
481
+ return false;
482
+ }
483
+ });
484
+ };
485
+ AdvancedSearchView.prototype.showRemoveQueryDialog = function (callback) {
486
+ var ds = this.context.getServices().getDialogService();
487
+ var query = this.context.getQuery();
488
+ ds.openConfirm(i18n.getText('RemoveQueryTitle'), i18n.getText('RemoveQueryContent').replace('{queryName}', query.getName()), callback);
489
+ };
490
+ AdvancedSearchView.prototype.showSaveQueryToFileDialog = function (callback) {
491
+ var ds = this.getContext().getServices().getDialogService();
492
+ var query = this.context.getQuery();
493
+ var body = this.renderSaveToFileDialogBody(query.getName());
494
+ var dlg = ds.open({
495
+ title: i18n.getText('SaveQueryToFileDlgTitle'),
496
+ body: body,
497
+ onSubmit: function () {
498
+ var fileNameInput = body.querySelector('#kdlgFileNameInput');
499
+ var fileName = fileNameInput ? fileNameInput.value : "Query";
500
+ var formatSelector = body.querySelector('#kdlgFileFormatSelector');
501
+ var format = formatSelector ? formatSelector.value : 'json';
502
+ if (callback) {
503
+ dlg.disableButtons();
504
+ var header_3 = dlg.getRootElement().querySelector('header');
505
+ var processEl_3 = domel('div', header_3)
506
+ .addClass('eqjs-process-bar local')
507
+ .toDOM();
508
+ callback(fileName, format)
509
+ .then(function (result) {
510
+ dlg.enableButtons();
511
+ header_3.removeChild(processEl_3);
512
+ if (result.success) {
513
+ dlg.close();
514
+ }
515
+ else {
516
+ dlg.showAlert(result.message, 'error');
517
+ }
518
+ });
519
+ return false;
520
+ }
521
+ return true;
522
+ }
523
+ });
524
+ };
525
+ AdvancedSearchView.prototype.renderSaveToFileDialogBody = function (name, format) {
526
+ if (format === void 0) { format = "json"; }
527
+ var isIE = browserUtils.isIE();
528
+ var fieldsClass = isIE
529
+ ? 'kfrm-fields-ie col-ie-1-4 label-align-right'
530
+ : 'kfrm-fields col-a-1 label-align-right';
531
+ var horizClass = isIE
532
+ ? 'kfrm-fields-ie is-horizontal'
533
+ : 'kfrm-fields is-horizontal';
534
+ return domel('div')
535
+ .addClass('kfrm-form')
536
+ .addChild('div', function (b) {
537
+ b.addClass(fieldsClass)
538
+ .addChild('label', function (b) { return b
539
+ .attr('for', 'file_name')
540
+ .addText(i18n.getText('FileNameLabel')); })
541
+ .addChild('div', function (b) { return b
542
+ .addClass(horizClass)
543
+ .addChild('input', function (b) { return b
544
+ .id('kdlgFileNameInput')
545
+ .name('file_name')
546
+ .type('text')
547
+ .attr('value', name); })
548
+ .addChild('label', function (b) { return b
549
+ .addText('.'); })
550
+ .addChild('div', function (b) { return b
551
+ .addClass('kfrm-select')
552
+ .addChild('select', function (b) { return b
553
+ .id('kdlgFileFormatSelector')
554
+ .addClass('kdlg-form-control')
555
+ .addOption({
556
+ value: 'xml',
557
+ selected: 'xml' === format
558
+ })
559
+ .addOption({
560
+ value: 'json',
561
+ selected: 'json' === format
562
+ }); }); }); });
563
+ })
564
+ .toDOM();
565
+ };
566
+ // ------------------ Query management buttons handler ---------------------
567
+ AdvancedSearchView.prototype.newQueryButtonClick = function () {
568
+ var _this = this;
569
+ this.checkIfQueryModified(function () {
570
+ _this.createNewQuery();
571
+ });
572
+ };
573
+ AdvancedSearchView.prototype.saveQueryToFileButtonClick = function () {
574
+ var _this = this;
575
+ this.showSaveQueryToFileDialog(function (fileName, format) { return new Promise(function (resolve) {
576
+ _this.context.getQueryFile({
577
+ fileName: fileName,
578
+ format: format,
579
+ success: function () { return resolve({ success: true }); },
580
+ error: function (error) { return resolve({ success: false, message: error }); }
581
+ });
582
+ }); });
583
+ };
584
+ AdvancedSearchView.prototype.loadQueryFromFileButtonClick = function () {
585
+ var _this = this;
586
+ this.checkIfQueryModified(function () {
587
+ _this.showLoadQueryFromFileDialog();
588
+ });
589
+ };
590
+ AdvancedSearchView.prototype.showLoadQueryFromFileDialog = function () {
591
+ this.loadQueryFromFileInput.click();
592
+ };
593
+ AdvancedSearchView.prototype.loadQueryFromFileInputSelect = function () {
594
+ var _this = this;
595
+ var files = this.loadQueryFromFileInput.files;
596
+ var file = files.item(0);
597
+ var data = new FormData();
598
+ data.append(file.name, file);
599
+ this.loadQueryFromFileInput.value = "";
600
+ this.context.uploadQueryFile({
601
+ data: data,
602
+ success: function () {
603
+ _this.syncQuery();
604
+ _this.refreshQueryList();
605
+ }
606
+ });
607
+ };
608
+ AdvancedSearchView.prototype.loadQueryButtonClick = function () {
609
+ var _this = this;
610
+ this.context.loadQueryList({
611
+ success: function (data) {
612
+ _this.fillLoadQueryButtonMenu(data);
613
+ _this.queryListMenu.showMenu({
614
+ anchor: _this.loadQueryButton,
615
+ adjustHeight: false,
616
+ itemSelectedCallback: function (data) {
617
+ _this.checkIfQueryModified(function () { return _this.loadQuery(data.id); });
618
+ }
619
+ });
620
+ }
621
+ });
622
+ };
623
+ AdvancedSearchView.prototype.fillLoadQueryButtonMenu = function (queryList) {
624
+ var query = this.getContext().getQuery();
625
+ this.queryListMenu = new PopupMenu({
626
+ items: queryList.map(function (item) { return ({ id: item.id, text: item.name }); }),
627
+ selectedIds: query.getId()
628
+ });
629
+ };
630
+ AdvancedSearchView.prototype.saveQueryButtonClick = function () {
631
+ this.saveCurrentQuery();
632
+ };
633
+ AdvancedSearchView.prototype.copyQueryButtonClick = function () {
634
+ this.saveCurrentQuery(true);
635
+ };
636
+ AdvancedSearchView.prototype.removeQueryButtonClick = function () {
637
+ var _this = this;
638
+ this.showRemoveQueryDialog(function (result) {
639
+ if (result) {
640
+ _this.removeCurrentQuery();
641
+ }
642
+ });
643
+ };
644
+ AdvancedSearchView.prototype.storageDropButtonClick = function () {
645
+ var _this = this;
646
+ var container = this.storageDropButton.parentElement;
647
+ var content = container.querySelector(".".concat(this.dropdownContentClass));
648
+ if (content) {
649
+ window.setTimeout(function () { return content.classList.toggle(_this.dropdownShowClass); }, 100);
650
+ }
651
+ };
652
+ AdvancedSearchView.prototype.fetchDataButtonClick = function () {
653
+ this.fetchData();
654
+ };
655
+ AdvancedSearchView.prototype.detach = function () {
656
+ var _this = this;
657
+ this.enableExportButtons();
658
+ this.exportButtons.forEach(function (button) {
659
+ button.removeEventListener('click', _this.exportButtonClickHandler);
660
+ });
661
+ this.exportButtons = [];
662
+ if (this.fetchDataButton) {
663
+ this.fetchDataButton.removeEventListener('click', this.fetchDataButtonClickHandler);
664
+ this.fetchDataButton = null;
665
+ }
666
+ if (this.clearQueryButton) {
667
+ this.clearQueryButton.removeEventListener('click', this.clearQueryButtonClickHandler);
668
+ this.clearQueryButton = null;
669
+ }
670
+ if (this.newQueryButton) {
671
+ this.newQueryButton.removeEventListener('click', this.newQueryButtonClickHandler);
672
+ this.newQueryButton = null;
673
+ }
674
+ if (this.loadQueryButton) {
675
+ this.loadQueryButton.removeEventListener('click', this.loadQueryButtonClickHandler);
676
+ this.loadQueryButton = null;
677
+ }
678
+ if (this.saveQueryButton) {
679
+ this.saveQueryButton.removeEventListener('click', this.saveQueryButtonClickHandler);
680
+ this.saveQueryButton = null;
681
+ }
682
+ if (this.copyQueryButton) {
683
+ this.copyQueryButton.removeEventListener('click', this.copyQueryButtonClickHandler);
684
+ this.copyQueryButton = null;
685
+ }
686
+ if (this.removeQueryButton) {
687
+ this.removeQueryButton.removeEventListener('click', this.removeQueryButtonClickHandler);
688
+ this.removeQueryButton = null;
689
+ }
690
+ if (this.storageDropButton) {
691
+ this.storageDropButton.removeEventListener('click', this.storageButtonClickHandler);
692
+ this.storageDropButton = null;
693
+ }
694
+ if (this.saveQueryToFileButton) {
695
+ this.saveQueryToFileButton.removeEventListener('click', this.saveQueryToFileButtonClickHandler);
696
+ this.saveQueryToFileButton = null;
697
+ }
698
+ if (this.queryListPanel) {
699
+ this.queryListPanel = null;
700
+ }
701
+ if (this.loadQueryFromFileButton) {
702
+ if (this.loadQueryFromFileInput) {
703
+ document.body.removeChild(this.loadQueryFromFileInput);
704
+ }
705
+ this.loadQueryFromFileButton.removeEventListener('click', this.loadQueryFromFileButtonClickHandler);
706
+ this.loadQueryFromFileButton = null;
707
+ }
708
+ _super.prototype.detach.call(this);
709
+ };
710
+ return AdvancedSearchView;
711
+ }(View));
712
+ export { AdvancedSearchView };
711
713
  //# sourceMappingURL=adv_search_view.js.map