@easyquery/ui 7.2.3-rc03 → 7.2.4-beta03

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/dist/browser/eq.community.css.map +1 -1
  2. package/dist/browser/eq.community.js +32587 -34146
  3. package/dist/browser/eq.community.js.map +1 -1
  4. package/dist/browser/eq.community.min.js +1 -9
  5. package/dist/browser/eq.community.min.js.map +1 -1
  6. package/dist/browser/eq.core.css +17 -112
  7. package/dist/browser/eq.core.min.css +3 -10
  8. package/dist/browser/eq.view.css +1 -1
  9. package/dist/browser/eq.view.css.map +1 -1
  10. package/dist/browser/eq.view.min.css +1 -10
  11. package/dist/bundles/easyquery.ui.js +23032 -22870
  12. package/dist/bundles/easyquery.ui.js.map +1 -1
  13. package/dist/bundles/easyquery.ui.min.js +1 -1
  14. package/dist/bundles/easyquery.ui.min.js.map +1 -1
  15. package/dist/lib/dialog/aggr_settings_dialog.d.ts +12 -12
  16. package/dist/lib/dialog/aggr_settings_dialog.js +106 -106
  17. package/dist/lib/dialog/export_dialog.d.ts +7 -7
  18. package/dist/lib/dialog/export_dialog.js +63 -63
  19. package/dist/lib/extensions.d.ts +7 -7
  20. package/dist/lib/extensions.js +13 -13
  21. package/dist/lib/facets/chart_facet.d.ts +21 -21
  22. package/dist/lib/facets/chart_facet.js +240 -238
  23. package/dist/lib/facets/chart_facet.js.map +1 -1
  24. package/dist/lib/facets/datatable_facet.d.ts +15 -15
  25. package/dist/lib/facets/datatable_facet.js +71 -69
  26. package/dist/lib/facets/datatable_facet.js.map +1 -1
  27. package/dist/lib/facets/pivot_table_facet.d.ts +51 -51
  28. package/dist/lib/facets/pivot_table_facet.js +698 -696
  29. package/dist/lib/facets/pivot_table_facet.js.map +1 -1
  30. package/dist/lib/facets/result_facet.d.ts +40 -40
  31. package/dist/lib/facets/result_facet.js +246 -246
  32. package/dist/lib/facets/result_facet.js.map +1 -1
  33. package/dist/lib/i18n/text_resources.d.ts +1 -1
  34. package/dist/lib/i18n/text_resources.js +260 -259
  35. package/dist/lib/i18n/text_resources.js.map +1 -1
  36. package/dist/lib/public_api.d.ts +61 -61
  37. package/dist/lib/public_api.js +92 -90
  38. package/dist/lib/public_api.js.map +1 -1
  39. package/dist/lib/types/facet_type.d.ts +5 -5
  40. package/dist/lib/types/facet_type.js +6 -6
  41. package/dist/lib/types/qp_editable_part.d.ts +15 -15
  42. package/dist/lib/types/qp_editable_part.js +16 -16
  43. package/dist/lib/utils/browser_utils.d.ts +8 -8
  44. package/dist/lib/utils/browser_utils.js +58 -58
  45. package/dist/lib/utils/display_format_parser.d.ts +11 -11
  46. package/dist/lib/utils/display_format_parser.js +61 -61
  47. package/dist/lib/utils/dropdown.d.ts +11 -11
  48. package/dist/lib/utils/dropdown.js +57 -55
  49. package/dist/lib/utils/dropdown.js.map +1 -1
  50. package/dist/lib/utils/popup_menu.d.ts +163 -163
  51. package/dist/lib/utils/popup_menu.js +1259 -1260
  52. package/dist/lib/utils/popup_menu.js.map +1 -1
  53. package/dist/lib/utils/utils.d.ts +9 -9
  54. package/dist/lib/utils/utils.js +46 -46
  55. package/dist/lib/utils/utils.js.map +1 -1
  56. package/dist/lib/views/adv_search_view.d.ts +95 -95
  57. package/dist/lib/views/adv_search_view.js +712 -710
  58. package/dist/lib/views/adv_search_view.js.map +1 -1
  59. package/dist/lib/views/data_filter_view.d.ts +17 -17
  60. package/dist/lib/views/data_filter_view.js +79 -77
  61. package/dist/lib/views/data_filter_view.js.map +1 -1
  62. package/dist/lib/views/html_data_filter_view.d.ts +19 -19
  63. package/dist/lib/views/html_data_filter_view.js +44 -42
  64. package/dist/lib/views/html_data_filter_view.js.map +1 -1
  65. package/dist/lib/views/report_view.d.ts +173 -173
  66. package/dist/lib/views/report_view.js +733 -731
  67. package/dist/lib/views/report_view.js.map +1 -1
  68. package/dist/lib/views/view.d.ts +149 -149
  69. package/dist/lib/views/view.js +538 -538
  70. package/dist/lib/views/view.js.map +1 -1
  71. package/dist/lib/views/view_options.d.ts +113 -113
  72. package/dist/lib/views/view_options.js +1 -0
  73. package/dist/lib/widgets/aggregation_bar.d.ts +30 -30
  74. package/dist/lib/widgets/aggregation_bar.js +145 -143
  75. package/dist/lib/widgets/aggregation_bar.js.map +1 -1
  76. package/dist/lib/widgets/charts/chart_type.d.ts +14 -14
  77. package/dist/lib/widgets/charts/chart_type.js +15 -15
  78. package/dist/lib/widgets/charts/chart_widget.d.ts +92 -92
  79. package/dist/lib/widgets/charts/chart_widget.js +384 -382
  80. package/dist/lib/widgets/charts/chart_widget.js.map +1 -1
  81. package/dist/lib/widgets/charts/chart_widget_chartjs.d.ts +23 -23
  82. package/dist/lib/widgets/charts/chart_widget_chartjs.js +186 -184
  83. package/dist/lib/widgets/charts/chart_widget_chartjs.js.map +1 -1
  84. package/dist/lib/widgets/charts/chart_widget_google.d.ts +23 -23
  85. package/dist/lib/widgets/charts/chart_widget_google.js +165 -163
  86. package/dist/lib/widgets/charts/chart_widget_google.js.map +1 -1
  87. package/dist/lib/widgets/columns_bar.d.ts +64 -64
  88. package/dist/lib/widgets/columns_bar.js +722 -721
  89. package/dist/lib/widgets/columns_bar.js.map +1 -1
  90. package/dist/lib/widgets/columns_panel.d.ts +64 -62
  91. package/dist/lib/widgets/columns_panel.js +739 -721
  92. package/dist/lib/widgets/columns_panel.js.map +1 -1
  93. package/dist/lib/widgets/easy_grid_widget.d.ts +38 -38
  94. package/dist/lib/widgets/easy_grid_widget.js +229 -227
  95. package/dist/lib/widgets/easy_grid_widget.js.map +1 -1
  96. package/dist/lib/widgets/entities_panel.d.ts +49 -49
  97. package/dist/lib/widgets/entities_panel.js +627 -625
  98. package/dist/lib/widgets/entities_panel.js.map +1 -1
  99. package/dist/lib/widgets/eq_result_html_grid.d.ts +32 -32
  100. package/dist/lib/widgets/eq_result_html_grid.js +185 -183
  101. package/dist/lib/widgets/eq_result_html_grid.js.map +1 -1
  102. package/dist/lib/widgets/export_widget.d.ts +10 -10
  103. package/dist/lib/widgets/export_widget.js +57 -55
  104. package/dist/lib/widgets/export_widget.js.map +1 -1
  105. package/dist/lib/widgets/facet_container.d.ts +12 -12
  106. package/dist/lib/widgets/facet_container.js +53 -51
  107. package/dist/lib/widgets/facet_container.js.map +1 -1
  108. package/dist/lib/widgets/filter_bar.d.ts +38 -38
  109. package/dist/lib/widgets/filter_bar.js +259 -257
  110. package/dist/lib/widgets/filter_bar.js.map +1 -1
  111. package/dist/lib/widgets/grid.d.ts +35 -35
  112. package/dist/lib/widgets/grid.js +79 -77
  113. package/dist/lib/widgets/grid.js.map +1 -1
  114. package/dist/lib/widgets/html_content_widget.d.ts +35 -35
  115. package/dist/lib/widgets/html_content_widget.js +71 -69
  116. package/dist/lib/widgets/html_content_widget.js.map +1 -1
  117. package/dist/lib/widgets/locale_widget.d.ts +16 -16
  118. package/dist/lib/widgets/locale_widget.js +79 -77
  119. package/dist/lib/widgets/locale_widget.js.map +1 -1
  120. package/dist/lib/widgets/manage_drilldown_widget.d.ts +18 -18
  121. package/dist/lib/widgets/manage_drilldown_widget.js +154 -152
  122. package/dist/lib/widgets/manage_drilldown_widget.js.map +1 -1
  123. package/dist/lib/widgets/process_widget.d.ts +21 -21
  124. package/dist/lib/widgets/process_widget.js +50 -48
  125. package/dist/lib/widgets/process_widget.js.map +1 -1
  126. package/dist/lib/widgets/query_panel.d.ts +62 -58
  127. package/dist/lib/widgets/query_panel.js +675 -653
  128. package/dist/lib/widgets/query_panel.js.map +1 -1
  129. package/dist/lib/widgets/queryname_widget.d.ts +27 -27
  130. package/dist/lib/widgets/queryname_widget.js +109 -107
  131. package/dist/lib/widgets/queryname_widget.js.map +1 -1
  132. package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.d.ts +54 -54
  133. package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.js +429 -429
  134. package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.js.map +1 -1
  135. package/dist/lib/widgets/renderers/base_element_renderer.d.ts +15 -15
  136. package/dist/lib/widgets/renderers/base_element_renderer.js +63 -63
  137. package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.d.ts +11 -11
  138. package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.js +62 -60
  139. package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer.js.map +1 -1
  140. package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.d.ts +53 -53
  141. package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.js +550 -550
  142. package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.js.map +1 -1
  143. package/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.d.ts +9 -9
  144. package/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.js +79 -77
  145. package/dist/lib/widgets/renderers/columnsbar/simple_column_renderer.js.map +1 -1
  146. package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.d.ts +17 -17
  147. package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.js +180 -178
  148. package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer.js.map +1 -1
  149. package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.d.ts +72 -72
  150. package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.js +819 -817
  151. package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.js.map +1 -1
  152. package/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.d.ts +22 -18
  153. package/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.js +245 -214
  154. package/dist/lib/widgets/renderers/columnspanel/customsql_column_renderer.js.map +1 -1
  155. package/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.d.ts +13 -13
  156. package/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.js +180 -178
  157. package/dist/lib/widgets/renderers/columnspanel/simple_column_renderer.js.map +1 -1
  158. package/dist/lib/widgets/renderers/dropdown_renderer.d.ts +9 -9
  159. package/dist/lib/widgets/renderers/dropdown_renderer.js +42 -40
  160. package/dist/lib/widgets/renderers/dropdown_renderer.js.map +1 -1
  161. package/dist/lib/widgets/renderers/querypanel/addrow_renderer.d.ts +16 -16
  162. package/dist/lib/widgets/renderers/querypanel/addrow_renderer.js +87 -85
  163. package/dist/lib/widgets/renderers/querypanel/addrow_renderer.js.map +1 -1
  164. package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.d.ts +14 -14
  165. package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.js +71 -69
  166. package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.js.map +1 -1
  167. package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.d.ts +7 -7
  168. package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.js +41 -39
  169. package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.js.map +1 -1
  170. package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.d.ts +27 -27
  171. package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.js +231 -229
  172. package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.js.map +1 -1
  173. package/dist/lib/widgets/renderers/querypanel/condition_renderer.d.ts +48 -48
  174. package/dist/lib/widgets/renderers/querypanel/condition_renderer.js +509 -507
  175. package/dist/lib/widgets/renderers/querypanel/condition_renderer.js.map +1 -1
  176. package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.d.ts +13 -13
  177. package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.js +108 -106
  178. package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.js.map +1 -1
  179. package/dist/lib/widgets/renderers/querypanel/expression_renderer.d.ts +28 -28
  180. package/dist/lib/widgets/renderers/querypanel/expression_renderer.js +91 -89
  181. package/dist/lib/widgets/renderers/querypanel/expression_renderer.js.map +1 -1
  182. package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.d.ts +14 -14
  183. package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.js +165 -163
  184. package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.js.map +1 -1
  185. package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.d.ts +35 -35
  186. package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.js +317 -315
  187. package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.js.map +1 -1
  188. package/dist/lib/widgets/renderers/querypanel/operator_renderer.d.ts +19 -19
  189. package/dist/lib/widgets/renderers/querypanel/operator_renderer.js +95 -93
  190. package/dist/lib/widgets/renderers/querypanel/operator_renderer.js.map +1 -1
  191. package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.d.ts +27 -27
  192. package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.js +237 -235
  193. package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.js.map +1 -1
  194. package/dist/lib/widgets/renderers/querypanel/text_renderer.d.ts +11 -11
  195. package/dist/lib/widgets/renderers/querypanel/text_renderer.js +36 -36
  196. package/dist/lib/widgets/renderers/querypanel/text_renderer.js.map +1 -1
  197. package/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.d.ts +26 -26
  198. package/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.js +163 -163
  199. package/dist/lib/widgets/renderers/sortingbar/column_renderer_sp.js.map +1 -1
  200. package/dist/lib/widgets/result_facets_panel.d.ts +64 -64
  201. package/dist/lib/widgets/result_facets_panel.js +503 -501
  202. package/dist/lib/widgets/result_facets_panel.js.map +1 -1
  203. package/dist/lib/widgets/sorting_bar.d.ts +34 -34
  204. package/dist/lib/widgets/sorting_bar.js +330 -328
  205. package/dist/lib/widgets/sorting_bar.js.map +1 -1
  206. package/dist/lib/widgets/statement_panel.d.ts +21 -21
  207. package/dist/lib/widgets/statement_panel.js +60 -58
  208. package/dist/lib/widgets/statement_panel.js.map +1 -1
  209. package/dist/lib/widgets/widget_options.d.ts +433 -429
  210. package/dist/lib/widgets/widget_options.js +1 -0
  211. package/package.json +25 -25
  212. package/webpack.config.js +31 -24
  213. package/dist/browser/eq.community.min.css.map +0 -1
  214. package/dist/browser/eq.view.min.css.map +0 -1
@@ -1,654 +1,676 @@
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 { DataType, utils as dataUtils } from '@easydata/core';
16
- import { Widget, WidgetGroup, eqconsts, CondTag, EqValueEditor, EqEditorTag, DataKind, QueryChangePart, QueryChangeAction, ConditionPart } from '@easyquery/core';
17
- import { domel } from '@easydata/ui';
18
- import { eqDragManager, DropEffect } from '@easydata/ui';
19
- import { QPEditablePart } from '../types/qp_editable_part';
20
- import { PopupMenu } from '../utils/popup_menu';
21
- import { SimpleConditionRenderer } from './renderers/querypanel/condition_renderer';
22
- import { ConditionGroupRenderer } from './renderers/querypanel/condition_group_renderer';
23
- import { InputExpressionRenderer } from './renderers/querypanel/input_expression_renderer';
24
- import { AttributeExpressionRenderer } from './renderers/querypanel/attribute_expression_renderer';
25
- import { AddRowRenderer } from './renderers/querypanel/addrow_renderer';
26
- import { ListExpressionRenderer, SqlListExpressionRenderer, CustomListExpressionRenderer } from './renderers/querypanel/list_expression_renderer';
27
- import { OperatorRenderer } from './renderers/querypanel/operator_renderer';
28
- import { DateTimeExpressionRenderer } from './renderers/querypanel/datetime_expression_render';
29
- import { SubQueryExpressionRenderer } from './renderers/querypanel/subquery_expression_renderer';
30
- import { eqCssPrefix, eqCssMobile, safeFocus } from '../utils/utils';
31
- import { browserUtils } from '../utils/browser_utils';
32
- import { BindToParentColumnExpressionRenderer } from './renderers/querypanel/bind_to_parent_column_expression_renderer';
33
- /**
34
- * The query panel wiget, implemented without JQuery.
35
- */
36
- var QueryPanel = /** @class */ (function (_super) {
37
- __extends(QueryPanel, _super);
38
- /**
39
- * The default constructor.
40
- * @param slot The html element.
41
- */
42
- function QueryPanel(slot, customQuery) {
43
- var _this = _super.call(this, slot) || this;
44
- _this.options = {
45
- editableParts: QPEditablePart.All,
46
- isSubQuery: false,
47
- activeCondition: null,
48
- entitiesPopupHandler: null,
49
- entitiesListFilter: null,
50
- menuContainer: document.body,
51
- showRootRow: true,
52
- showAddRow: true,
53
- showCheckboxes: false,
54
- allowParameterization: false,
55
- allowInJoinConditions: false,
56
- showPoweredBy: false,
57
- buttons: {
58
- condition: null,
59
- group: null
60
- },
61
- alwaysShowButtonsInGroups: false,
62
- alwaysShowButtonsInConditions: false,
63
- showConjunctions: true,
64
- accentActiveCondition: true,
65
- activateRootOnStart: true,
66
- yearRange: 'c-10:c+10',
67
- oneClickDateSelection: true,
68
- showDateTimeInput: false,
69
- attrElementFormat: '{entity} {attr}',
70
- menuOptions: {
71
- showSearchBoxAfter: 30,
72
- searchBoxAutoFocus: true,
73
- activateOnMouseOver: true,
74
- itemRenderedCallback: null
75
- },
76
- allowDragDrop: true,
77
- attrPlacement: 0,
78
- sortEntities: false,
79
- subQueryDialogWidth: 600,
80
- subQueryDialogHeight: 300,
81
- dialogZIndex: 100000,
82
- numberListSeparators: [',', ';'],
83
- autoEditNewCondition: false,
84
- onConditionRendered: null,
85
- onGetConditionRenderer: null,
86
- onGetExpressionRenderer: null,
87
- onGetOperatorRenderer: null,
88
- onOperatorRendered: null,
89
- onGetAddRowRenderer: null,
90
- defaultQuery: null
91
- };
92
- _this.customQuery = null;
93
- _this.landingSlot = domel('div')
94
- .addClass(_this.cssPrefix + "-cond-landing-slot")
95
- .addChildElement(domel('div')
96
- .toDOM())
97
- .toDOM();
98
- if (!_this.slot.classList.contains(_this.cssPrefix + "-panel")) {
99
- _this.slot.classList.add(_this.cssPrefix + "-panel");
100
- }
101
- _this.group = WidgetGroup.Query;
102
- if (customQuery) {
103
- _this.customQuery = customQuery;
104
- }
105
- return _this;
106
- }
107
- Object.defineProperty(QueryPanel.prototype, "cssPrefix", {
108
- get: function () {
109
- return 'eqjs-qp';
110
- },
111
- enumerable: true,
112
- configurable: true
113
- });
114
- QueryPanel.prototype.getWidgetType = function () {
115
- return 'queryPanel';
116
- };
117
- /**
118
- * Initialize widget.
119
- * @param context The context.
120
- * @param options The options.
121
- */
122
- QueryPanel.prototype.init = function (context, options) {
123
- var _this = this;
124
- _super.prototype.init.call(this, context, options);
125
- this.setOptions(options);
126
- //detach previously defined query observer (if any)
127
- this.detachQueryObserver();
128
- this.attachQueryObserver();
129
- eqDragManager.removeDropContainer(this.slot);
130
- if (this.options.allowDragDrop) {
131
- var model_1 = this.getContext().getModel();
132
- eqDragManager.registerDropContainer({
133
- element: this.slot,
134
- scopes: ["entityAttr"],
135
- onDragEnter: function (container, ev) {
136
- _this.slot.classList.add(eqCssPrefix + "-drophover");
137
- ev.dragImage.classList.add('eqjs-sortable-helper');
138
- _this.showLandingSlot();
139
- var attrId = ev.data.attrId;
140
- if (!model_1.checkAttrProperty(attrId, "useInConditions")) {
141
- ev.dropEffect = DropEffect.Forbid;
142
- }
143
- },
144
- onDragOver: function (container, ev) {
145
- },
146
- onDragLeave: function (container, ev) {
147
- ev.dragImage.classList.remove('eqjs-sortable-helper');
148
- ev.dragImage.style.removeProperty('width');
149
- _this.slot.classList.remove(eqCssPrefix + "-drophover");
150
- _this.hideLangindSlot();
151
- },
152
- onDrop: function (container, ev) {
153
- var query = _this.getQuery();
154
- var descr = {
155
- parent: query.getRootCondition(),
156
- attributeId: ev.data.attrId
157
- };
158
- var cond = query.addSimpleCondition(descr);
159
- if (cond) {
160
- query.fireConditionsChangedEvent(QueryChangeAction.Add, cond);
161
- }
162
- }
163
- });
164
- }
165
- };
166
- QueryPanel.prototype.destroyCore = function () {
167
- eqDragManager.removeDropContainer(this.slot);
168
- this.detachQueryObserver();
169
- this.slot.innerHTML = '';
170
- };
171
- QueryPanel.prototype.getEntitiesMenu = function () {
172
- return this.entitiesMenu;
173
- };
174
- QueryPanel.prototype.getConditionMenu = function () {
175
- return this.conditionMenu;
176
- };
177
- QueryPanel.prototype.getLinkTypeMenu = function () {
178
- return this.linkTypeMenu;
179
- };
180
- QueryPanel.prototype.getConditionGroupMenu = function (isRoot) {
181
- if (isRoot === void 0) { isRoot = false; }
182
- return isRoot ? this.rootGroupMenu : this.groupMenu;
183
- };
184
- QueryPanel.prototype.attachQueryObserver = function () {
185
- var _this = this;
186
- var query = this.getQuery();
187
- this.queryEventCallbackId = query.addChangedCallback(function (event) {
188
- //if something has changed, and that change is related to conditions
189
- var edata = event.data;
190
- if (!edata || (edata.part != QueryChangePart.Conditions && edata.part != QueryChangePart.All)) {
191
- return;
192
- }
193
- var focusedBefore = document.activeElement;
194
- var isFocusInside = _this.slot.contains(focusedBefore) || focusedBefore == document.body;
195
- switch (edata.action) {
196
- case QueryChangeAction.Modify: {
197
- var conds = edata.changee;
198
- var modifyCondition_1 = function (cond, autoEdit) {
199
- var el = _this.slot.querySelector("div[data-id=" + cond.id + "]");
200
- if (el) {
201
- autoEdit = autoEdit
202
- && ((edata.condPart & ConditionPart.Operator) === ConditionPart.Operator)
203
- && cond.expressions.length > 1
204
- && (cond.expressions[1]._isDefaultValue || cond.expressions[1].value == '' ||
205
- cond.expressions[1].value == null);
206
- var isActive = el.classList.contains('active');
207
- var renderer = _this.getConditionRenderer(cond, el);
208
- if (renderer) {
209
- var newEl = renderer.render(autoEdit);
210
- if (isActive) {
211
- _this.toggleConditionPicked(cond);
212
- }
213
- if (isFocusInside && !autoEdit) {
214
- var focusElem = newEl.querySelector('a') || newEl.querySelector('.eqjs-qp-condition-button');
215
- if (focusElem) {
216
- safeFocus(focusElem);
217
- }
218
- }
219
- }
220
- }
221
- };
222
- var autoEdit_1 = _this.options.autoEditNewCondition;
223
- if (Array.isArray(conds)) {
224
- conds.forEach(function (cond) { return modifyCondition_1(cond, autoEdit_1); });
225
- autoEdit_1 = false;
226
- }
227
- else {
228
- modifyCondition_1(conds, autoEdit_1);
229
- }
230
- break;
231
- }
232
- case QueryChangeAction.Add: {
233
- var conds = edata.changee;
234
- var addCondition_1 = function (cond) {
235
- var renderer = _this.getConditionRenderer(cond);
236
- if (renderer) {
237
- var parent_1 = cond.getParent();
238
- var parentEl = _this.slot.querySelector("div[data-id=" + parent_1.id + "]");
239
- if (parentEl) {
240
- var newCondContainer = parentEl.lastChild;
241
- if (newCondContainer) {
242
- var el = renderer.render(_this.options.autoEditNewCondition);
243
- newCondContainer.appendChild(el);
244
- el.scrollIntoView(false);
245
- if (isFocusInside && !_this.options.autoEditNewCondition) {
246
- el.querySelector("a").focus();
247
- }
248
- }
249
- }
250
- }
251
- };
252
- if (Array.isArray(conds)) {
253
- conds.forEach(function (cond) { return addCondition_1(cond); });
254
- }
255
- else {
256
- addCondition_1(conds);
257
- }
258
- break;
259
- }
260
- case QueryChangeAction.Delete: {
261
- var conds = edata.changee;
262
- var deleteCondition_1 = function (cond) {
263
- var el = _this.slot.querySelector("div[data-id=" + cond.id + "]");
264
- if (el) {
265
- var parent_2 = _this.slot.querySelector("div[data-id=" + cond.getParent().id + "] > .eqjs-qp-row-group");
266
- ;
267
- var next = el.nextSibling;
268
- var prev = el.previousSibling;
269
- el.parentElement.removeChild(el);
270
- if (isFocusInside) {
271
- var focusCond = next || prev || parent_2;
272
- var focusElem = focusCond.querySelector('a') || focusCond.querySelector('.eqjs-qp-condition-button');
273
- if (focusElem) {
274
- focusElem.focus();
275
- }
276
- }
277
- }
278
- };
279
- if (Array.isArray(conds)) {
280
- conds.forEach(function (cond) { return deleteCondition_1(cond); });
281
- }
282
- else {
283
- deleteCondition_1(conds);
284
- }
285
- break;
286
- }
287
- default:
288
- _this.refresh();
289
- break;
290
- }
291
- });
292
- };
293
- QueryPanel.prototype.detachQueryObserver = function () {
294
- if (this.queryEventCallbackId) {
295
- var query = this.getQuery();
296
- query.removeChangedCallback(this.queryEventCallbackId);
297
- }
298
- };
299
- QueryPanel.prototype.getQuery = function () {
300
- if (this.customQuery) {
301
- return this.customQuery;
302
- }
303
- return this.context.getQuery();
304
- };
305
- QueryPanel.prototype.refreshCore = function () {
306
- this.clear();
307
- this.render();
308
- };
309
- QueryPanel.prototype.setOptions = function (options) {
310
- dataUtils.assignDeep(this.options, options);
311
- // dateFormatValue & dateFormatDisplay back compatibility
312
- if (this.options.dateFormatValue) {
313
- i18n.updateLocaleSettings({
314
- editDateFormat: this.options.dateFormatValue
315
- });
316
- }
317
- if (this.options.dateFormatDisplay) {
318
- i18n.updateLocaleSettings({
319
- shortDateFormat: this.options.dateFormatDisplay
320
- });
321
- }
322
- if (typeof this.options.editableParts === "undefined") {
323
- this.options.editableParts = QPEditablePart.All;
324
- }
325
- if (browserUtils.isMobileMode()) {
326
- this.options.buttons = this.options.buttons || {};
327
- this.options.buttons.condition = ["menu"];
328
- this.options.buttons.group = ["menu"];
329
- }
330
- };
331
- QueryPanel.prototype.clear = function () {
332
- this.slot.innerHTML = "";
333
- };
334
- QueryPanel.prototype.render = function () {
335
- try {
336
- this.entitiesMenu = this.createEntitiesMenu();
337
- this.createConditionMenus();
338
- this.createLinkTypeMenu();
339
- this.rootContainer = domel('div', this.slot)
340
- .toDOM();
341
- domel(this.slot)
342
- .removeClass(eqCssMobile)
343
- .addClass(browserUtils.getMobileCssClass());
344
- var query = this.getQuery();
345
- var root = query.getRootCondition();
346
- var renderer = this.getConditionRenderer(root, this.rootContainer);
347
- if (renderer) {
348
- renderer.render();
349
- }
350
- if (this.options.showAddRow) {
351
- this.addRowElement = domel('div', this.slot)
352
- .toDOM();
353
- var addrowRenderer = this.getAddRowRenderer(this.addRowElement);
354
- if (addrowRenderer)
355
- addrowRenderer.render();
356
- }
357
- }
358
- catch (err) {
359
- var error = err;
360
- this.context.throwError({
361
- action: "QueryPanel rendering",
362
- text: error.message,
363
- sourceError: error
364
- });
365
- }
366
- };
367
- QueryPanel.prototype.getConditionRenderer = function (condition, slot) {
368
- var renderer;
369
- if (this.options.onGetConditionRenderer) {
370
- renderer = this.options.onGetConditionRenderer(condition, slot);
371
- if (renderer) {
372
- return renderer;
373
- }
374
- }
375
- switch (condition.tag) {
376
- case CondTag.Simple:
377
- return new SimpleConditionRenderer(this, condition, slot);
378
- case CondTag.Group:
379
- return new ConditionGroupRenderer(this, condition, slot);
380
- }
381
- return null;
382
- };
383
- QueryPanel.prototype.getExpressionRenderer = function (expression, slot) {
384
- if (!expression) {
385
- throw 'Expression is not defined in the condition';
386
- }
387
- var model = this.getContext().getModel();
388
- var condition = expression.getParent();
389
- var operator = model.getOperatorById(condition.getOperatorId());
390
- var attribute = model.getAttributeByIdSafe(condition.expressions[0].value);
391
- var operand = model.getOperand(attribute, operator, expression.getIndex());
392
- var editor;
393
- var tag;
394
- if (operand && operand.editor && operand.editor.tag !== EqEditorTag.Unknown) {
395
- editor = operand.editor;
396
- }
397
- else if (attribute && attribute.defaultEditor) {
398
- editor = attribute.defaultEditor;
399
- }
400
- else {
401
- editor = new EqValueEditor();
402
- }
403
- tag = editor.tag;
404
- var exprType = expression.dataType;
405
- if (exprType == DataType.Unknown) {
406
- exprType = attribute.dataType;
407
- }
408
- if (expression.kind === DataKind.Attribute) {
409
- if (expression.getIndex() === 0) { // Base attribute expression
410
- return new AttributeExpressionRenderer(this, expression, this.entitiesMenu, slot);
411
- }
412
- else {
413
- var attributeMenu = this.createEntitiesMenu(function (ent, attr) {
414
- if (attr) {
415
- return attr.useInConditions && attr.dataType === exprType;
416
- }
417
- return true;
418
- });
419
- return new AttributeExpressionRenderer(this, expression, attributeMenu, slot);
420
- }
421
- }
422
- else if (expression.kind === DataKind.Query) {
423
- tag = EqEditorTag.SubQuery;
424
- }
425
- else if (expression.kind === DataKind.Scalar) {
426
- if (tag == EqEditorTag.Unknown && (expression.dataType === DataType.Date
427
- || expression.dataType === DataType.DateTime || expression.dataType === DataType.Time)) {
428
- tag = EqEditorTag.DateTime;
429
- }
430
- }
431
- else if (expression.kind == DataKind.ParentColumn) {
432
- tag = EqEditorTag.BindToParentColumn;
433
- }
434
- if (this.options.onGetExpressionRenderer) {
435
- var renderer = this.options.onGetExpressionRenderer(this, expression, editor, slot);
436
- if (renderer) {
437
- return renderer;
438
- }
439
- }
440
- switch (tag) {
441
- case EqEditorTag.List:
442
- return new ListExpressionRenderer(this, expression, editor, slot);
443
- case EqEditorTag.SqlList:
444
- return new SqlListExpressionRenderer(this, expression, editor, slot);
445
- case EqEditorTag.CustomList:
446
- return new CustomListExpressionRenderer(this, expression, editor, slot);
447
- case EqEditorTag.DateTime:
448
- return new DateTimeExpressionRenderer(this, expression, editor, slot);
449
- case EqEditorTag.SubQuery:
450
- return new SubQueryExpressionRenderer(this, expression, editor, slot);
451
- //move to ERS later
452
- case EqEditorTag.BindToParentColumn:
453
- return new BindToParentColumnExpressionRenderer(this, expression, editor, slot);
454
- default:
455
- return new InputExpressionRenderer(this, expression, editor, slot);
456
- }
457
- };
458
- QueryPanel.prototype.getOperatorRenderer = function (condition, text, slot) {
459
- var renderer;
460
- if (this.options.onGetOperatorRenderer)
461
- renderer = this.options.onGetOperatorRenderer(condition, text, slot);
462
- if (renderer)
463
- return renderer;
464
- return new OperatorRenderer(this, condition, text, slot);
465
- };
466
- QueryPanel.prototype.getAddRowRenderer = function (slot) {
467
- var renderer;
468
- if (this.options.onGetAddRowRenderer)
469
- renderer = this.options.onGetAddRowRenderer(slot);
470
- if (renderer)
471
- return renderer;
472
- return new AddRowRenderer(this, this.entitiesMenu, slot);
473
- };
474
- QueryPanel.prototype.createEntitiesMenu = function (filterFunc) {
475
- var model = this.getContext().getModel();
476
- if (!model || model.isEmpty())
477
- return null;
478
- var menuId = this.slot.id || "eq-querypanel";
479
- menuId += '-EntitiesMenu';
480
- var entitiesList = model.getEntitiesTree({
481
- addUIC: true,
482
- addUIR: false,
483
- addUIS: false,
484
- attrPlacement: this.options.attrPlacement,
485
- sortEntities: this.options.sortEntities
486
- }, filterFunc);
487
- var options = {
488
- items: entitiesList,
489
- adjustHeight: this.options.adjustEntitiesMenuHeight,
490
- id: menuId,
491
- domWriteItemsId: this.options.domWriteItemsId
492
- };
493
- dataUtils.assign(options, this.options.menuOptions);
494
- return new PopupMenu(options);
495
- };
496
- QueryPanel.prototype.showEntitiesMenu = function (options) {
497
- this.entitiesMenu.showMenu(options);
498
- };
499
- QueryPanel.prototype.createConditionMenus = function () {
500
- //ConditionMenu
501
- {
502
- var query = this.getQuery();
503
- var menuId = this.slot.id || "eq-querypanel";
504
- menuId += '-ConditionMenu';
505
- var items = [
506
- {
507
- id: "enable",
508
- text: i18n.getText('MenuEnable')
509
- },
510
- {
511
- id: "delete",
512
- text: i18n.getText('CmdDelete')
513
- }
514
- ];
515
- if (query.isEx()) {
516
- if (this.options.allowParameterization || this.options.allowInJoinConditions) {
517
- items.push({ id: "delimiter", text: "---" });
518
- }
519
- ;
520
- if (this.options.allowParameterization) {
521
- items.push({
522
- id: "param",
523
- text: i18n.getText('MenuParameterization')
524
- });
525
- }
526
- ;
527
- if (this.options.allowInJoinConditions) {
528
- items.push({
529
- id: "inJoin",
530
- text: i18n.getText('MenuJoinCond')
531
- });
532
- }
533
- ;
534
- }
535
- var options = { items: items, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId, showSearchBoxAfter: 100, showSelected: true };
536
- dataUtils.assign(options, this.options.menuOptions);
537
- this.conditionMenu = new PopupMenu(options);
538
- }
539
- //groupMenu
540
- {
541
- var menuId = this.slot.id || "eq-querypanel";
542
- menuId += '-GroupMenu';
543
- var items = [
544
- {
545
- id: "enable",
546
- text: i18n.getText('MenuEnable')
547
- },
548
- {
549
- id: "delete",
550
- text: i18n.getText('CmdDelete')
551
- },
552
- {
553
- id: "delimiter",
554
- text: "---"
555
- },
556
- {
557
- id: "addCondition",
558
- text: i18n.getText('CmdAddCondition')
559
- },
560
- {
561
- id: "addGroup",
562
- text: i18n.getText('CmdAddCondGroup')
563
- }
564
- ];
565
- var options = { items: items, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId, showSearchBoxAfter: 100, showSelected: true };
566
- dataUtils.assign(options, this.options.menuOptions);
567
- this.groupMenu = new PopupMenu(options);
568
- }
569
- //rootGroupMenu
570
- {
571
- var menuId = this.slot.id || "eq-querypanel";
572
- menuId += '-RootGroupMenu';
573
- var items = [
574
- {
575
- id: "addCondition",
576
- text: i18n.getText('CmdAddCondition')
577
- },
578
- {
579
- id: "addGroup",
580
- text: i18n.getText('CmdAddCondGroup')
581
- }
582
- ];
583
- var options = { items: items, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId, showSearchBoxAfter: 100, showSelected: true };
584
- dataUtils.assign(options, this.options.menuOptions);
585
- this.rootGroupMenu = new PopupMenu(options);
586
- }
587
- };
588
- QueryPanel.prototype.createLinkTypeMenu = function () {
589
- var menuId = this.slot.id;
590
- if (menuId) {
591
- menuId += '-LinkTypeMenu';
592
- }
593
- var typeList = eqconsts.predicateLinkTypeList;
594
- var itemList = typeList.map(function (item) {
595
- return {
596
- id: item.id,
597
- text: i18n.getText(item.key)
598
- };
599
- });
600
- var options = { items: itemList, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId };
601
- dataUtils.assign(options, this.options.menuOptions);
602
- this.linkTypeMenu = new PopupMenu(options);
603
- };
604
- QueryPanel.prototype.toggleConditionPicked = function (condition, force) {
605
- if (force === void 0) { force = undefined; }
606
- var el;
607
- var isActive;
608
- if (condition) {
609
- el = this.slot.querySelector("div[data-id=" + condition.id + "][data-condrow], div[data-id=" + condition.id + "] > div[data-group-row]");
610
- if (el) {
611
- isActive = el.classList.contains('active');
612
- }
613
- }
614
- //clear 'active' in all rows
615
- var rows = this.slot.querySelectorAll("." + this.cssPrefix + "-row");
616
- for (var i = 0; i < rows.length; i++) {
617
- var row = rows[i];
618
- if (row.hasAttribute('data-group-row')) {
619
- if (!this.options.alwaysShowButtonsInGroups) {
620
- domel(row)
621
- .data("show-buttons", null);
622
- }
623
- }
624
- else {
625
- if (!this.options.alwaysShowButtonsInConditions) {
626
- domel(row)
627
- .data("show-buttons", null);
628
- }
629
- }
630
- domel(row)
631
- .removeClass('active');
632
- }
633
- if (el && !isActive) {
634
- domel(el)
635
- .addClass('active')
636
- .data("show-buttons", "");
637
- }
638
- };
639
- QueryPanel.prototype.showLandingSlot = function () {
640
- var container = this.slot.querySelector('.eqjs-qp-conditions-root');
641
- if (container) {
642
- container.appendChild(this.landingSlot);
643
- this.landingSlot.scrollIntoView({ block: "center", behavior: "smooth" });
644
- }
645
- };
646
- QueryPanel.prototype.hideLangindSlot = function () {
647
- if (this.landingSlot.parentElement) {
648
- this.landingSlot.parentElement.removeChild(this.landingSlot);
649
- }
650
- };
651
- return QueryPanel;
652
- }(Widget));
653
- export { QueryPanel };
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 { DataType, utils as dataUtils } from '@easydata/core';
18
+ import { Widget, WidgetGroup, eqconsts, CondTag, EqValueEditor, EqEditorTag, DataKind, QueryChangePart, QueryChangeAction, ConditionPart } from '@easyquery/core';
19
+ import { domel } from '@easydata/ui';
20
+ import { eqDragManager, DropEffect } from '@easydata/ui';
21
+ import { QPEditablePart } from '../types/qp_editable_part';
22
+ import { PopupMenu } from '../utils/popup_menu';
23
+ import { SimpleConditionRenderer } from './renderers/querypanel/condition_renderer';
24
+ import { ConditionGroupRenderer } from './renderers/querypanel/condition_group_renderer';
25
+ import { InputExpressionRenderer } from './renderers/querypanel/input_expression_renderer';
26
+ import { AttributeExpressionRenderer } from './renderers/querypanel/attribute_expression_renderer';
27
+ import { AddRowRenderer } from './renderers/querypanel/addrow_renderer';
28
+ import { ListExpressionRenderer, SqlListExpressionRenderer, CustomListExpressionRenderer } from './renderers/querypanel/list_expression_renderer';
29
+ import { OperatorRenderer } from './renderers/querypanel/operator_renderer';
30
+ import { DateTimeExpressionRenderer } from './renderers/querypanel/datetime_expression_render';
31
+ import { SubQueryExpressionRenderer } from './renderers/querypanel/subquery_expression_renderer';
32
+ import { eqCssPrefix, eqCssMobile, safeFocus } from '../utils/utils';
33
+ import { browserUtils } from '../utils/browser_utils';
34
+ import { BindToParentColumnExpressionRenderer } from './renderers/querypanel/bind_to_parent_column_expression_renderer';
35
+ /**
36
+ * The query panel wiget, implemented without JQuery.
37
+ */
38
+ var QueryPanel = /** @class */ (function (_super) {
39
+ __extends(QueryPanel, _super);
40
+ /**
41
+ * The default constructor.
42
+ * @param slot The html element.
43
+ */
44
+ function QueryPanel(slot, customQuery) {
45
+ var _this = _super.call(this, slot) || this;
46
+ _this.options = {
47
+ editableParts: QPEditablePart.All,
48
+ isSubQuery: false,
49
+ activeCondition: null,
50
+ entitiesPopupHandler: null,
51
+ entitiesListFilter: null,
52
+ menuContainer: document.body,
53
+ showRootRow: true,
54
+ showAddRow: true,
55
+ showCheckboxes: false,
56
+ allowParameterization: false,
57
+ allowInJoinConditions: false,
58
+ showPoweredBy: false,
59
+ buttons: {
60
+ condition: null,
61
+ group: null
62
+ },
63
+ alwaysShowButtonsInGroups: false,
64
+ alwaysShowButtonsInConditions: false,
65
+ showConjunctions: true,
66
+ accentActiveCondition: true,
67
+ activateRootOnStart: true,
68
+ yearRange: 'c-10:c+10',
69
+ oneClickDateSelection: true,
70
+ showDateTimeInput: false,
71
+ attrElementFormat: '{entity} {attr}',
72
+ menuOptions: {
73
+ showSearchBoxAfter: 30,
74
+ searchBoxAutoFocus: true,
75
+ activateOnMouseOver: true,
76
+ itemRenderedCallback: null
77
+ },
78
+ allowDragDrop: true,
79
+ attrPlacement: 0,
80
+ sortEntities: false,
81
+ subQueryDialogWidth: 600,
82
+ subQueryDialogHeight: 300,
83
+ dialogZIndex: 100000,
84
+ numberListSeparators: [',', ';'],
85
+ autoEditNewCondition: false,
86
+ onConditionRendered: null,
87
+ onGetConditionRenderer: null,
88
+ onGetExpressionRenderer: null,
89
+ onGetOperatorRenderer: null,
90
+ onOperatorRendered: null,
91
+ onGetAddRowRenderer: null,
92
+ defaultQuery: null,
93
+ showIndicatorOnLoad: true
94
+ };
95
+ _this.customQuery = null;
96
+ _this.landingSlot = domel('div')
97
+ .addClass("".concat(_this.cssPrefix, "-cond-landing-slot"))
98
+ .addChildElement(domel('div')
99
+ .toDOM())
100
+ .toDOM();
101
+ if (!_this.slot.classList.contains("".concat(_this.cssPrefix, "-panel"))) {
102
+ _this.slot.classList.add("".concat(_this.cssPrefix, "-panel"));
103
+ }
104
+ _this.group = WidgetGroup.Query;
105
+ if (customQuery) {
106
+ _this.customQuery = customQuery;
107
+ }
108
+ return _this;
109
+ }
110
+ Object.defineProperty(QueryPanel.prototype, "cssPrefix", {
111
+ get: function () {
112
+ return 'eqjs-qp';
113
+ },
114
+ enumerable: false,
115
+ configurable: true
116
+ });
117
+ QueryPanel.prototype.getWidgetType = function () {
118
+ return 'queryPanel';
119
+ };
120
+ /**
121
+ * Initialize widget.
122
+ * @param context The context.
123
+ * @param options The options.
124
+ */
125
+ QueryPanel.prototype.init = function (context, options) {
126
+ var _this = this;
127
+ _super.prototype.init.call(this, context, options);
128
+ this.setOptions(options);
129
+ this.renderProgressBlock();
130
+ //detach previously defined query observer (if any)
131
+ this.detachQueryObserver();
132
+ this.attachQueryObserver();
133
+ eqDragManager.removeDropContainer(this.slot);
134
+ if (this.options.allowDragDrop) {
135
+ var model_1 = this.getContext().getModel();
136
+ eqDragManager.registerDropContainer({
137
+ element: this.slot,
138
+ scopes: ["entityAttr"],
139
+ onDragEnter: function (container, ev) {
140
+ _this.slot.classList.add("".concat(eqCssPrefix, "-drophover"));
141
+ ev.dragImage.classList.add('eqjs-sortable-helper');
142
+ _this.showLandingSlot();
143
+ var attrId = ev.data.attrId;
144
+ if (!model_1.checkAttrProperty(attrId, "useInConditions")) {
145
+ ev.dropEffect = DropEffect.Forbid;
146
+ }
147
+ },
148
+ onDragOver: function (container, ev) {
149
+ },
150
+ onDragLeave: function (container, ev) {
151
+ ev.dragImage.classList.remove('eqjs-sortable-helper');
152
+ ev.dragImage.style.removeProperty('width');
153
+ _this.slot.classList.remove("".concat(eqCssPrefix, "-drophover"));
154
+ _this.hideLangindSlot();
155
+ },
156
+ onDrop: function (container, ev) {
157
+ var query = _this.getQuery();
158
+ var descr = {
159
+ parent: query.getRootCondition(),
160
+ attributeId: ev.data.attrId
161
+ };
162
+ var cond = query.addSimpleCondition(descr);
163
+ if (cond) {
164
+ query.fireConditionsChangedEvent(QueryChangeAction.Add, cond);
165
+ }
166
+ }
167
+ });
168
+ }
169
+ };
170
+ QueryPanel.prototype.destroyCore = function () {
171
+ eqDragManager.removeDropContainer(this.slot);
172
+ this.detachQueryObserver();
173
+ this.slot.innerHTML = '';
174
+ };
175
+ QueryPanel.prototype.getEntitiesMenu = function () {
176
+ return this.entitiesMenu;
177
+ };
178
+ QueryPanel.prototype.getConditionMenu = function () {
179
+ return this.conditionMenu;
180
+ };
181
+ QueryPanel.prototype.getLinkTypeMenu = function () {
182
+ return this.linkTypeMenu;
183
+ };
184
+ QueryPanel.prototype.getConditionGroupMenu = function (isRoot) {
185
+ if (isRoot === void 0) { isRoot = false; }
186
+ return isRoot ? this.rootGroupMenu : this.groupMenu;
187
+ };
188
+ QueryPanel.prototype.attachQueryObserver = function () {
189
+ var _this = this;
190
+ var query = this.getQuery();
191
+ this.queryEventCallbackId = query.addChangedCallback(function (event) {
192
+ //if something has changed, and that change is related to conditions
193
+ var edata = event.data;
194
+ if (!edata || (edata.part != QueryChangePart.Conditions && edata.part != QueryChangePart.All)) {
195
+ return;
196
+ }
197
+ var focusedBefore = document.activeElement;
198
+ var isFocusInside = _this.slot.contains(focusedBefore) || focusedBefore == document.body;
199
+ switch (edata.action) {
200
+ case QueryChangeAction.Modify: {
201
+ var conds = edata.changee;
202
+ var modifyCondition_1 = function (cond, autoEdit) {
203
+ var el = _this.slot.querySelector("div[data-id=".concat(cond.id, "]"));
204
+ if (el) {
205
+ autoEdit = autoEdit
206
+ && ((edata.condPart & ConditionPart.Operator) === ConditionPart.Operator)
207
+ && cond.expressions.length > 1
208
+ && (cond.expressions[1]._isDefaultValue || cond.expressions[1].value == '' ||
209
+ cond.expressions[1].value == null);
210
+ var isActive = el.classList.contains('active');
211
+ var renderer = _this.getConditionRenderer(cond, el);
212
+ if (renderer) {
213
+ var newEl = renderer.render(autoEdit);
214
+ if (isActive) {
215
+ _this.toggleConditionPicked(cond);
216
+ }
217
+ if (isFocusInside && !autoEdit) {
218
+ var focusElem = newEl.querySelector('a') || newEl.querySelector('.eqjs-qp-condition-button');
219
+ if (focusElem) {
220
+ safeFocus(focusElem);
221
+ }
222
+ }
223
+ }
224
+ }
225
+ };
226
+ var autoEdit_1 = _this.options.autoEditNewCondition;
227
+ if (Array.isArray(conds)) {
228
+ conds.forEach(function (cond) { return modifyCondition_1(cond, autoEdit_1); });
229
+ autoEdit_1 = false;
230
+ }
231
+ else {
232
+ modifyCondition_1(conds, autoEdit_1);
233
+ }
234
+ break;
235
+ }
236
+ case QueryChangeAction.Add: {
237
+ var conds = edata.changee;
238
+ var addCondition_1 = function (cond) {
239
+ var renderer = _this.getConditionRenderer(cond);
240
+ if (renderer) {
241
+ var parent_1 = cond.getParent();
242
+ var parentEl = _this.slot.querySelector("div[data-id=".concat(parent_1.id, "]"));
243
+ if (parentEl) {
244
+ var newCondContainer = parentEl.lastChild;
245
+ if (newCondContainer) {
246
+ var el = renderer.render(_this.options.autoEditNewCondition);
247
+ newCondContainer.appendChild(el);
248
+ el.scrollIntoView(false);
249
+ if (isFocusInside && !_this.options.autoEditNewCondition) {
250
+ el.querySelector("a").focus();
251
+ }
252
+ }
253
+ }
254
+ }
255
+ };
256
+ if (Array.isArray(conds)) {
257
+ conds.forEach(function (cond) { return addCondition_1(cond); });
258
+ }
259
+ else {
260
+ addCondition_1(conds);
261
+ }
262
+ break;
263
+ }
264
+ case QueryChangeAction.Delete: {
265
+ var conds = edata.changee;
266
+ var deleteCondition_1 = function (cond) {
267
+ var el = _this.slot.querySelector("div[data-id=".concat(cond.id, "]"));
268
+ if (el) {
269
+ var parent_2 = _this.slot.querySelector("div[data-id=".concat(cond.getParent().id, "] > .eqjs-qp-row-group"));
270
+ ;
271
+ var next = el.nextSibling;
272
+ var prev = el.previousSibling;
273
+ el.parentElement.removeChild(el);
274
+ if (isFocusInside) {
275
+ var focusCond = next || prev || parent_2;
276
+ var focusElem = focusCond.querySelector('a') || focusCond.querySelector('.eqjs-qp-condition-button');
277
+ if (focusElem) {
278
+ focusElem.focus();
279
+ }
280
+ }
281
+ }
282
+ };
283
+ if (Array.isArray(conds)) {
284
+ conds.forEach(function (cond) { return deleteCondition_1(cond); });
285
+ }
286
+ else {
287
+ deleteCondition_1(conds);
288
+ }
289
+ break;
290
+ }
291
+ default:
292
+ _this.refresh();
293
+ break;
294
+ }
295
+ });
296
+ };
297
+ QueryPanel.prototype.detachQueryObserver = function () {
298
+ if (this.queryEventCallbackId) {
299
+ var query = this.getQuery();
300
+ query.removeChangedCallback(this.queryEventCallbackId);
301
+ }
302
+ };
303
+ QueryPanel.prototype.getQuery = function () {
304
+ if (this.customQuery) {
305
+ return this.customQuery;
306
+ }
307
+ return this.context.getQuery();
308
+ };
309
+ QueryPanel.prototype.refreshCore = function () {
310
+ this.clear();
311
+ this.render();
312
+ };
313
+ QueryPanel.prototype.setOptions = function (options) {
314
+ dataUtils.assignDeep(this.options, options);
315
+ // dateFormatValue & dateFormatDisplay back compatibility
316
+ if (this.options.dateFormatValue) {
317
+ i18n.updateLocaleSettings({
318
+ editDateFormat: this.options.dateFormatValue
319
+ });
320
+ }
321
+ if (this.options.dateFormatDisplay) {
322
+ i18n.updateLocaleSettings({
323
+ shortDateFormat: this.options.dateFormatDisplay
324
+ });
325
+ }
326
+ if (typeof this.options.editableParts === "undefined") {
327
+ this.options.editableParts = QPEditablePart.All;
328
+ }
329
+ if (browserUtils.isMobileMode()) {
330
+ this.options.buttons = this.options.buttons || {};
331
+ this.options.buttons.condition = ["menu"];
332
+ this.options.buttons.group = ["menu"];
333
+ }
334
+ };
335
+ QueryPanel.prototype.clear = function () {
336
+ this.slot.innerHTML = "";
337
+ };
338
+ QueryPanel.prototype.render = function () {
339
+ try {
340
+ this.entitiesMenu = this.createEntitiesMenu();
341
+ this.createConditionMenus();
342
+ this.createLinkTypeMenu();
343
+ this.rootContainer = domel('div', this.slot)
344
+ .toDOM();
345
+ domel(this.slot)
346
+ .removeClass(eqCssMobile)
347
+ .addClass(browserUtils.getMobileCssClass());
348
+ var query = this.getQuery();
349
+ var root = query.getRootCondition();
350
+ var renderer = this.getConditionRenderer(root, this.rootContainer);
351
+ if (renderer) {
352
+ renderer.render();
353
+ }
354
+ if (this.options.showAddRow) {
355
+ this.addRowElement = domel('div', this.slot)
356
+ .toDOM();
357
+ var addrowRenderer = this.getAddRowRenderer(this.addRowElement);
358
+ if (addrowRenderer)
359
+ addrowRenderer.render();
360
+ }
361
+ }
362
+ catch (err) {
363
+ var error = err;
364
+ this.context.throwError({
365
+ action: "QueryPanel rendering",
366
+ text: error.message,
367
+ sourceError: error
368
+ });
369
+ }
370
+ };
371
+ QueryPanel.prototype.getConditionRenderer = function (condition, slot) {
372
+ var renderer;
373
+ if (this.options.onGetConditionRenderer) {
374
+ renderer = this.options.onGetConditionRenderer(condition, slot);
375
+ if (renderer) {
376
+ return renderer;
377
+ }
378
+ }
379
+ switch (condition.tag) {
380
+ case CondTag.Simple:
381
+ return new SimpleConditionRenderer(this, condition, slot);
382
+ case CondTag.Group:
383
+ return new ConditionGroupRenderer(this, condition, slot);
384
+ }
385
+ return null;
386
+ };
387
+ QueryPanel.prototype.getExpressionRenderer = function (expression, slot) {
388
+ if (!expression) {
389
+ throw 'Expression is not defined in the condition';
390
+ }
391
+ var model = this.getContext().getModel();
392
+ var condition = expression.getParent();
393
+ var operator = model.getOperatorById(condition.getOperatorId());
394
+ var attribute = model.getAttributeByIdSafe(condition.expressions[0].value);
395
+ var operand = model.getOperand(attribute, operator, expression.getIndex());
396
+ var editor;
397
+ var tag;
398
+ if (operand && operand.editor && operand.editor.tag !== EqEditorTag.Unknown) {
399
+ editor = operand.editor;
400
+ }
401
+ else if (attribute && attribute.defaultEditor) {
402
+ editor = attribute.defaultEditor;
403
+ }
404
+ else {
405
+ editor = new EqValueEditor();
406
+ }
407
+ tag = editor.tag;
408
+ var exprType = expression.dataType;
409
+ if (exprType == DataType.Unknown) {
410
+ exprType = attribute.dataType;
411
+ }
412
+ if (expression.kind === DataKind.Attribute) {
413
+ if (expression.getIndex() === 0) { // Base attribute expression
414
+ return new AttributeExpressionRenderer(this, expression, this.entitiesMenu, slot);
415
+ }
416
+ else {
417
+ var attributeMenu = this.createEntitiesMenu(function (ent, attr) {
418
+ if (attr) {
419
+ return attr.useInConditions && attr.dataType === exprType;
420
+ }
421
+ return true;
422
+ });
423
+ return new AttributeExpressionRenderer(this, expression, attributeMenu, slot);
424
+ }
425
+ }
426
+ else if (expression.kind === DataKind.Query) {
427
+ tag = EqEditorTag.SubQuery;
428
+ }
429
+ else if (expression.kind === DataKind.Scalar) {
430
+ if (tag == EqEditorTag.Unknown && (expression.dataType === DataType.Date
431
+ || expression.dataType === DataType.DateTime || expression.dataType === DataType.Time)) {
432
+ tag = EqEditorTag.DateTime;
433
+ }
434
+ }
435
+ else if (expression.kind == DataKind.ParentColumn) {
436
+ tag = EqEditorTag.BindToParentColumn;
437
+ }
438
+ if (this.options.onGetExpressionRenderer) {
439
+ var renderer = this.options.onGetExpressionRenderer(this, expression, editor, slot);
440
+ if (renderer) {
441
+ return renderer;
442
+ }
443
+ }
444
+ switch (tag) {
445
+ case EqEditorTag.List:
446
+ return new ListExpressionRenderer(this, expression, editor, slot);
447
+ case EqEditorTag.SqlList:
448
+ return new SqlListExpressionRenderer(this, expression, editor, slot);
449
+ case EqEditorTag.CustomList:
450
+ return new CustomListExpressionRenderer(this, expression, editor, slot);
451
+ case EqEditorTag.DateTime:
452
+ return new DateTimeExpressionRenderer(this, expression, editor, slot);
453
+ case EqEditorTag.SubQuery:
454
+ return new SubQueryExpressionRenderer(this, expression, editor, slot);
455
+ //move to ERS later
456
+ case EqEditorTag.BindToParentColumn:
457
+ return new BindToParentColumnExpressionRenderer(this, expression, editor, slot);
458
+ default:
459
+ return new InputExpressionRenderer(this, expression, editor, slot);
460
+ }
461
+ };
462
+ QueryPanel.prototype.getOperatorRenderer = function (condition, text, slot) {
463
+ var renderer;
464
+ if (this.options.onGetOperatorRenderer)
465
+ renderer = this.options.onGetOperatorRenderer(condition, text, slot);
466
+ if (renderer)
467
+ return renderer;
468
+ return new OperatorRenderer(this, condition, text, slot);
469
+ };
470
+ QueryPanel.prototype.getAddRowRenderer = function (slot) {
471
+ var renderer;
472
+ if (this.options.onGetAddRowRenderer)
473
+ renderer = this.options.onGetAddRowRenderer(slot);
474
+ if (renderer)
475
+ return renderer;
476
+ return new AddRowRenderer(this, this.entitiesMenu, slot);
477
+ };
478
+ QueryPanel.prototype.createEntitiesMenu = function (filterFunc) {
479
+ var model = this.getContext().getModel();
480
+ if (!model || model.isEmpty())
481
+ return null;
482
+ var menuId = this.slot.id || "eq-querypanel";
483
+ menuId += '-EntitiesMenu';
484
+ var entitiesList = model.getEntitiesTree({
485
+ addUIC: true,
486
+ addUIR: false,
487
+ addUIS: false,
488
+ attrPlacement: this.options.attrPlacement,
489
+ sortEntities: this.options.sortEntities
490
+ }, filterFunc);
491
+ var options = {
492
+ items: entitiesList,
493
+ adjustHeight: this.options.adjustEntitiesMenuHeight,
494
+ id: menuId,
495
+ domWriteItemsId: this.options.domWriteItemsId
496
+ };
497
+ dataUtils.assign(options, this.options.menuOptions);
498
+ return new PopupMenu(options);
499
+ };
500
+ QueryPanel.prototype.showEntitiesMenu = function (options) {
501
+ this.entitiesMenu.showMenu(options);
502
+ };
503
+ QueryPanel.prototype.createConditionMenus = function () {
504
+ //ConditionMenu
505
+ {
506
+ var query = this.getQuery();
507
+ var menuId = this.slot.id || "eq-querypanel";
508
+ menuId += '-ConditionMenu';
509
+ var items = [
510
+ {
511
+ id: "enable",
512
+ text: i18n.getText('MenuEnable')
513
+ },
514
+ {
515
+ id: "delete",
516
+ text: i18n.getText('CmdDelete')
517
+ }
518
+ ];
519
+ if (query.isEx()) {
520
+ if (this.options.allowParameterization || this.options.allowInJoinConditions) {
521
+ items.push({ id: "delimiter", text: "---" });
522
+ }
523
+ ;
524
+ if (this.options.allowParameterization) {
525
+ items.push({
526
+ id: "param",
527
+ text: i18n.getText('MenuParameterization')
528
+ });
529
+ }
530
+ ;
531
+ if (this.options.allowInJoinConditions) {
532
+ items.push({
533
+ id: "inJoin",
534
+ text: i18n.getText('MenuJoinCond')
535
+ });
536
+ }
537
+ ;
538
+ }
539
+ var options = { items: items, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId, showSearchBoxAfter: 100, showSelected: true };
540
+ dataUtils.assign(options, this.options.menuOptions);
541
+ this.conditionMenu = new PopupMenu(options);
542
+ }
543
+ //groupMenu
544
+ {
545
+ var menuId = this.slot.id || "eq-querypanel";
546
+ menuId += '-GroupMenu';
547
+ var items = [
548
+ {
549
+ id: "enable",
550
+ text: i18n.getText('MenuEnable')
551
+ },
552
+ {
553
+ id: "delete",
554
+ text: i18n.getText('CmdDelete')
555
+ },
556
+ {
557
+ id: "delimiter",
558
+ text: "---"
559
+ },
560
+ {
561
+ id: "addCondition",
562
+ text: i18n.getText('CmdAddCondition')
563
+ },
564
+ {
565
+ id: "addGroup",
566
+ text: i18n.getText('CmdAddCondGroup')
567
+ }
568
+ ];
569
+ var options = { items: items, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId, showSearchBoxAfter: 100, showSelected: true };
570
+ dataUtils.assign(options, this.options.menuOptions);
571
+ this.groupMenu = new PopupMenu(options);
572
+ }
573
+ //rootGroupMenu
574
+ {
575
+ var menuId = this.slot.id || "eq-querypanel";
576
+ menuId += '-RootGroupMenu';
577
+ var items = [
578
+ {
579
+ id: "addCondition",
580
+ text: i18n.getText('CmdAddCondition')
581
+ },
582
+ {
583
+ id: "addGroup",
584
+ text: i18n.getText('CmdAddCondGroup')
585
+ }
586
+ ];
587
+ var options = { items: items, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId, showSearchBoxAfter: 100, showSelected: true };
588
+ dataUtils.assign(options, this.options.menuOptions);
589
+ this.rootGroupMenu = new PopupMenu(options);
590
+ }
591
+ };
592
+ QueryPanel.prototype.createLinkTypeMenu = function () {
593
+ var menuId = this.slot.id;
594
+ if (menuId) {
595
+ menuId += '-LinkTypeMenu';
596
+ }
597
+ var typeList = eqconsts.predicateLinkTypeList;
598
+ var itemList = typeList.map(function (item) {
599
+ return {
600
+ id: item.id,
601
+ text: i18n.getText(item.key)
602
+ };
603
+ });
604
+ var options = { items: itemList, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId };
605
+ dataUtils.assign(options, this.options.menuOptions);
606
+ this.linkTypeMenu = new PopupMenu(options);
607
+ };
608
+ QueryPanel.prototype.toggleConditionPicked = function (condition, force) {
609
+ if (force === void 0) { force = undefined; }
610
+ var el;
611
+ var isActive;
612
+ if (condition) {
613
+ el = this.slot.querySelector("div[data-id=".concat(condition.id, "][data-condrow], div[data-id=").concat(condition.id, "] > div[data-group-row]"));
614
+ if (el) {
615
+ isActive = el.classList.contains('active');
616
+ }
617
+ }
618
+ //clear 'active' in all rows
619
+ var rows = this.slot.querySelectorAll(".".concat(this.cssPrefix, "-row"));
620
+ for (var i = 0; i < rows.length; i++) {
621
+ var row = rows[i];
622
+ if (row.hasAttribute('data-group-row')) {
623
+ if (!this.options.alwaysShowButtonsInGroups) {
624
+ domel(row)
625
+ .data("show-buttons", null);
626
+ }
627
+ }
628
+ else {
629
+ if (!this.options.alwaysShowButtonsInConditions) {
630
+ domel(row)
631
+ .data("show-buttons", null);
632
+ }
633
+ }
634
+ domel(row)
635
+ .removeClass('active');
636
+ }
637
+ if (el && !isActive) {
638
+ domel(el)
639
+ .addClass('active')
640
+ .data("show-buttons", "");
641
+ }
642
+ };
643
+ QueryPanel.prototype.showLandingSlot = function () {
644
+ var container = this.slot.querySelector('.eqjs-qp-conditions-root');
645
+ if (container) {
646
+ container.appendChild(this.landingSlot);
647
+ this.landingSlot.scrollIntoView({ block: "center", behavior: "smooth" });
648
+ }
649
+ };
650
+ QueryPanel.prototype.hideLangindSlot = function () {
651
+ if (this.landingSlot.parentElement) {
652
+ this.landingSlot.parentElement.removeChild(this.landingSlot);
653
+ }
654
+ };
655
+ QueryPanel.prototype.onProcessStartCore = function () {
656
+ if (this.options.showIndicatorOnLoad) {
657
+ if (!this.progressBlock.parentNode)
658
+ this.slot.appendChild(this.progressBlock);
659
+ }
660
+ };
661
+ QueryPanel.prototype.onProcessEndCore = function () {
662
+ if (this.options.showIndicatorOnLoad) {
663
+ if (this.progressBlock.parentNode)
664
+ this.slot.removeChild(this.progressBlock);
665
+ }
666
+ };
667
+ QueryPanel.prototype.renderProgressBlock = function () {
668
+ this.progressBlock = document.createElement('div');
669
+ this.progressBlock.classList.add("".concat(eqCssPrefix, "-progress-win8"));
670
+ this.progressBlock.classList.add(browserUtils.getMobileCssClass());
671
+ this.progressBlock.innerHTML = '<div class="wBall" id="wBall_1"><div class="wInnerBall"></div></div><div class="wBall" id="wBall_2"><div class="wInnerBall"></div></div><div class="wBall" id="wBall_3"><div class="wInnerBall"></div></div><div class="wBall" id="wBall_4"><div class="wInnerBall"></div></div><div class="wBall" id="wBall_5"><div class="wInnerBall"></div></div>';
672
+ };
673
+ return QueryPanel;
674
+ }(Widget));
675
+ export { QueryPanel };
654
676
  //# sourceMappingURL=query_panel.js.map