@easyquery/ui 7.2.3 → 7.2.4-rc01

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