@easyquery/ui 7.2.4 → 7.2.5-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.
- package/dist/easyquery.ui.cjs.js +14443 -0
- package/dist/easyquery.ui.esm.js +14383 -0
- package/dist/types/i18n/text_resources.d.ts +1 -0
- package/dist/{lib → types}/views/view.d.ts +3 -1
- package/dist/{lib → types}/widgets/query_panel.d.ts +2 -1
- package/dist/{lib → types}/widgets/queryname_widget.d.ts +1 -0
- package/dist/{lib → types}/widgets/renderers/querypanel/subquery_expression_renderer.d.ts +2 -4
- package/package.json +16 -54
- package/api-eq-community.js +0 -15
- package/dist/assets/css/aggr-settings.css +0 -242
- package/dist/assets/css/easychart.css +0 -73
- package/dist/assets/css/easyfacets.css +0 -280
- package/dist/assets/css/easyquery-mobile.css +0 -267
- package/dist/assets/css/easyquery.css +0 -1712
- package/dist/assets/css/eq-icons-default.css +0 -140
- package/dist/assets/css/eq-icons-files.css +0 -138
- package/dist/assets/css/eqview.css +0 -596
- package/dist/assets/css/images/ExportCSV.png +0 -0
- package/dist/assets/css/images/ExportExel.png +0 -0
- package/dist/assets/css/images/aggr_settings_cancel.png +0 -0
- package/dist/assets/css/images/aggr_settings_func.png +0 -0
- package/dist/assets/css/images/aggr_settings_group.png +0 -0
- package/dist/assets/css/images/ajax-loader.gif +0 -0
- package/dist/assets/css/images/chart-settings.png +0 -0
- package/dist/assets/css/images/checkbox_checked.png +0 -0
- package/dist/assets/css/images/checkbox_unchecked.png +0 -0
- package/dist/assets/css/images/clearButton.png +0 -0
- package/dist/assets/css/images/colbtn-aggrfunc.png +0 -0
- package/dist/assets/css/images/condbtn-addcondition.png +0 -0
- package/dist/assets/css/images/condbtn-addpredicate.png +0 -0
- package/dist/assets/css/images/condbtn-delete.png +0 -0
- package/dist/assets/css/images/condbtn-disabled.png +0 -0
- package/dist/assets/css/images/condbtn-enabled.png +0 -0
- package/dist/assets/css/images/condbtn-menu.png +0 -0
- package/dist/assets/css/images/condbtn-param.png +0 -0
- package/dist/assets/css/images/eqjs-ep-add-columns-hover.png +0 -0
- package/dist/assets/css/images/eqjs-ep-add-columns.png +0 -0
- package/dist/assets/css/images/eqjs-ep-add-cond-hover.png +0 -0
- package/dist/assets/css/images/eqjs-ep-add-cond.png +0 -0
- package/dist/assets/css/images/eqjs-ep-deselect-all-hover.png +0 -0
- package/dist/assets/css/images/eqjs-ep-deselect-all.png +0 -0
- package/dist/assets/css/images/eqjs-ep-select-all-hover.png +0 -0
- package/dist/assets/css/images/eqjs-ep-select-all.png +0 -0
- package/dist/assets/css/images/eqjs-fb-header-icon.png +0 -0
- package/dist/assets/css/images/execute.png +0 -0
- package/dist/assets/css/images/loadButton.png +0 -0
- package/dist/assets/css/images/logo.png +0 -0
- package/dist/assets/css/images/node-close.png +0 -0
- package/dist/assets/css/images/node-open.png +0 -0
- package/dist/assets/css/images/saveButton.png +0 -0
- package/dist/assets/css/images/sorting_asc.png +0 -0
- package/dist/assets/css/images/sorting_desc.png +0 -0
- package/dist/assets/css/images/sorting_none.png +0 -0
- package/dist/assets/css/images/ve-loader.gif +0 -0
- package/dist/browser/eq.community.css.map +0 -1
- package/dist/browser/eq.community.js +0 -34645
- package/dist/browser/eq.community.js.map +0 -1
- package/dist/browser/eq.community.min.js +0 -2
- package/dist/browser/eq.community.min.js.LICENSE.txt +0 -11
- package/dist/browser/eq.community.min.js.map +0 -1
- package/dist/browser/eq.core.css +0 -4564
- package/dist/browser/eq.core.min.css +0 -3
- package/dist/browser/eq.view.css +0 -607
- package/dist/browser/eq.view.css.map +0 -1
- package/dist/browser/eq.view.min.css +0 -1
- package/dist/bundles/easyquery.ui.js +0 -23068
- package/dist/bundles/easyquery.ui.js.map +0 -1
- package/dist/bundles/easyquery.ui.min.js +0 -3
- package/dist/bundles/easyquery.ui.min.js.LICENSE.txt +0 -3
- package/dist/bundles/easyquery.ui.min.js.map +0 -1
- package/dist/lib/dialog/aggr_settings_dialog.js +0 -107
- package/dist/lib/dialog/aggr_settings_dialog.js.map +0 -1
- package/dist/lib/dialog/export_dialog.js +0 -64
- package/dist/lib/dialog/export_dialog.js.map +0 -1
- package/dist/lib/extensions.d.ts +0 -7
- package/dist/lib/extensions.js +0 -14
- package/dist/lib/extensions.js.map +0 -1
- package/dist/lib/facets/chart_facet.js +0 -241
- package/dist/lib/facets/chart_facet.js.map +0 -1
- package/dist/lib/facets/datatable_facet.js +0 -72
- package/dist/lib/facets/datatable_facet.js.map +0 -1
- package/dist/lib/facets/pivot_table_facet.js +0 -699
- package/dist/lib/facets/pivot_table_facet.js.map +0 -1
- package/dist/lib/facets/result_facet.js +0 -247
- package/dist/lib/facets/result_facet.js.map +0 -1
- package/dist/lib/i18n/text_resources.js +0 -261
- package/dist/lib/i18n/text_resources.js.map +0 -1
- package/dist/lib/public_api.js +0 -93
- package/dist/lib/public_api.js.map +0 -1
- package/dist/lib/types/facet_type.js +0 -7
- package/dist/lib/types/facet_type.js.map +0 -1
- package/dist/lib/types/qp_editable_part.js +0 -17
- package/dist/lib/types/qp_editable_part.js.map +0 -1
- package/dist/lib/utils/browser_utils.js +0 -59
- package/dist/lib/utils/browser_utils.js.map +0 -1
- package/dist/lib/utils/display_format_parser.js +0 -62
- package/dist/lib/utils/display_format_parser.js.map +0 -1
- package/dist/lib/utils/dropdown.js +0 -58
- package/dist/lib/utils/dropdown.js.map +0 -1
- package/dist/lib/utils/popup_menu.js +0 -1260
- package/dist/lib/utils/popup_menu.js.map +0 -1
- package/dist/lib/utils/utils.js +0 -47
- package/dist/lib/utils/utils.js.map +0 -1
- package/dist/lib/views/adv_search_view.js +0 -713
- package/dist/lib/views/adv_search_view.js.map +0 -1
- package/dist/lib/views/data_filter_view.js +0 -80
- package/dist/lib/views/data_filter_view.js.map +0 -1
- package/dist/lib/views/html_data_filter_view.js +0 -45
- package/dist/lib/views/html_data_filter_view.js.map +0 -1
- package/dist/lib/views/report_view.js +0 -733
- package/dist/lib/views/report_view.js.map +0 -1
- package/dist/lib/views/view.js +0 -534
- package/dist/lib/views/view.js.map +0 -1
- package/dist/lib/views/view_options.js +0 -2
- package/dist/lib/views/view_options.js.map +0 -1
- package/dist/lib/widgets/aggregation_bar.js +0 -146
- package/dist/lib/widgets/aggregation_bar.js.map +0 -1
- package/dist/lib/widgets/charts/chart_type.js +0 -16
- package/dist/lib/widgets/charts/chart_type.js.map +0 -1
- package/dist/lib/widgets/charts/chart_widget.js +0 -385
- package/dist/lib/widgets/charts/chart_widget.js.map +0 -1
- package/dist/lib/widgets/charts/chart_widget_chartjs.js +0 -187
- package/dist/lib/widgets/charts/chart_widget_chartjs.js.map +0 -1
- package/dist/lib/widgets/charts/chart_widget_google.js +0 -166
- package/dist/lib/widgets/charts/chart_widget_google.js.map +0 -1
- package/dist/lib/widgets/columns_bar.js +0 -687
- package/dist/lib/widgets/columns_bar.js.map +0 -1
- package/dist/lib/widgets/columns_panel.js +0 -721
- package/dist/lib/widgets/columns_panel.js.map +0 -1
- package/dist/lib/widgets/easy_grid_widget.js +0 -169
- package/dist/lib/widgets/easy_grid_widget.js.map +0 -1
- package/dist/lib/widgets/entities_panel.js +0 -623
- package/dist/lib/widgets/entities_panel.js.map +0 -1
- package/dist/lib/widgets/eq_result_html_grid.js +0 -186
- package/dist/lib/widgets/eq_result_html_grid.js.map +0 -1
- package/dist/lib/widgets/export_widget.js +0 -58
- package/dist/lib/widgets/export_widget.js.map +0 -1
- package/dist/lib/widgets/facet_container.js +0 -54
- package/dist/lib/widgets/facet_container.js.map +0 -1
- package/dist/lib/widgets/filter_bar.js +0 -260
- package/dist/lib/widgets/filter_bar.js.map +0 -1
- package/dist/lib/widgets/grid.js +0 -80
- package/dist/lib/widgets/grid.js.map +0 -1
- package/dist/lib/widgets/html_content_widget.js +0 -72
- package/dist/lib/widgets/html_content_widget.js.map +0 -1
- package/dist/lib/widgets/locale_widget.js +0 -80
- package/dist/lib/widgets/locale_widget.js.map +0 -1
- package/dist/lib/widgets/manage_drilldown_widget.js +0 -156
- package/dist/lib/widgets/manage_drilldown_widget.js.map +0 -1
- package/dist/lib/widgets/process_widget.js +0 -51
- package/dist/lib/widgets/process_widget.js.map +0 -1
- package/dist/lib/widgets/query_panel.js +0 -676
- package/dist/lib/widgets/query_panel.js.map +0 -1
- package/dist/lib/widgets/queryname_widget.js +0 -110
- package/dist/lib/widgets/queryname_widget.js.map +0 -1
- package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.js +0 -430
- package/dist/lib/widgets/renderers/aggr_settings/aggr_settings_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/base_element_renderer.js +0 -64
- package/dist/lib/widgets/renderers/base_element_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer_cb.js +0 -50
- package/dist/lib/widgets/renderers/columnsbar/aggrfunc_column_renderer_cb.js.map +0 -1
- package/dist/lib/widgets/renderers/columnsbar/attr_column_renderer_cb.js +0 -86
- package/dist/lib/widgets/renderers/columnsbar/attr_column_renderer_cb.js.map +0 -1
- package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.js +0 -532
- package/dist/lib/widgets/renderers/columnsbar/column_renderer_cb.js.map +0 -1
- package/dist/lib/widgets/renderers/columnsbar/editable_column_renderer_cb.js +0 -102
- package/dist/lib/widgets/renderers/columnsbar/editable_column_renderer_cb.js.map +0 -1
- package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer_cp.js +0 -173
- package/dist/lib/widgets/renderers/columnspanel/aggrfunc_column_renderer_cp.js.map +0 -1
- package/dist/lib/widgets/renderers/columnspanel/attr_column_renderer_cp.js +0 -193
- package/dist/lib/widgets/renderers/columnspanel/attr_column_renderer_cp.js.map +0 -1
- package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.js +0 -811
- package/dist/lib/widgets/renderers/columnspanel/column_renderer_cp.js.map +0 -1
- package/dist/lib/widgets/renderers/columnspanel/editable_column_renderer_cp.js +0 -277
- package/dist/lib/widgets/renderers/columnspanel/editable_column_renderer_cp.js.map +0 -1
- package/dist/lib/widgets/renderers/dropdown_renderer.js +0 -43
- package/dist/lib/widgets/renderers/dropdown_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/querypanel/addrow_renderer.js +0 -88
- package/dist/lib/widgets/renderers/querypanel/addrow_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.js +0 -72
- package/dist/lib/widgets/renderers/querypanel/attribute_expression_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.js +0 -42
- package/dist/lib/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.js +0 -232
- package/dist/lib/widgets/renderers/querypanel/condition_group_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/querypanel/condition_renderer.js +0 -510
- package/dist/lib/widgets/renderers/querypanel/condition_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.js +0 -109
- package/dist/lib/widgets/renderers/querypanel/datetime_expression_render.js.map +0 -1
- package/dist/lib/widgets/renderers/querypanel/expression_renderer.js +0 -92
- package/dist/lib/widgets/renderers/querypanel/expression_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.js +0 -166
- package/dist/lib/widgets/renderers/querypanel/input_expression_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.js +0 -318
- package/dist/lib/widgets/renderers/querypanel/list_expression_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/querypanel/operator_renderer.js +0 -96
- package/dist/lib/widgets/renderers/querypanel/operator_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.js +0 -238
- package/dist/lib/widgets/renderers/querypanel/subquery_expression_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/querypanel/text_renderer.js +0 -37
- package/dist/lib/widgets/renderers/querypanel/text_renderer.js.map +0 -1
- package/dist/lib/widgets/renderers/sortingbar/column_renderer_sb.js +0 -173
- package/dist/lib/widgets/renderers/sortingbar/column_renderer_sb.js.map +0 -1
- package/dist/lib/widgets/result_facets_panel.js +0 -504
- package/dist/lib/widgets/result_facets_panel.js.map +0 -1
- package/dist/lib/widgets/sorting_bar.js +0 -334
- package/dist/lib/widgets/sorting_bar.js.map +0 -1
- package/dist/lib/widgets/statement_panel.js +0 -61
- package/dist/lib/widgets/statement_panel.js.map +0 -1
- package/dist/lib/widgets/widget_options.js +0 -2
- package/dist/lib/widgets/widget_options.js.map +0 -1
- package/styles-eq-core.js +0 -10
- package/styles-eq-view.js +0 -1
- package/tsconfig.json +0 -23
- package/webpack.config.js +0 -181
- /package/dist/{lib → types}/dialog/aggr_settings_dialog.d.ts +0 -0
- /package/dist/{lib → types}/dialog/export_dialog.d.ts +0 -0
- /package/dist/{lib/i18n/text_resources.d.ts → types/extensions.d.ts} +0 -0
- /package/dist/{lib → types}/facets/chart_facet.d.ts +0 -0
- /package/dist/{lib → types}/facets/datatable_facet.d.ts +0 -0
- /package/dist/{lib → types}/facets/pivot_table_facet.d.ts +0 -0
- /package/dist/{lib → types}/facets/result_facet.d.ts +0 -0
- /package/dist/{lib → types}/public_api.d.ts +0 -0
- /package/dist/{lib → types}/types/facet_type.d.ts +0 -0
- /package/dist/{lib → types}/types/qp_editable_part.d.ts +0 -0
- /package/dist/{lib → types}/utils/browser_utils.d.ts +0 -0
- /package/dist/{lib → types}/utils/display_format_parser.d.ts +0 -0
- /package/dist/{lib → types}/utils/dropdown.d.ts +0 -0
- /package/dist/{lib → types}/utils/popup_menu.d.ts +0 -0
- /package/dist/{lib → types}/utils/utils.d.ts +0 -0
- /package/dist/{lib → types}/views/adv_search_view.d.ts +0 -0
- /package/dist/{lib → types}/views/data_filter_view.d.ts +0 -0
- /package/dist/{lib → types}/views/html_data_filter_view.d.ts +0 -0
- /package/dist/{lib → types}/views/report_view.d.ts +0 -0
- /package/dist/{lib → types}/views/view_options.d.ts +0 -0
- /package/dist/{lib → types}/widgets/aggregation_bar.d.ts +0 -0
- /package/dist/{lib → types}/widgets/charts/chart_type.d.ts +0 -0
- /package/dist/{lib → types}/widgets/charts/chart_widget.d.ts +0 -0
- /package/dist/{lib → types}/widgets/charts/chart_widget_chartjs.d.ts +0 -0
- /package/dist/{lib → types}/widgets/charts/chart_widget_google.d.ts +0 -0
- /package/dist/{lib → types}/widgets/columns_bar.d.ts +0 -0
- /package/dist/{lib → types}/widgets/columns_panel.d.ts +0 -0
- /package/dist/{lib → types}/widgets/easy_grid_widget.d.ts +0 -0
- /package/dist/{lib → types}/widgets/entities_panel.d.ts +0 -0
- /package/dist/{lib → types}/widgets/eq_result_html_grid.d.ts +0 -0
- /package/dist/{lib → types}/widgets/export_widget.d.ts +0 -0
- /package/dist/{lib → types}/widgets/facet_container.d.ts +0 -0
- /package/dist/{lib → types}/widgets/filter_bar.d.ts +0 -0
- /package/dist/{lib → types}/widgets/grid.d.ts +0 -0
- /package/dist/{lib → types}/widgets/html_content_widget.d.ts +0 -0
- /package/dist/{lib → types}/widgets/locale_widget.d.ts +0 -0
- /package/dist/{lib → types}/widgets/manage_drilldown_widget.d.ts +0 -0
- /package/dist/{lib → types}/widgets/process_widget.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/aggr_settings/aggr_settings_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/base_element_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/columnsbar/aggrfunc_column_renderer_cb.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/columnsbar/attr_column_renderer_cb.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/columnsbar/column_renderer_cb.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/columnsbar/editable_column_renderer_cb.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/columnspanel/aggrfunc_column_renderer_cp.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/columnspanel/attr_column_renderer_cp.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/columnspanel/column_renderer_cp.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/columnspanel/editable_column_renderer_cp.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/dropdown_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/querypanel/addrow_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/querypanel/attribute_expression_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/querypanel/condition_group_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/querypanel/condition_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/querypanel/datetime_expression_render.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/querypanel/expression_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/querypanel/input_expression_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/querypanel/list_expression_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/querypanel/operator_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/querypanel/text_renderer.d.ts +0 -0
- /package/dist/{lib → types}/widgets/renderers/sortingbar/column_renderer_sb.d.ts +0 -0
- /package/dist/{lib → types}/widgets/result_facets_panel.d.ts +0 -0
- /package/dist/{lib → types}/widgets/sorting_bar.d.ts +0 -0
- /package/dist/{lib → types}/widgets/statement_panel.d.ts +0 -0
- /package/dist/{lib → types}/widgets/widget_options.d.ts +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"easyquery.ui.js","mappings":"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AI,OAAO,EAAE;YACT,OAAO,CAAC,KAAK,EAAE,CAAC;SACnB;IACL,CAAC,EAAE,GAAG,CAAC;AACX,CAAC;AAEM,IAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,IAAM,WAAW,GAAG,aAAa,CAAC;AAGlC,SAAS,sBAAsB,CAAC,OAAuB;IAC1D,KAAK,CAAC,OAAO,CAAC;SACT,QAAQ,CAAC,UAAG,WAAW,iBAAc,CAAC;SACtC,QAAQ,CAAC,KAAK,EAAE,WAAC;QACd,CAAC,CAAC,QAAQ,CAAC,UAAG,WAAW,gBAAa,CAAC;aACtC,EAAE,CAAC,OAAO,EAAE,UAAC,CAAC;YACX,CAAC,CAAC,cAAc,EAAE,CAAC;YAEnB,KAAK,CAAC,OAAO,CAAC;iBACT,WAAW,CAAC,UAAG,WAAW,eAAY,CAAC,CAAC;QAEjD,CAAC,CAAC;IACN,CAAC,CAAC;AACV,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;ACzDD;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;;AC7CO;AACP;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC;;ACNO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,mBAAmB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,gDAAgD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;;ACzD8C;AACP;AACvC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB,GAAG;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,eAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gBAAgB,GAAG;AACxD;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gDAAgD;AAClE,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA,2BAA2B,gBAAgB,GAAG;AAC9C;AACA,8BAA8B,gBAAgB,GAAG;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gBAAgB,GAAG;AACxD;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,aAAa;AAC/D;AACA;AACA,iDAAiD,aAAa;AAC9D;AACA;AACA,kDAAkD,iBAAiB;AACnE;AACA;AACA,iDAAiD,iBAAiB;AAClE;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,sBAAsB;AAC7D,oCAAoC,sBAAsB;AAC1D;AACA;AACA;AACA,0DAA0D,sBAAsB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oBAAoB;AACrB;;ACpd8C;AACV;AAC7B;AACP;AACA;AACA,6BAA6B,QAAQ,2BAA2B,kCAAkC;AAClG;AACA;AACA;AACA,gBAAgB,aAAa,EAAE,aAAa,EAAE,iBAAiB;AAC/D;AACA;AACA;AACA,gBAAgB,eAAe,EAAE,aAAa,EAAE,kBAAkB;AAClE;AACA;AACA,yBAAyB,aAAa,EAAE,aAAa,EAAE,cAAc;AACrE,QAAQ,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB;AAC3E;AACA;AACA;AACA;AACA,qBAAqB,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,0BAA0B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,gBAAgB,aAAa,gBAAgB;AACnI,6CAA6C,aAAa,aAAa,iBAAiB;AACxF,yBAAyB,iBAAiB,aAAa,aAAa;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,kBAAkB,qBAAqB;AACvC,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA,CAAC,sBAAsB;AACvB;;ACvgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;;ACvBA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,gBAAgB,SAAI,IAAI,SAAI;AAC5B;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACuC;AACiB;AACb;AACE;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,yBAAyB,cAAc;AACvC;AACA;AACA,yBAAyB,eAAe;AACxC;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB,gBAAgB;AACxD;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,yCAAyC,6CAA6C;AACtF,kDAAkD;AAClD;AACA;AACA;AACA;AACA,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACqB;AACtB;;ACnK8C;AACa;AACpB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,gCAAgC,+BAA+B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,oCAAoC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,2BAA2B;AACnF;AACA;AACA,CAAC;AACqB;AACtB;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,sBAAsB;AACnD;AACA,8BAA8B,kBAAkB;AAChD,8BAA8B,kBAAkB;AAChD,8BAA8B,kBAAkB;AAChD,gCAAgC,kBAAkB;AAClD,8BAA8B,kBAAkB;AAChD,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;;AC9IgD;AACF;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;;AChEoC;AACG;AACS;AACF;AACa;AACd;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,iBAAiB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,gBAAgB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yBAAyB;AAC1D;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA;AACA;AACA,iCAAiC,YAAY,wBAAwB,wDAAwD;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA;AACA,iCAAiC,YAAY,wBAAwB,qDAAqD;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yBAAyB;AAC1D;AACA;AACA,8BAA8B,YAAY;AAC1C,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,kCAAkC,YAAY,GAAG;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA;AACA,8BAA8B,YAAY;AAC1C,0CAA0C,YAAY;AACtD;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,YAAY;AAClC;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,cAAc,EAAE,eAAe;AAChF;AACA,6CAA6C,kBAAkB,EAAE,iBAAiB;AAClF,6CAA6C,kBAAkB,EAAE,iBAAiB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,YAAY;AACzC;AACA;AACA;AACA;AACA,4BAA4B,eAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,KAAK;AACtD,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACmB;AACpB;;AC1eA,IAAI,oBAAQ,IAAI,SAAI,IAAI,SAAI;AAC5B,IAAI,oBAAQ;AACZ,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oBAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oBAAQ,GAAG,eAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,8BAA8B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAQ,CAAC,oBAAQ,GAAG,UAAU,qEAAqE;AACtH,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gBAAgB;AAC3D;AACA;AACA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC8B;AAC/B;;ACzM8C;AACP;AAChC;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB,YAAY,eAAe;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa,EAAE,iBAAiB,EAAE,aAAa;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ,aAAa,EAAE,iBAAiB,EAAE,aAAa,2BAA2B;AACvH,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkB;AACnB;;AC5C+C;AACV;AACS;AACP;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA,mDAAmD,gBAAgB;AACnE;AACA;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,8BAA8B,yBAAyB;AACvD,oCAAoC,0CAA0C;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO;AACnD,iCAAiC;AACjC,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC,yBAAyB,eAAe;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,uBAAuB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACmB;AACpB;;ACnB8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qCAAqC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,gBAAgB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gBAAgB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;;AC5HO;AACP;AACA;AACA;AACA;AACA;AACA,oDAAoD,EAAE,WAAW,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wBAAwB;AACzB;;ACd8B;AAC9B,iBAAiB;AACjB;;ACFA;AACkC;AACO;AACN;AACnC;AACmC;AACC;AACD;AACnC;AACyC;AACE;AACC;AAC5C;AACiC;AACE;AACC;AACpC;AACuC;AACF;AACF;AACA;AACH;AACO;AACvC;AACsC;AACtC;AAC4B;AAC5B;AACkC;AACG;AACP;AACC;AACc;AAC7C;AACA;AACA,qDAAqD,kBAAkB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjD+C;AAC/C;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACA;AACP;;AClOO;AACP,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,qBAAqB,SAAI,IAAI,SAAI;AACjC,6EAA6E,OAAO;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AAC8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI;AACZ;AACA;AACA;AACA,CAAC;AACiC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkC;AAC5B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrTuC;AACY;AACD;AAClD;AACO;AACP;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,KAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,kDAAkD;AAClD;AACA,8CAA8C,qBAAqB;AACnE;AACA,gBAAgB,wDAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sCAAsC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACO;AACP;;AC7WO;AACP;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;;ACNgD;AACM;AACtD;AACO,mBAAmB,QAAQ;AAC3B;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+CAAgB;AACvC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mDAAkB;AACzC,aAAa;AACb;AACA;AACA,yBAAyB,yDAAqB;AAC9C,gCAAgC;AAChC;AACA,qBAAqB,oCAAa;AAClC;AACA;AACA,qBAAqB,oCAAa;AAClC;AACA;AACA,qBAAqB,4CAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAiB;AACpC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,0CAAgB;AACjC,iBAAiB,oCAAa;AAC9B,iBAAiB,oCAAa;AAC9B,iBAAiB,4CAAiB;AAClC,iBAAiB,sCAAc;AAC/B,iBAAiB,sCAAc;AAC/B,iBAAiB,sCAAc;AAC/B;AACA,iBAAiB,oCAAa;AAC9B,iBAAiB,4CAAiB;AAClC,iBAAiB,oCAAa;AAC9B;AACA,iBAAiB,oCAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;;ACzIwD;AACK;AAC7D;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA,aAAa,4CAAoB;AACjC;AACA,aAAa,gDAAsB;AACnC;AACA,aAAa,8CAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,uBAAuB;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACqB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oDAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;;AC3JA,gBAAgB,SAAI,IAAI,SAAI;AAC5B;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qBAAa,IAAI,SAAI,IAAI,SAAI;AACjC,6EAA6E,OAAO;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AAC8E;AACZ;AAChB;AACqB;AACf;AACc;AACJ;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,KAAK;AAChC;AACA,6BAA6B,KAAK;AAClC;AACA;AACA;AACA;AACA,6BAA6B,sCAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,+BAAY;AAC5C,qCAAqC,qBAAqB;AAC1D,2BAA2B,cAAc;AACzC;AACA;AACA;AACA;AACA,8BAA8B,8CAAgB,GAAG;AACjD,4BAA4B,8CAAgB,GAAG;AAC/C,qBAAqB,sCAAY,GAAG;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAwB;AAChC,yDAAyD;AACzD,SAAS;AACT;AACA,QAAQ,gEAAyB;AACjC,yDAAyD;AACzD,SAAS;AACT;AACA,qBAAqB,oCAAa,wBAAwB,0CAA0C,oCAAa;AACjH;AACA,QAAQ,0DAAsB;AAC9B,yDAAyD;AACzD,SAAS;AACT;AACA,yBAAyB,qBAAa,CAAC,qBAAa,CAAC,qBAAa,CAAC,qBAAa,KAAK,8DAAwB,WAAW,gEAAyB,WAAW,0DAAsB;AAClL,YAAY,oCAAa;AACzB;AACA,QAAQ,wDAAqB;AAC7B;AACA,6DAA6D;AAC7D;AACA,SAAS;AACT,qBAAqB,0CAAgB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,mCAAmC;AAChG,QAAQ,8CAAgB;AACxB;AACA;AACA;AACA,YAAY,mCAAmC;AAC/C;AACA;AACA;AACA,uDAAuD,WAAW;AAClE;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,oCAAoC,iBAAiB;AACrD,0DAA0D,WAAW;AACrE;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,uBAAuB;AAC7F;AACA;AACA,oCAAoC,8BAA8B;AAClE;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA,oBAAoB,KAAK;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,WAAW;AACzD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qCAAqC,uBAAuB;AAC5D,kCAAkC,mBAAmB;AACrD,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA,iCAAiC,KAAK;AACtC;AACA;AACA,sCAAsC,KAAK;AAC3C;AACA;AACA,4BAA4B,KAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB;AACA;AACA,SAAS;AACT;AACA,QAAQ,KAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA,YAAY,mCAAmC;AAC/C;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,oCAAoC,gBAAgB;AACpD;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,uBAAuB,KAAK;AAC5B;AACA;AACA,+BAA+B,KAAK;AACpC;AACA;AACA;AACA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,sCAAsC,0BAAO;AAC7C;AACA;AACA;AACA,+EAA+E,uBAAuB;AACtG;AACA;AACA;AACA;AACA;AACA,oBAAoB,KAAK;AACzB;AACA;AACA;AACA,aAAa;AACb,0CAA0C,sBAAsB,WAAW;AAC3E;AACA;AACA,YAAY,KAAK;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,gCAAgC,wBAAwB;AACxD;AACA,qDAAqD,gBAAgB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,sBAAsB;AACtE,kCAAkC,0BAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kBAAkB;AAC3D,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,uEAAuE,iBAAiB;AACxF;AACA;AACA;AACA,oDAAoD,wBAAwB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,aAAa,GAAG,YAAY;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,sCAAsC,8BAA8B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,0BAA0B,KAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uCAAY;AAChD,2BAA2B,mBAAmB;AAC9C,2BAA2B,kBAAkB;AAC7C,2BAA2B,MAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA;AACA,iCAAiC,sBAAsB;AACvD;AACA;AACA;AACA,gDAAgD,KAAK;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iCAAiC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA,iDAAiD,oBAAoB;AACrE;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uCAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,6BAA6B;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,KAAK;AACxB;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa,IAAI;AACjB;AACA;AACA,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,yCAAyC,iEAAiE;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uBAAuB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,wBAAwB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oDAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0BAA0B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmB;AACpB;;AC/pCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmB;AACpB;;AC7B0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;;AC1GA,IAAI,wBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACyD;AACR;AACZ;AACtC;AACA,IAAI,wBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6BAA6B;AACrD,kCAAkC,+DAAwB;AAC1D;AACA,wBAAwB,yBAAyB;AACjD,8BAA8B,yDAAqB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,gDAAgD;AACvG;AACA,QAAQ,KAAK;AACb;AACA,4BAA4B,KAAK;AACjC;AACA;AACA;AACA;AACA,uBAAuB,2DAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oDAAuB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,oDAAuB;AACpE;AACA;AACA;AACA;AACA,yBAAyB,yDAAqB;AAC9C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA,kDAAkD;AAClD;AACA;AACA;AACA,SAAS;AACT,mDAAmD,6BAA6B,KAAK,IAAI;AACzF,kDAAkD;AAClD;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gEAAgE;AAChE;AACA,6CAA6C;AAC7C;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA,SAAS,IAAI;AACb,kDAAkD;AAClD;AACA,qDAAqD;AACrD;AACA;AACA,SAAS;AACT,uBAAuB,IAAI,IAAI;AAC/B,kDAAkD;AAClD;AACA;AACA;AACA,SAAS;AACT,mDAAmD,6BAA6B,KAAK,IAAI;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,cAAc;AACtC,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB;AAC9C,0BAA0B,KAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,QAAQ;AACiB;AAC3B;;ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB;;AC1BA,IAAI,2BAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACqC;AACY;AACP;AAC3C;AACA,IAAI,2BAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA,mDAAmD,0CAA0C;AAC7F;AACA,6BAA6B,KAAK;AAClC;AACA;AACA,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,IAAI;AAC3B;AACA,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,IAAI;AAC3B;AACA;AACA;AACA,qBAAqB,yDAAqB;AAC1C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC,CAAC,UAAU;AACiB;AAC7B;;AClFA,IAAI,gCAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACqC;AACY;AACE;AACC;AACK;AACA;AAC1D;AACA,IAAI,gCAAS;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA,+CAA+C;AAC/C;AACA,kBAAkB,uCAAY;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB;AACvB;AACA,sDAAsD;AACtD;AACA,sBAAsB,uCAAY;AAClC;AACA;AACA;AACA,aAAa;AACb,2BAA2B;AAC3B;AACA,kDAAkD;AAClD;AACA,kBAAkB,uCAAY;AAC9B;AACA;AACA;AACA,SAAS;AACT,uBAAuB;AACvB;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC,CAAC,cAAc;AACiB;AACjC;;AChIO;AACP;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;;ACNA,IAAI,8BAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACoD;AACI;AACP;AAClD,IAAI,gCAAS;AACN;AACP;AACA;AACA;AACA;AACA,2CAA2C,gCAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2CAA2C,gCAAS,oIAAoI,gCAAS,uCAAuC,gCAAS,8GAA8G,gCAAS,uCAAuC,gCAAS;AACxZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,gCAAS;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gCAAS;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,gBAAgB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8CAAgB;AACxC;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA,oCAAoC,gCAAS;AAC7C;AACA,gDAAgD;AAChD,qDAAqD;AACrD,gDAAgD;AAChD,oCAAoC,gCAAS;AAC7C;AACA;AACA,wCAAwC,gCAAS;AACjD,kDAAkD;AAClD,wCAAwC,gCAAS;AACjD,8CAA8C;AAC9C;AACA;AACA,wDAAwD;AACxD,4CAA4C,gCAAS;AACrD;AACA;AACA,qBAAqB;AACrB,mCAAmC;AACnC,aAAa;AACb;AACA,qCAAqC,gCAAS;AAC9C;AACA,aAAa;AACb;AACA;AACA,wCAAwC,gCAAS;AACjD;AACA;AACA,+BAA+B,mEAA2B;AAC1D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,0EAA0E,4BAA4B;AACtG;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,gCAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,uCAAY;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,kBAAkB;AACrG;AACA;AACA,qCAAqC;AACrC,iCAAiC;AACjC;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA,yDAAyD;AACzD;AACA;AACA,6DAA6D,uCAAY;AACzE;AACA;AACA,qBAAqB,IAAI;AACzB,aAAa;AACb,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACA;AACA;AACA,sCAAsC,gCAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,gCAAgC;AAC5E;AACA;AACA;AACA,4CAA4C,iCAAiC;AAC7E;AACA;AACA,oBAAoB,KAAK;AACzB,gCAAgC,gCAAS;AACzC,6CAA6C;AAC7C,gCAAgC,gCAAS;AACzC;AACA;AACA;AACA;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB;AACA,IAAI,8BAAS;AACb;AACA;AACA;AACA;AACA,mBAAmB,KAAK;AACxB,4CAA4C;AAC5C;AACA,uBAAuB;AACvB;AACA;AACA,oCAAoC,gCAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;;AChgBsC;AACtC;AACA,IAAI,6DAAuB;AAC3B,wBAAwB,oBAAoB,GAAG,mBAAmB,IAAI,OAAO;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;ACbA;AACiC;AACO;AACC;AACA;AACM;AAC/C;AAC0C;AACQ;AACQ;AACR;AACQ;AACL;AACR;AAC7C;AACsC;AACG;AACJ;AACR;AACI;AACjC;AACiD;AACR;AACV;AACyC;AACxE;AACA,kBAAkB,oBAAoB;AACnB;AACnB;;;;;;;;AC5BO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,8BAA8B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;;;;;;;ACnEA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UA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","sources":["webpack://easyqueryUI/webpack/universalModuleDefinition","webpack://easyqueryUI/./src/utils/browser_utils.ts","webpack://easyqueryUI/./src/utils/utils.ts","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/types/data_type.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/types/entity_attr_kind.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/types/editor_tag.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/http/http_method.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/http/http_request.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/i18n/i18n.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/utils/utils.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/http/http_action_result.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/http/http_client.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/meta/meta_entity.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/meta/value_editor.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/meta/meta_data.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/data/aggr_settings.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/data/data_column.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/data/data_row.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/data/easy_data_table.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/utils/easy_guid.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/event/event_emitter.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/utils/liquid.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/i18n/load_default_locale_settings.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/core/dist/lib/public_api.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/utils/ui-utils.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/utils/mask.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/utils/dom_elem_builder.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/utils/drag_manager.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_options.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_cell_renderer.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_columns.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/datetimepicker/calendar.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/datetimepicker/date_time_picker.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/datetimepicker/default_calendar.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/datetimepicker/time_picker.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/datetimepicker/default_time_picker.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/datetimepicker/default_date_time_picker.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/dialogs/dialog_service.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/dialogs/default_dialog_service.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/i18n/text_resources.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/public_api.js","webpack://easyqueryUI/../../easydata/easydata.js/packs/ui/dist/lib/utils/browser_utils.js","webpack://easyqueryUI/external umd \"easyqueryCore\"","webpack://easyqueryUI/webpack/bootstrap","webpack://easyqueryUI/webpack/runtime/define property getters","webpack://easyqueryUI/webpack/runtime/hasOwnProperty shorthand","webpack://easyqueryUI/webpack/runtime/make namespace object","webpack://easyqueryUI/./src/widgets/entities_panel.ts","webpack://easyqueryUI/./src/utils/popup_menu.ts","webpack://easyqueryUI/./src/utils/display_format_parser.ts","webpack://easyqueryUI/./src/widgets/renderers/columnspanel/column_renderer_cp.ts","webpack://easyqueryUI/./src/widgets/renderers/columnspanel/attr_column_renderer_cp.ts","webpack://easyqueryUI/./src/widgets/renderers/columnspanel/aggrfunc_column_renderer_cp.ts","webpack://easyqueryUI/./src/widgets/renderers/columnspanel/editable_column_renderer_cp.ts","webpack://easyqueryUI/./src/widgets/columns_panel.ts","webpack://easyqueryUI/./src/widgets/renderers/columnsbar/column_renderer_cb.ts","webpack://easyqueryUI/./src/widgets/renderers/columnsbar/attr_column_renderer_cb.ts","webpack://easyqueryUI/./src/widgets/renderers/columnsbar/aggrfunc_column_renderer_cb.ts","webpack://easyqueryUI/./src/widgets/renderers/columnsbar/editable_column_renderer_cb.ts","webpack://easyqueryUI/./src/widgets/columns_bar.ts","webpack://easyqueryUI/./src/widgets/renderers/sortingbar/column_renderer_sb.ts","webpack://easyqueryUI/./src/widgets/sorting_bar.ts","webpack://easyqueryUI/./src/types/qp_editable_part.ts","webpack://easyqueryUI/./src/widgets/renderers/querypanel/text_renderer.ts","webpack://easyqueryUI/./src/widgets/renderers/querypanel/condition_renderer.ts","webpack://easyqueryUI/./src/utils/dropdown.ts","webpack://easyqueryUI/./src/widgets/renderers/querypanel/condition_group_renderer.ts","webpack://easyqueryUI/./src/widgets/renderers/base_element_renderer.ts","webpack://easyqueryUI/./src/widgets/renderers/querypanel/expression_renderer.ts","webpack://easyqueryUI/./src/widgets/renderers/querypanel/input_expression_renderer.ts","webpack://easyqueryUI/./src/widgets/renderers/querypanel/list_expression_renderer.ts","webpack://easyqueryUI/./src/widgets/renderers/querypanel/attribute_expression_renderer.ts","webpack://easyqueryUI/./src/widgets/renderers/dropdown_renderer.ts","webpack://easyqueryUI/./src/widgets/renderers/querypanel/addrow_renderer.ts","webpack://easyqueryUI/./src/widgets/renderers/querypanel/operator_renderer.ts","webpack://easyqueryUI/./src/widgets/renderers/querypanel/datetime_expression_render.ts","webpack://easyqueryUI/./src/widgets/renderers/querypanel/subquery_expression_renderer.ts","webpack://easyqueryUI/./src/widgets/renderers/querypanel/bind_to_parent_column_expression_renderer.ts","webpack://easyqueryUI/./src/widgets/query_panel.ts","webpack://easyqueryUI/./src/widgets/filter_bar.ts","webpack://easyqueryUI/./src/widgets/html_content_widget.ts","webpack://easyqueryUI/./src/widgets/eq_result_html_grid.ts","webpack://easyqueryUI/./src/widgets/grid.ts","webpack://easyqueryUI/./src/widgets/easy_grid_widget.ts","webpack://easyqueryUI/./src/widgets/statement_panel.ts","webpack://easyqueryUI/./src/widgets/process_widget.ts","webpack://easyqueryUI/./src/widgets/manage_drilldown_widget.ts","webpack://easyqueryUI/./src/types/facet_type.ts","webpack://easyqueryUI/./src/dialog/export_dialog.ts","webpack://easyqueryUI/./src/facets/result_facet.ts","webpack://easyqueryUI/./src/widgets/charts/chart_type.ts","webpack://easyqueryUI/./src/widgets/charts/chart_widget.ts","webpack://easyqueryUI/./src/widgets/charts/chart_widget_chartjs.ts","webpack://easyqueryUI/./src/widgets/charts/chart_widget_google.ts","webpack://easyqueryUI/./src/facets/chart_facet.ts","webpack://easyqueryUI/./src/facets/pivot_table_facet.ts","webpack://easyqueryUI/./src/facets/datatable_facet.ts","webpack://easyqueryUI/./src/widgets/facet_container.ts","webpack://easyqueryUI/./src/widgets/result_facets_panel.ts","webpack://easyqueryUI/./src/widgets/export_widget.ts","webpack://easyqueryUI/./src/widgets/renderers/aggr_settings/aggr_settings_renderer.ts","webpack://easyqueryUI/./src/dialog/aggr_settings_dialog.ts","webpack://easyqueryUI/./src/widgets/aggregation_bar.ts","webpack://easyqueryUI/./src/widgets/locale_widget.ts","webpack://easyqueryUI/./src/widgets/queryname_widget.ts","webpack://easyqueryUI/./src/views/view.ts","webpack://easyqueryUI/./src/views/adv_search_view.ts","webpack://easyqueryUI/./src/views/data_filter_view.ts","webpack://easyqueryUI/./src/views/html_data_filter_view.ts","webpack://easyqueryUI/./src/views/report_view.ts","webpack://easyqueryUI/./src/i18n/text_resources.ts","webpack://easyqueryUI/./src/extensions.ts","webpack://easyqueryUI/./src/public_api.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"easyqueryCore\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"easyqueryUI\", [\"easyqueryCore\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"easyqueryUI\"] = factory(require(\"easyqueryCore\"));\n\telse\n\t\troot[\"easyqueryUI\"] = factory(root[\"easyqueryCore\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__388__) {\nreturn ","import { eqCssMobile } from './utils';\r\n\r\nexport namespace browserUtils {\r\n let _isFirefox: boolean = null;\r\n\r\n let _isIE: boolean = null;\r\n\r\n export function isIE(): boolean {\r\n return eval('/*@cc_on!@*/false || !!document.documentMode');\r\n }\r\n\r\n export function isFirefox(): boolean {\r\n if (_isFirefox === null) {\r\n const ua = navigator.userAgent;\r\n _isFirefox = ua.toLowerCase().indexOf('firefox') > -1;\r\n }\r\n\r\n return _isFirefox;\r\n }\r\n\r\n let _detectedIsMobileMode: boolean = false;\r\n let _isMobileMode: boolean = undefined;\r\n let detectIsMobileMode = () => {\r\n const oldValue = isMobileMode();\r\n\r\n _detectedIsMobileMode = window.matchMedia('only screen and (max-width: 840px)').matches \r\n || window.matchMedia('only screen and (max-height: 420px)').matches;\r\n\r\n const newValue = isMobileMode();\r\n\r\n if (newValue !== oldValue && mobileModeChangeHandler) {\r\n mobileModeChangeHandler(newValue);\r\n }\r\n } \r\n \r\n detectIsMobileMode();\r\n window.addEventListener('resize', () => detectIsMobileMode());\r\n \r\n export function isMobileMode(): boolean {\r\n if (_isMobileMode !== undefined) {\r\n return _isMobileMode;\r\n }\r\n else {\r\n return _detectedIsMobileMode;\r\n }\r\n }\r\n \r\n export function setIsMobileMode(value: boolean | undefined) {\r\n const oldValue = isMobileMode();\r\n\r\n _isMobileMode = value;\r\n\r\n const newValue = isMobileMode();\r\n\r\n if (newValue !== oldValue && mobileModeChangeHandler) {\r\n mobileModeChangeHandler(newValue);\r\n }\r\n } \r\n\r\n let mobileModeChangeHandler: (newValue: boolean) => void;\r\n export function onMobileModeChanged(callback: (newValue: boolean) => void) {\r\n mobileModeChangeHandler = callback;\r\n }\r\n\r\n export function getMobileCssClass(): string | null {\r\n return isMobileMode() ? eqCssMobile : null;\r\n }\r\n}","import { domel } from '@easydata/ui';\r\n\r\nexport function getViewportSize() {\r\n const width = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\r\n const height = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\r\n\r\n return {\r\n width: width,\r\n height: height\r\n }\r\n}\r\n\r\nexport function findHighestZIndex(elem: HTMLElement) {\r\n let highest = 0;\r\n while (elem !== null ) {\r\n const zindex = document.defaultView.getComputedStyle(elem, null)\r\n .getPropertyValue(\"z-index\");\r\n if (zindex != 'auto') {\r\n const numZIndex = parseInt(zindex);\r\n if (numZIndex > highest) {\r\n highest = numZIndex;\r\n }\r\n }\r\n elem = elem.parentElement;\r\n }\r\n \r\n\r\n return highest;\r\n}\r\n\r\n\r\n// simetimes setting focus in the main thread doesn't work correctly (in Firefox). So we need to 'hack' it.\r\nexport function safeFocus(element: HTMLElement) {\r\n setTimeout(_ => {\r\n if (element) {\r\n element.focus();\r\n }\r\n }, 100)\r\n}\r\n\r\nexport const eqCssPrefix = 'eqjs';\r\nexport const eqCssMobile = 'eqjs-mobile';\r\n\r\n\r\nexport function makeElementMaximizable(element: HTMLDivElement) {\r\n domel(element)\r\n .addClass(`${eqCssPrefix}-maximizable`)\r\n .addChild('div', b => {\r\n b.addClass(`${eqCssPrefix}-max-button`)\r\n .on('click', (e) => {\r\n e.preventDefault();\r\n\r\n domel(element)\r\n .toggleClass(`${eqCssPrefix}-maximized`);\r\n\r\n })\r\n })\r\n}","/** Represents the common types of the data. */\nexport var DataType;\n(function (DataType) {\n /** Unknown type value*/\n DataType[DataType[\"Unknown\"] = 0] = \"Unknown\";\n /** String value*/\n DataType[DataType[\"String\"] = 1] = \"String\";\n /** 8-bit integer value */\n DataType[DataType[\"Byte\"] = 2] = \"Byte\";\n /** 16-bit integer value */\n DataType[DataType[\"Word\"] = 3] = \"Word\";\n /** 32-bit integer value */\n DataType[DataType[\"Int32\"] = 4] = \"Int32\";\n /** 64-bit integer value */\n DataType[DataType[\"Int64\"] = 5] = \"Int64\";\n /** Boolean value */\n DataType[DataType[\"Bool\"] = 6] = \"Bool\";\n /** Floating-point numeric value */\n DataType[DataType[\"Float\"] = 7] = \"Float\";\n /** Money value */\n DataType[DataType[\"Currency\"] = 8] = \"Currency\";\n /** Binary-coded decimal value */\n DataType[DataType[\"BCD\"] = 9] = \"BCD\";\n /** Date value */\n DataType[DataType[\"Date\"] = 10] = \"Date\";\n /** Time value */\n DataType[DataType[\"Time\"] = 11] = \"Time\";\n /** Date and time value */\n DataType[DataType[\"DateTime\"] = 12] = \"DateTime\";\n /** Autoincrement 32-bit integer value */\n DataType[DataType[\"Autoinc\"] = 13] = \"Autoinc\";\n /** MEMO value (text with unlimited length) */\n DataType[DataType[\"Memo\"] = 14] = \"Memo\";\n /** BLOB value (any data with unlimited length) */\n DataType[DataType[\"Blob\"] = 15] = \"Blob\";\n /** Fixed character value */\n DataType[DataType[\"FixedChar\"] = 16] = \"FixedChar\";\n /** The unique identifier */\n DataType[DataType[\"Guid\"] = 17] = \"Guid\";\n /*-------- Spatial data types ----------*/\n /** Any geometry data */\n DataType[DataType[\"Geometry\"] = 18] = \"Geometry\";\n /** Any data that represents some geography objects</summary> */\n DataType[DataType[\"Geography\"] = 19] = \"Geography\";\n})(DataType || (DataType = {}));\n//# sourceMappingURL=data_type.js.map","export var EntityAttrKind;\n(function (EntityAttrKind) {\n EntityAttrKind[EntityAttrKind[\"Data\"] = 0] = \"Data\";\n EntityAttrKind[EntityAttrKind[\"Virtual\"] = 1] = \"Virtual\";\n EntityAttrKind[EntityAttrKind[\"Lookup\"] = 2] = \"Lookup\";\n})(EntityAttrKind || (EntityAttrKind = {}));\n//# sourceMappingURL=entity_attr_kind.js.map","export var EditorTag = {\n /** Unknown tag value */\n Unknown: \"Unknown\",\n /** Edit tag value */\n Edit: \"EDIT\",\n /** DateTime tag value */\n DateTime: \"DATETIME\",\n /** List tag value */\n List: \"LIST\",\n /** CustomList tag value */\n CustomList: \"CUSTOMLIST\",\n /** File tag value */\n File: \"FILE\"\n};\n//# sourceMappingURL=editor_tag.js.map","export var HttpMethod;\n(function (HttpMethod) {\n HttpMethod[\"Trace\"] = \"TRACE\";\n HttpMethod[\"Options\"] = \"OPTIONS\";\n HttpMethod[\"Get\"] = \"GET\";\n HttpMethod[\"Put\"] = \"PUT\";\n HttpMethod[\"Post\"] = \"POST\";\n HttpMethod[\"Delete\"] = \"DELETE\";\n})(HttpMethod || (HttpMethod = {}));\n//# sourceMappingURL=http_method.js.map","var HttpRequest = /** @class */ (function () {\n function HttpRequest(xhr, descriptor) {\n this.xhr = xhr;\n this.method = descriptor.method;\n this.url = descriptor.url;\n this.headers = descriptor.headers;\n this.queryParams = descriptor.queryParams;\n this.data = descriptor.data;\n }\n HttpRequest.prototype.setHeader = function (name, value) {\n this.headers[name] = value;\n };\n HttpRequest.prototype.setQueryParam = function (name, value) {\n this.queryParams[name] = value;\n };\n HttpRequest.prototype.getXMLHttpRequest = function () {\n return this.xhr;\n };\n HttpRequest.prototype.getResponseHeaders = function () {\n if (this.xhr.readyState == this.xhr.HEADERS_RECEIVED) {\n var headers = this.xhr.getAllResponseHeaders();\n var arr = headers.trim().split(/[\\r\\n]+/);\n // Create a map of header names to values\n var headerMap = {};\n for (var _i = 0, arr_1 = arr; _i < arr_1.length; _i++) {\n var line = arr_1[_i];\n var parts = line.split(': ');\n var header = parts.shift();\n var value = parts.join(': ');\n headerMap[header] = value;\n }\n return headerMap;\n }\n return {};\n };\n HttpRequest.prototype.open = function () {\n var _this = this;\n if (this.xhr.readyState !== this.xhr.UNSENT)\n return;\n var url = this.url;\n if (this.queryParams && Object.keys(this.queryParams).length > 0) {\n url += encodeURI('?' + Object.keys(this.queryParams)\n .map(function (param) { return param + '=' + _this.queryParams[param]; })\n .join('&'));\n }\n this.xhr.open(this.method, url, true);\n this.xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n for (var header in this.headers) {\n this.xhr.setRequestHeader(header, this.headers[header]);\n }\n };\n HttpRequest.prototype.abort = function () {\n this.xhr.abort();\n };\n return HttpRequest;\n}());\nexport { HttpRequest };\n//# sourceMappingURL=http_request.js.map","import { DataType } from '../types/data_type';\nimport { utils } from '../utils/utils';\n/**\n * Contains internatialization functionality.\n */\nexport var i18n;\n(function (i18n) {\n var englishUSLocaleSettings = {\n shortDateFormat: 'MM/dd/yyyy',\n longDateFormat: 'dd MMM, yyyy',\n editDateFormat: 'MM/dd/yyyy',\n shortTimeFormat: 'HH:mm',\n editTimeFormat: 'HH:mm',\n longTimeFormat: 'HH:mm:ss',\n shortMonthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n longMonthNames: ['January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'],\n shortWeekDayNames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n longWeekDayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n decimalSeparator: '.',\n currency: 'USD'\n };\n var defaultLocale = {\n localeId: 'en-US',\n englishName: 'English',\n displayName: 'English',\n texts: {\n ButtonOK: 'OK',\n ButtonCancel: 'Cancel',\n Yes: 'Yes',\n No: 'No',\n True: 'True',\n False: 'False'\n },\n settings: englishUSLocaleSettings\n };\n var allLocales = {\n 'en-US': defaultLocale\n };\n var currentLocale;\n var mappers = [];\n function mapInfo(info) {\n for (var _i = 0, mappers_1 = mappers; _i < mappers_1.length; _i++) {\n var mapper = mappers_1[_i];\n mapper(info);\n }\n }\n function addMapper(mapper) {\n mappers.push(mapper);\n }\n i18n.addMapper = addMapper;\n /**\n * Gets added locales with their names.\n * @returns The locales.\n */\n function getLocales() {\n var result = [];\n for (var locale in allLocales) {\n result.push({\n locale: locale,\n englishName: allLocales[locale].englishName,\n displayName: allLocales[locale].displayName\n });\n }\n return result.sort(function (a, b) {\n if (a.englishName > b.englishName) {\n return 1;\n }\n else if (a.englishName === b.englishName) {\n return 0;\n }\n return -1;\n });\n }\n i18n.getLocales = getLocales;\n /**\n * Gets the current locale ID.\n * @returns The locale.\n */\n function getCurrentLocale() {\n return currentLocale.localeId;\n }\n i18n.getCurrentLocale = getCurrentLocale;\n /**\n * Sets the curent locale.\n * @deprecated Use setCurrentLocale instead\n * @param l The locale.\n */\n function setLocale(l) {\n console.warn('This method is deprecated. Use setCurrentLocale instead');\n setCurrentLocale(l);\n }\n i18n.setLocale = setLocale;\n /**\n * Sets the curent locale.\n * @param localeId The locale.\n */\n function setCurrentLocale(localeId) {\n var newLocale = allLocales[localeId];\n if (newLocale) {\n utils.assignDeep(currentLocale, newLocale);\n }\n else {\n currentLocale.englishName = localeId;\n currentLocale.displayName = localeId;\n currentLocale.texts = utils.assignDeep({}, defaultLocale.texts);\n }\n currentLocale.localeId = localeId;\n }\n i18n.setCurrentLocale = setCurrentLocale;\n /**\n * Returns localized text by the key defined in parameter.\n * Here we get the text of the resource string assigned to CmdClickToAddCondition key:\n *\n ```\n const text = i18n.getText('CmdClickToAddCondition')\n ```\n * @param args The keys of the resource string.\n * @returns Text of the resource defined by key or null if the key is not found\n *\n */\n function getText() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var textsObj = currentLocale.texts;\n var resText = '';\n if (args && args.length) {\n var argLength = args.length;\n for (var i = 0; i < argLength; i++) {\n resText = textsObj[args[i]];\n if (typeof resText === 'object') {\n textsObj = resText;\n }\n else {\n break;\n }\n }\n }\n return resText;\n }\n i18n.getText = getText;\n function getLocaleSettings() {\n return currentLocale.settings;\n }\n i18n.getLocaleSettings = getLocaleSettings;\n function getOneLocaleSetting(key) {\n return currentLocale.settings[key];\n }\n i18n.getOneLocaleSetting = getOneLocaleSetting;\n function getShortMonthName(monthNum) {\n var settings = getLocaleSettings();\n if (monthNum > 0 && monthNum < 13) {\n return settings.shortMonthNames[monthNum - 1];\n }\n else {\n throw 'Wrong month number: ' + monthNum;\n }\n }\n i18n.getShortMonthName = getShortMonthName;\n function getLongMonthName(monthNum) {\n var settings = getLocaleSettings();\n if (monthNum > 0 && monthNum < 13) {\n return settings.longMonthNames[monthNum - 1];\n }\n else {\n throw 'Wrong month number: ' + monthNum;\n }\n }\n i18n.getLongMonthName = getLongMonthName;\n function getShortWeekDayName(dayNum) {\n var settings = getLocaleSettings();\n if (dayNum > 0 && dayNum < 8) {\n return settings.shortWeekDayNames.length >= dayNum\n ? settings.shortWeekDayNames[dayNum - 1]\n : dayNum.toString();\n }\n else {\n throw 'Wrong month number: ' + dayNum;\n }\n }\n i18n.getShortWeekDayName = getShortWeekDayName;\n function getLongWeekDayName(dayNum) {\n var settings = getLocaleSettings();\n if (dayNum > 0 && dayNum < 8) {\n return settings.longWeekDayNames.length >= dayNum\n ? settings.longWeekDayNames[dayNum - 1]\n : dayNum.toString();\n }\n else {\n throw 'Wrong month number: ' + dayNum;\n }\n }\n i18n.getLongWeekDayName = getLongWeekDayName;\n /**\n * Updates the locale settings (date/time formats, separators, etc) for the specified locale.\n * @param settingsToUpdate a LocaleSettings object\n */\n function updateLocaleSettings(settingsToUpdate) {\n if (!currentLocale.settings) {\n currentLocale.settings = utils.assignDeep({}, englishUSLocaleSettings);\n }\n currentLocale.settings = utils.assignDeep(currentLocale.settings, settingsToUpdate);\n }\n i18n.updateLocaleSettings = updateLocaleSettings;\n /**\n * Updates the texts for the current locale\n * @param texts A plain JS object that contains textual resources\n */\n function updateLocaleTexts(texts) {\n if (typeof texts !== 'object') {\n console.error('Wrong parameter type in updateLocaleTexts function call.' +\n 'The first parameter (localeId) is not necessary. Use updateLocaleTexts(texts) instead');\n return;\n }\n mapInfo({ localeId: currentLocale.localeId, texts: texts });\n utils.assignDeep(currentLocale.texts, texts);\n }\n i18n.updateLocaleTexts = updateLocaleTexts;\n function updateDefaultTexts(texts) {\n for (var localeId in allLocales) {\n var locale = allLocales[localeId];\n locale.texts = utils.assignDeep({}, texts, locale.texts);\n }\n currentLocale.texts = utils.assignDeep({}, texts, currentLocale.texts);\n }\n i18n.updateDefaultTexts = updateDefaultTexts;\n /**\n * Updates the information for the specified locale.\n * @param localeId The locale ID (like 'en', 'de', 'uk', etc).\n * If the locale does exist yet - it will be added\n * @param localeInfo a LocaleInfo object that contains the locale settings and textual resources\n */\n function updateLocaleInfo(localeId, localeData) {\n mapInfo(localeData);\n var localeInfoToUpdate = currentLocale;\n if (localeId) {\n if (!localeData.localeId) {\n localeData.localeId = localeId;\n }\n localeInfoToUpdate = allLocales[localeId];\n if (!localeInfoToUpdate) {\n localeInfoToUpdate = utils.assignDeep({}, defaultLocale);\n allLocales[localeId] = localeInfoToUpdate;\n }\n }\n utils.assignDeep(localeInfoToUpdate, localeData);\n }\n i18n.updateLocaleInfo = updateLocaleInfo;\n /**\n * Adds the locale.\n * @param localeId The locale ID (like 'en', 'de', 'uk', etc).\n * If the locale does exist yet - it will be created\n * @param localeInfo - a LocaleInfo object that contains the locale settings and textual resources\n */\n function addLocale(localeId, localeInfo) {\n updateLocaleInfo(localeId, localeInfo);\n }\n i18n.addLocale = addLocale;\n /**\n * Overwrites some locale settings (date/time formats) with the formats used in browser's current language\n */\n function determineSettingsByLocale(localeId) {\n var now = new Date(2020, 5, 7, 19, 34, 56, 88);\n var dateOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\n var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };\n var dateStr = now.toLocaleDateString(localeId, dateOptions);\n var timeStr = now.toLocaleTimeString(localeId, timeOptions);\n var dateFormat = dateStr\n .replace('07', 'dd')\n .replace('7', 'd')\n .replace('06', 'MM')\n .replace('6', 'M')\n .replace('2020', 'yyyy')\n .replace('20', 'yy');\n var timeFormat = timeStr\n .replace('19', 'HH')\n .replace('07', 'hh')\n .replace('7', 'h')\n .replace('34', 'mm')\n .replace('56', 'ss')\n .replace('PM', 'tt');\n if (!currentLocale.settings) {\n currentLocale.settings = {};\n }\n var localeSettings = {\n shortDateFormat: dateFormat,\n shortTimeFormat: timeFormat\n };\n updateLocaleSettings(localeSettings);\n }\n function loadBrowserLocaleSettings() {\n var lang = typeof navigator === 'object' ? navigator.language : undefined;\n determineSettingsByLocale(lang);\n }\n function resetLocales() {\n if (!currentLocale) {\n currentLocale = utils.assignDeep({}, defaultLocale);\n loadBrowserLocaleSettings();\n }\n }\n i18n.resetLocales = resetLocales;\n function dateTimeToStr(dateTime, dataType, format) {\n if (format) {\n if (format == 'd') {\n format = buildShortDateTimeFormat(DataType.Date);\n }\n else if (format == 'D') {\n format = buildLongDateTimeFormat(DataType.Date);\n }\n else if (format == 'f') {\n format = buildShortDateTimeFormat(DataType.DateTime);\n }\n else if (format == 'F') {\n format = buildLongDateTimeFormat(DataType.DateTime);\n }\n }\n else {\n format = buildShortDateTimeFormat(dataType);\n }\n return utils.dateTimeToStr(dateTime, format);\n }\n i18n.dateTimeToStr = dateTimeToStr;\n function buildShortDateTimeFormat(dataType) {\n var localeSettings = getLocaleSettings();\n var format;\n switch (dataType) {\n case DataType.Date:\n format = localeSettings.shortDateFormat;\n break;\n case DataType.Time:\n format = localeSettings.shortTimeFormat;\n break;\n default:\n format = localeSettings.shortDateFormat + ' ' + localeSettings.shortTimeFormat;\n break;\n }\n return format;\n }\n function buildLongDateTimeFormat(dataType) {\n var localeSettings = getLocaleSettings();\n var format;\n switch (dataType) {\n case DataType.Date:\n format = localeSettings.longDateFormat;\n break;\n case DataType.Time:\n format = localeSettings.longTimeFormat;\n break;\n default:\n format = localeSettings.longDateFormat + ' ' + localeSettings.longTimeFormat;\n break;\n }\n return format;\n }\n function numberToStr(number, format) {\n if (format && format.length > 0) {\n var type = format.charAt(0).toUpperCase();\n if (type === 'S') {\n return formatWithSequence(number, format.slice(1));\n }\n else if (['D', 'F', 'C'].indexOf(type) >= 0) {\n var locale = getCurrentLocale();\n return number.toLocaleString(locale, getNumberFormatOptions(format));\n }\n else {\n return convertWithMask(Math.trunc(number), format);\n }\n }\n var localeSettings = getLocaleSettings();\n return utils.numberToStr(number, localeSettings.decimalSeparator);\n }\n i18n.numberToStr = numberToStr;\n function booleanToStr(bool, format) {\n if (format && format.length > 0) {\n var type = format.charAt(0).toUpperCase();\n if (type === 'S') {\n var values = format.slice(1).split('|');\n if (values.length > 1) {\n var value = values[(bool) ? 1 : 0];\n return i18n.getText(value) || value;\n }\n }\n }\n return \"\".concat(bool);\n }\n i18n.booleanToStr = booleanToStr;\n var cachedSequenceFormats = {};\n function formatWithSequence(number, format) {\n if (!cachedSequenceFormats[format]) {\n // parse and save in cache format values \n var values_2 = format.split('|')\n .filter(function (v) { return v.length > 0; })\n .map(function (v) { return v.split('='); });\n cachedSequenceFormats[format] = {};\n if (values_2.length > 0) {\n if (values_2[0].length > 1) {\n for (var _i = 0, values_1 = values_2; _i < values_1.length; _i++) {\n var value = values_1[_i];\n cachedSequenceFormats[format][Number.parseInt(value[1])] = value[0];\n }\n }\n else {\n values_2.forEach(function (value, index) {\n cachedSequenceFormats[format][index] = value[0];\n });\n }\n }\n }\n var values = cachedSequenceFormats[format];\n if (values[number] !== undefined) {\n var value = values[number];\n return i18n.getText(value) || value;\n }\n return number.toString();\n }\n function convertWithMask(number, mask) {\n var value = number.toString();\n var result = '';\n var index = value.length - 1;\n for (var i = mask.length - 1; i >= 0; i--) {\n var ch = mask.charAt(i);\n if (ch === '#' || ch === '0') {\n if (index >= 0) {\n result += value.charAt(index);\n index--;\n }\n else {\n if (ch === '0') {\n result += 0;\n }\n }\n }\n else {\n result += ch;\n }\n }\n return result.split('').reverse().join('');\n }\n function getNumberFormatOptions(format) {\n var localeSettings = getLocaleSettings();\n var type = format[0].toUpperCase();\n var digits = (format.length > 1)\n ? Number.parseInt(format.slice(1))\n : type == 'D' ? 1 : 2;\n switch (type) {\n case 'D':\n return {\n style: 'decimal',\n useGrouping: false,\n minimumIntegerDigits: digits\n };\n case 'C':\n return {\n style: 'currency',\n currency: localeSettings.currency,\n minimumFractionDigits: digits\n };\n default:\n return {\n style: 'decimal',\n minimumFractionDigits: digits,\n maximumFractionDigits: digits\n };\n }\n }\n})(i18n || (i18n = {}));\n//# sourceMappingURL=i18n.js.map","import { DataType } from '../types/data_type';\nimport { i18n } from '../i18n/i18n';\nexport var utils;\n(function (utils) {\n function getAllDataTypes() {\n return Object.values(DataType).filter(function (item) { return typeof item === \"number\"; });\n }\n utils.getAllDataTypes = getAllDataTypes;\n function getDateDataTypes() {\n return [DataType.Time, DataType.Date, DataType.DateTime];\n }\n utils.getDateDataTypes = getDateDataTypes;\n function getStringDataTypes() {\n return [DataType.String, DataType.Memo, DataType.FixedChar];\n }\n utils.getStringDataTypes = getStringDataTypes;\n var _numericTypes = [DataType.Byte, DataType.Word, DataType.Int32,\n DataType.Int64, DataType.Float, DataType.Currency, DataType.Autoinc];\n function getNumericDataTypes() {\n return _numericTypes;\n }\n utils.getNumericDataTypes = getNumericDataTypes;\n var _intTypes = [DataType.Byte, DataType.Word, DataType.Int32, DataType.Int64, DataType.Autoinc];\n //-------------- object functions -------------------\n /**\n * Copy the content of all objests passed in `args` parameters into `target`\n * and returns the result\n * NB: This function copies only the first level properties.\n * For a deep copy please use `assignDeep`\n * @param target - the target object\n * @param args - an array of the source objects\n */\n function assign(target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i++) {\n var source = args[i];\n if (source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n }\n utils.assign = assign;\n /**\n * Copy the content of all objests passed in `args` parameters into `target`\n * and returns the result\n * NB: This function make a deep copy -\n * so `assignDeep` will be called recursively for all object properties\n * on the first level.\n * @param target - the target object\n * @param sources - an array of the source objects\n */\n function assignDeep(target) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n return assignDeepCore(new WeakMap(), target, sources);\n }\n utils.assignDeep = assignDeep;\n function assignDeepCore(hashSet, target, sources) {\n if (!target) {\n target = {};\n }\n for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) {\n var source = sources_1[_i];\n if (source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n var sourceVal = source[key];\n if (sourceVal !== null && typeof sourceVal === 'object') {\n if (hashSet.has(sourceVal)) {\n target[key] = hashSet.get(sourceVal);\n }\n else {\n if (Array.isArray(sourceVal)) {\n target[key] = createArrayFrom(sourceVal);\n hashSet.set(sourceVal, target[key]);\n }\n else {\n if (typeof target[key] == 'undefined' || target[key] == null) {\n target[key] = Object.create(Object.getPrototypeOf(sourceVal));\n }\n hashSet.set(sourceVal, target[key]);\n assignDeepCore(hashSet, target[key], [sourceVal]);\n }\n }\n }\n else {\n target[key] = sourceVal;\n }\n }\n }\n }\n }\n return target;\n }\n function getIfDefined(value, defaultValue) {\n return (typeof value !== 'undefined') ? value : defaultValue;\n }\n utils.getIfDefined = getIfDefined;\n function IsDefinedAndNotNull(value) {\n return typeof value !== 'undefined' && value !== null;\n }\n utils.IsDefinedAndNotNull = IsDefinedAndNotNull;\n function copyArrayTo(collection1, collection2) {\n var len1 = collection1.length;\n var len2 = collection2.length;\n for (var i = 0; i < len1 && i < len2; i++) {\n collection2[i] = collection1[i];\n }\n }\n utils.copyArrayTo = copyArrayTo;\n function createArrayFrom(collection) {\n var result = [];\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var item = collection_1[_i];\n result.push(item);\n }\n return result;\n }\n utils.createArrayFrom = createArrayFrom;\n /**\n * Searches an array of the objects which implement ItemWithId by ID\n * Returs the found object or null.\n * @param array\n * @param id\n */\n function findItemById(array, id) {\n var arrLength = array.length;\n for (var idx = 0; idx < arrLength; idx++) {\n if (array[idx].id === id)\n return array[idx];\n }\n return null;\n }\n utils.findItemById = findItemById;\n function findItemIndexById(array, id) {\n var arrLength = array.length;\n for (var idx = 0; idx < arrLength; idx++) {\n if (array[idx].id === id)\n return idx;\n }\n return -1;\n }\n utils.findItemIndexById = findItemIndexById;\n /**\n * Searches an array of the objects which implement ItemWithId by ID\n * Returs the index of the found element, or -1 if nothing was found.\n * @param array\n * @param id\n */\n function indexOfArrayItem(arr, item) {\n if (arr.indexOf) {\n return arr.indexOf(item);\n }\n else {\n var len = arr.length;\n for (var i = 0; i < len; i++) {\n if (item == arr[i]) {\n return i;\n }\n }\n return -1;\n }\n }\n utils.indexOfArrayItem = indexOfArrayItem;\n /**\n * Moves an item in some array to a new position\n * @param array\n * @param index1\n * @param index2\n */\n function moveArrayItem(array, index1, index2) {\n if (index1 >= array.length) {\n throw 'Index out of bounds: ' + index1;\n }\n if (index2 >= array.length) {\n index2 = array.length - 1;\n }\n var item = array.splice(index1, 1)[0];\n array.splice(index2, 0, item);\n }\n utils.moveArrayItem = moveArrayItem;\n /**\n * Searches for a particular item in the array are removes that item if found.\n * @param arr\n * @param value\n */\n function removeArrayItem(arr, value) {\n var index = arr.indexOf(value);\n if (index != -1) {\n return arr.splice(index, 1)[0];\n }\n }\n utils.removeArrayItem = removeArrayItem;\n function insertArrayItem(arr, index, value) {\n arr.splice(index, 0, value);\n }\n utils.insertArrayItem = insertArrayItem;\n function fillArray(arr, value, start, end) {\n if (start === void 0) { start = 0; }\n var len = arr.length >>> 0;\n var relativeStart = start >> 0;\n var k = relativeStart < 0 ?\n Math.max(len + relativeStart, 0) :\n Math.min(relativeStart, len);\n var relativeEnd = end === undefined ?\n len : end >> 0;\n var final = relativeEnd < 0 ?\n Math.max(len + relativeEnd, 0) :\n Math.min(relativeEnd, len);\n while (k < final) {\n arr[k] = value;\n k++;\n }\n return arr;\n }\n utils.fillArray = fillArray;\n //------------ DOM utils ------------\n /**\n * Calculates the shift on which we need to move our element horizontally\n * to find current window\n * @param absLeft\n * @param width\n */\n function shiftToFitWindow(absLeft, width) {\n var body = document.getElementsByTagName('body')[0];\n var winWidth = window.innerWidth || document.documentElement.clientWidth || body.clientWidth;\n var absRight = absLeft + width;\n var shift = 0;\n if (absRight > winWidth) {\n shift = winWidth - absRight - 10;\n if (absLeft + shift < 0) {\n shift = 10 - absLeft;\n }\n }\n return shift;\n }\n utils.shiftToFitWindow = shiftToFitWindow;\n /**\n * Returns `true` if the value passed in the parameter is an object\n * @param val\n */\n function isObject(val) {\n if (val === null) {\n return false;\n }\n return ((typeof val === 'function') || (typeof val === 'object'));\n }\n utils.isObject = isObject;\n /**\n * Returns `true` if the `DataType` value passed in the parameter\n * represents some numeric type\n * @param dtype\n */\n function isNumericType(dtype) {\n var index = _numericTypes.indexOf(dtype);\n return (index >= 0);\n }\n utils.isNumericType = isNumericType;\n /**\n * Returns `true` if the `DataType` value passed in the parameter\n * represents some numeric type\n * @param dtype\n */\n function isIntType(dtype) {\n var index = _intTypes.indexOf(dtype);\n return (index >= 0);\n }\n utils.isIntType = isIntType;\n /**\n * Returns `true` if the value passed in the parameter is an a numeric value\n * @param val\n */\n function isNumeric(val) {\n return !isNaN(parseFloat(val)) && isFinite(val);\n }\n utils.isNumeric = isNumeric;\n /**\n * Returns `true` if two data types passed in parameters\n * are compatible - so it's safe to copy the values between\n * two expressions with these two types\n * @param type1\n * @param type2\n */\n function areCompatibleDataTypes(type1, type2) {\n return typeof type1 == \"undefined\" || typeof type2 == \"undefined\" || type1 == DataType.Unknown || type2 == DataType.Unknown\n || (type1 == type2) || (type1 == DataType.Date && type2 == DataType.DateTime)\n || (type1 == DataType.DateTime && type2 == DataType.Date);\n }\n utils.areCompatibleDataTypes = areCompatibleDataTypes;\n /**\n * Returns `true` if the property with named `propName`\n * in the object `obj` has some value\n * @param obj\n * @param propName\n */\n function isPropSet(obj, propName) {\n return obj[propName] || obj[propName.toLowerCase()] || obj[propName.toUpperCase()];\n }\n utils.isPropSet = isPropSet;\n //-------------- ID generator -----------\n var prefixIdLen = 4;\n var symbols = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n var magicTicks = 636712160627685350;\n /**\n * Generates an unique ID\n */\n function generateId(prefix) {\n if (!prefix) {\n prefix = 'easy';\n }\n var prfx = (prefix.length > prefixIdLen) ? squeezeMoniker(prefix, prefixIdLen) : prefix;\n if (prfx && prfx.length > 0) {\n prfx += \"-\";\n }\n //adding 3 random symbols\n var randCharPart = symbols[getRandomInt(0, symbols.length)] +\n symbols[getRandomInt(0, symbols.length)] +\n symbols[getRandomInt(0, symbols.length)];\n var randInt = getRandomInt(0, 10000);\n //generating main ID part \n //it's a 36-base representation of some random number based on current value of ticks\n var ticksNum36 = intToNumBase(getNowTicks() - magicTicks - randInt);\n return prfx + randCharPart + ticksNum36;\n }\n utils.generateId = generateId;\n function intToNumBase(value, targetBase) {\n if (targetBase === void 0) { targetBase = 36; }\n var buffer = '';\n var rest = value;\n do {\n buffer = symbols[rest % targetBase] + buffer;\n rest = Math.floor(rest /= targetBase);\n } while (rest > 0);\n return buffer;\n }\n function squeezeMoniker(str, maxlen) {\n var parts = str.split('-');\n var pml = 1;\n var ptt = maxlen;\n if (parts.length < maxlen) {\n pml = maxlen / parts.length;\n ptt = parts.length;\n }\n var result = \"\";\n for (var i = 0; i < ptt; i++) {\n result += squeeze(parts[i], pml);\n }\n return result;\n }\n function squeeze(str, maxlen) {\n var len = str.length;\n if (len > maxlen) {\n var step = len / maxlen;\n var result = \"\";\n result += str[0];\n var nextIndex = step;\n var ch = void 0;\n for (var i = 1; i < len; i++) {\n ch = str[i];\n if (i + 1 > nextIndex) {\n result += ch;\n nextIndex += step;\n }\n }\n return result;\n }\n else {\n return str;\n }\n }\n function replaceAtString(str, index, replacement) {\n return str.substring(0, index) + replacement + str.substring(index + replacement.length);\n }\n function getRandomInt(min, max) {\n return Math.floor(Math.random() * (max - min)) + min;\n }\n function getNowTicks() {\n return (621355968e9 + (new Date()).getTime() * 1e4);\n }\n function safeParseInt(str) {\n var res = parseInt(str);\n if (isNaN(res))\n throw \"\\\"\".concat(str, \"\\\" is not a valid number\");\n return res;\n }\n function getDaysInMonth(month, year) {\n return new Date(year, month + 1, 0).getDate();\n }\n // ------------- date/time functions -------------------\n // TO DO: improve to process all datetime cases\n function strToDateTime(value, format) {\n if (!value || value.length == 0)\n return new Date();\n var normalizedValue = value.replace(/[^a-zA-Z0-9_]/g, '-');\n var normalizedFormat = format.replace(/[^a-zA-Z0-9_]/g, '-');\n var formatItems = normalizedFormat.split('-');\n var dateItems = normalizedValue.split('-');\n var monthIndex = formatItems.indexOf(\"MM\");\n var dayIndex = formatItems.indexOf(\"dd\");\n var yearIndex = formatItems.indexOf(\"yyyy\");\n var hourIndex = formatItems.indexOf(\"HH\");\n var minutesIndex = formatItems.indexOf(\"mm\");\n var secondsIndex = formatItems.indexOf(\"ss\");\n var today = new Date();\n try {\n var year = yearIndex > -1 && yearIndex < dateItems.length\n ? safeParseInt(dateItems[yearIndex])\n : today.getFullYear();\n var month = monthIndex > -1 && monthIndex < dateItems.length\n ? safeParseInt(dateItems[monthIndex]) - 1\n : today.getMonth() - 1;\n if (month > 11)\n throw '';\n var day = dayIndex > -1 && dayIndex < dateItems.length\n ? safeParseInt(dateItems[dayIndex])\n : today.getDate();\n if (day > getDaysInMonth(month, year))\n throw '';\n var hour = hourIndex > -1 && hourIndex < dateItems.length\n ? safeParseInt(dateItems[hourIndex])\n : 0;\n if (hour > 23)\n throw '';\n var minute = minutesIndex > -1 && minutesIndex < dateItems.length\n ? safeParseInt(dateItems[minutesIndex])\n : 0;\n if (minute > 59)\n throw '';\n var second = secondsIndex > -1 && secondsIndex < dateItems.length\n ? safeParseInt(dateItems[secondsIndex])\n : 0;\n if (second > 59)\n throw '';\n return new Date(year, month, day, hour, minute, second);\n }\n catch (_a) {\n throw \"\".concat(value, \" is not a valid date.\");\n }\n }\n utils.strToDateTime = strToDateTime;\n function strToTime(str) {\n var timeItems = str.split(':');\n try {\n var hour = timeItems.length > 0 ? safeParseInt(timeItems[0]) : 0;\n if (hour > 23)\n throw '';\n var minute = timeItems.length > 1 ? safeParseInt(timeItems[1]) : 0;\n if (minute > 59)\n throw '';\n var second = timeItems.length > 1 ? safeParseInt(timeItems[1]) : 0;\n if (second > 59)\n throw '';\n return new Date(0, 0, 0, hour, minute, second);\n }\n catch (_a) {\n throw \"\".concat(str, \" is not a valid time.\");\n }\n }\n utils.strToTime = strToTime;\n var DT_FORMAT_RGEX = /\\[([^\\]]+)]|y{2,4}|M{1,4}|d{1,2}|H{1,2}|h{1,2}|m{2}|s{2}|t{2}/g;\n /**\n * Returns string representation of the date/time value according to the custom format (second parameter)\n * The format is compatible with the one used in .NET: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings\n * @param date\n * @param format\n */\n function dateTimeToStr(date, format) {\n var year = date.getFullYear();\n var yearStr = year.toString();\n var month = date.getMonth() + 1;\n var day = date.getDate();\n var hour = date.getHours();\n var minute = date.getMinutes();\n var second = date.getSeconds();\n var hour12 = hour % 12 || 12; //the remainder of the division by 12. Or 12 if it's 0\n var isPm = hour > 11;\n var matches = {\n yyyy: yearStr,\n yy: yearStr.substring(yearStr.length - 2),\n MMMM: i18n.getLongMonthName(month),\n MMM: i18n.getShortMonthName(month),\n MM: (month < 10) ? '0' + month : month.toString(),\n M: month.toString(),\n dd: (day < 10) ? '0' + day : day.toString(),\n d: day.toString(),\n HH: (hour < 10) ? '0' + hour : hour.toString(),\n H: hour.toString(),\n hh: (hour12 < 10) ? '0' + hour12 : hour12.toString(),\n h: hour12.toString(),\n tt: isPm ? 'PM' : 'AM',\n mm: (minute < 10) ? '0' + minute : minute.toString(),\n ss: (second < 10) ? '0' + second : second.toString()\n };\n return format.replace(DT_FORMAT_RGEX, function (match, $1) {\n return $1 || matches[match];\n });\n }\n utils.dateTimeToStr = dateTimeToStr;\n /**\n * Converts a numeric value to the string taking into the account the decimal separator\n * @param value - the number to convert\n * @param decimalSeparator - the symbol that represents decimal separator. If not specified the function gets the one from the current locale settings.\n */\n function numberToStr(number, decimalSeparator) {\n decimalSeparator = decimalSeparator || i18n.getLocaleSettings().decimalSeparator;\n return number.toString().replace('.', decimalSeparator);\n }\n utils.numberToStr = numberToStr;\n})(utils || (utils = {}));\n//# sourceMappingURL=utils.js.map","var HttpActionResult = /** @class */ (function () {\n function HttpActionResult(request, promise) {\n this.request = request;\n this.promise = promise;\n }\n HttpActionResult.prototype.getPromise = function () {\n return this.promise;\n };\n HttpActionResult.prototype.getRequest = function () {\n return this.request;\n };\n HttpActionResult.prototype.then = function (onfulfilled, onrejected) {\n return this.promise.then(onfulfilled, onrejected);\n };\n HttpActionResult.prototype.catch = function (onrejected) {\n return this.promise.catch(onrejected);\n };\n HttpActionResult.prototype.finally = function (onfinally) {\n return this.promise.finally(onfinally);\n };\n return HttpActionResult;\n}());\nexport { HttpActionResult };\n//# sourceMappingURL=http_action_result.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { utils } from '../utils/utils';\nimport { HttpActionResult } from './http_action_result';\nimport { HttpMethod } from './http_method';\nimport { HttpRequest } from './http_request';\nvar HttpResponseError = /** @class */ (function (_super) {\n __extends(HttpResponseError, _super);\n function HttpResponseError(status, message) {\n var _this = _super.call(this, message) || this;\n _this.status = status;\n return _this;\n }\n return HttpResponseError;\n}(Error));\nexport { HttpResponseError };\nvar HttpClient = /** @class */ (function () {\n function HttpClient() {\n this.defaultHeaders = {};\n this.customPayload = undefined;\n }\n Object.defineProperty(HttpClient.prototype, \"responseBody\", {\n /** Gets the response body for the latest request */\n get: function () {\n return this._responseBody;\n },\n enumerable: false,\n configurable: true\n });\n HttpClient.prototype.get = function (url, options) {\n return this.send(HttpMethod.Get, url, null, options);\n };\n HttpClient.prototype.post = function (url, data, options) {\n return this.send(HttpMethod.Post, url, data, options);\n };\n HttpClient.prototype.put = function (url, data, options) {\n return this.send(HttpMethod.Put, url, data, options);\n };\n HttpClient.prototype.delete = function (url, data, options) {\n return this.send(HttpMethod.Delete, url, data, options);\n };\n HttpClient.prototype.send = function (method, url, data, options) {\n var _this = this;\n options = options || {};\n var dataType = options.dataType || 'json';\n var contentType = options.contentType || (dataType !== 'form-data')\n ? 'application/json'\n : null;\n if (data && dataType != 'form-data' && this.customPayload) {\n data.data = utils.assignDeep(data.data || {}, this.customPayload);\n }\n var XHR = ('onload' in new XMLHttpRequest())\n ? XMLHttpRequest\n : window[\"XDomainRequest\"]; //IE support\n var xhr = new XHR();\n var desc = {\n method: method,\n url: url,\n headers: __assign(__assign({}, this.defaultHeaders), options.headers || {}),\n queryParams: options.queryParams || {},\n data: data\n };\n if (contentType)\n desc.headers['Content-Type'] = contentType;\n var request = new HttpRequest(xhr, desc);\n if (this.beforeEachRequest) {\n console.warn(\"HttpClient: 'beforeEachRequest' is deprecated and will be removed in future updates.\\n Use 'onRequest' instead\");\n this.beforeEachRequest(request);\n }\n if (this.onRequest) {\n this.onRequest(request);\n }\n var dataToSend = (request.data && typeof request.data !== 'string'\n && dataType == 'json')\n ? JSON.stringify(request.data)\n : request.data;\n request.open();\n return new HttpActionResult(request, new Promise(function (resolve, reject) {\n if (options.responseType)\n xhr.responseType = options.responseType;\n xhr.onerror = function (error) {\n reject(new HttpResponseError(xhr.status, xhr.responseText));\n };\n xhr.onreadystatechange = function () {\n if (xhr.readyState != 4)\n return; //we process only the state change to DONE(4)\n var responseContentType = xhr.getResponseHeader('Content-Type') || '';\n var status = xhr.status;\n if (status === 0) {\n reject(new HttpResponseError(status, \"Network error or the request was aborted\"));\n }\n else if (status >= 200 && status < 400) {\n //Success\n var responseObj = (xhr.responseType === 'arraybuffer' || xhr.responseType === 'blob')\n ? xhr.response\n : (responseContentType.indexOf('application/json') == 0\n ? JSON.parse(xhr.responseText)\n : xhr.responseText);\n _this._responseBody = responseObj;\n if (_this.onResponse) {\n _this.onResponse(xhr);\n }\n resolve(responseObj);\n }\n else {\n //Error\n var rtPromise = (xhr.responseType === 'arraybuffer' || xhr.responseType === 'blob')\n ? HttpClient.decodeArrayBuffer(xhr.response)\n : Promise.resolve(xhr.responseText);\n rtPromise.then(function (responseText) {\n var responseObj = (responseContentType.indexOf('application/json') == 0)\n ? JSON.parse(responseText)\n : responseText;\n _this._responseBody = responseObj;\n var message = responseObj.message ||\n (status == 404\n ? \"No such endpoint: \".concat(url)\n : responseObj);\n reject(new HttpResponseError(status, message));\n });\n }\n };\n xhr.send(dataToSend);\n }));\n };\n HttpClient.decodeArrayBuffer = function (uintArray) {\n var reader = new FileReader();\n return new Promise(function (resolve) {\n reader.onloadend = function () {\n if (reader.readyState == FileReader.DONE) {\n resolve(reader.result);\n }\n };\n reader.readAsText(new Blob([uintArray]));\n });\n };\n return HttpClient;\n}());\nexport { HttpClient };\n//# sourceMappingURL=http_client.js.map","import { DataType } from '../types/data_type';\nimport { EntityAttrKind } from '../types/entity_attr_kind';\nimport { utils } from '../utils/utils';\n/**\n * Represents one entity.\n */\nvar MetaEntity = /** @class */ (function () {\n /** The default constructor. */\n function MetaEntity(parent) {\n /** Returns false if this entity is read-only */\n this.isEditable = true;\n this.name = \"\";\n this.caption = \"\";\n this.description = \"\";\n this.parent = parent;\n this.attributes = new Array();\n this.subEntities = new Array();\n }\n /**\n * Loads entity from its JSON representation object.\n * @param model The Data Model.\n * @param dto The JSON representation object.\n */\n MetaEntity.prototype.loadFromData = function (model, dto) {\n if (dto) {\n this.id = dto.id;\n this.name = dto.name;\n this.captionPlural = dto.namePlur;\n this.caption = dto.name;\n this.description = dto.desc;\n if (typeof (dto.ied) !== 'undefined')\n this.isEditable = dto.ied;\n this.subEntities = new Array();\n if (dto.ents) {\n for (var i = 0; i < dto.ents.length; i++) {\n var newEntity = model.createEntity(this);\n newEntity.loadFromData(model, dto.ents[i]);\n this.subEntities.push(newEntity);\n }\n }\n this.attributes = new Array();\n if (dto.attrs) {\n for (var i = 0; i < dto.attrs.length; i++) {\n var newAttr = model.createEntityAttr(this);\n newAttr.loadFromData(model, dto.attrs[i]);\n this.attributes.push(newAttr);\n }\n }\n }\n };\n MetaEntity.prototype.scan = function (processAttribute, processEntity) {\n var opts = { stop: false };\n var internalProcessEntity = function (entity) {\n if (processEntity)\n processEntity(entity, opts);\n if (entity.attributes) {\n var attrCount = entity.attributes.length;\n for (var i = 0; (i < attrCount) && !opts.stop; i++) {\n var attr = entity.attributes[i];\n if (processAttribute) {\n processAttribute(attr, opts);\n }\n if (opts.stop)\n return;\n }\n }\n if (entity.subEntities) {\n var subEntityCount = entity.subEntities.length;\n for (var i = 0; (i < subEntityCount) && !opts.stop; i++) {\n internalProcessEntity(entity.subEntities[i]);\n }\n }\n };\n internalProcessEntity(this);\n };\n MetaEntity.prototype.getFirstPrimaryAttr = function () {\n return this.getPrimaryAttrs()[0];\n };\n MetaEntity.prototype.getPrimaryAttrs = function () {\n return this.attributes.filter(function (attr) { return attr.isPrimaryKey; });\n };\n return MetaEntity;\n}());\nexport { MetaEntity };\nvar MetaEntityAttr = /** @class */ (function () {\n /** The default constructor. */\n function MetaEntityAttr(entity) {\n this.id = \"\";\n this.caption = \"{Unrecognized attribute}\";\n this.dataType = DataType.String;\n this.size = 0;\n this.isPrimaryKey = false;\n this.isForeignKey = false;\n this.isNullable = true;\n this.showOnView = true;\n this.isEditable = true;\n this.showOnCreate = true;\n this.showOnEdit = true;\n this.showInLookup = false;\n this.lookupAttr = \"\";\n this.expr = \"\";\n this.entity = entity;\n this.kind = EntityAttrKind.Data;\n }\n /**\n * Loads entity attribute from JSON representation object.\n * @param model The Data Model.\n * @param dto The JSON representation object.\n */\n MetaEntityAttr.prototype.loadFromData = function (model, dto) {\n if (dto) {\n this.id = dto.id;\n this.description = dto.desc;\n this.caption = dto.cptn;\n this.dataType = dto.dtype;\n this.isPrimaryKey = dto.ipk;\n this.isForeignKey = dto.ifk;\n this.size = dto.size;\n this.lookupAttr = dto.lattr;\n this.lookupEntity = dto.lent;\n this.dataAttr = dto.dattr;\n this.lookupDataAttr = dto.ldattr;\n var isDataType = utils.getDateDataTypes().indexOf(this.dataType);\n this.defaultValue = dto.defVal && isDataType ? new Date(dto.defVal) : dto.defVal;\n this.isNullable = utils.getIfDefined(dto.nul, this.isNullable);\n this.isEditable = utils.getIfDefined(dto.ied, this.isEditable);\n this.showOnView = utils.getIfDefined(dto.ivis || dto.sov, this.showOnView);\n this.showOnCreate = utils.getIfDefined(dto.soc, this.showOnCreate);\n this.showOnEdit = utils.getIfDefined(dto.soe, this.showOnEdit);\n this.showInLookup = utils.getIfDefined(dto.sil, this.showInLookup);\n this.kind = dto.kind;\n this.displayFormat = dto.dfmt;\n if (dto.udata)\n this.userData = dto.udata;\n if (dto.edtr) {\n this.defaultEditor = model.getEditorById(dto.edtr) || model.createValueEditor();\n }\n }\n };\n return MetaEntityAttr;\n}());\nexport { MetaEntityAttr };\n//# sourceMappingURL=meta_entity.js.map","import { EditorTag } from '../types/editor_tag';\nimport { DataType } from '../types/data_type';\n/**\n * Represents a value editor.\n */\nvar ValueEditor = /** @class */ (function () {\n /** The default constructor. */\n function ValueEditor() {\n this.id = \"\";\n this.tag = EditorTag.Unknown;\n this.resType = DataType.Unknown;\n this.defValue = \"\";\n }\n /**\n * Loads value editor from its JSON representation object.\n * @param data The JSON representation object.\n */\n ValueEditor.prototype.loadFromData = function (data) {\n if (data) {\n this.id = data.id;\n this.tag = data.tag;\n this.defValue = data.defval;\n this.resType = data.rtype;\n this.accept = data.accept;\n this.multiline = data.multiline;\n if (data.subType) {\n this.resType = data.subType;\n }\n if (data.name) {\n this.name = data.name;\n }\n if (data.values) {\n this.values = data.values;\n }\n }\n };\n ValueEditor.prototype.getValueText = function (value) {\n var result = \"\";\n if (!this.values)\n return result;\n if (Array.isArray(value)) {\n for (var _i = 0, _a = this.values; _i < _a.length; _i++) {\n var item = _a[_i];\n if (value.indexOf(item.id) >= 0) {\n result += item.text + ',';\n }\n }\n }\n else {\n for (var _b = 0, _c = this.values; _b < _c.length; _b++) {\n var item = _c[_b];\n if (item.id === value) {\n result += item.text + ',';\n }\n }\n }\n if (result) {\n result = result.substring(0, result.length - 1);\n }\n return result;\n };\n return ValueEditor;\n}());\nexport { ValueEditor };\n//# sourceMappingURL=value_editor.js.map","import { i18n } from '../i18n/i18n';\nimport { utils } from '../utils/utils';\nimport { EditorTag } from '../types/editor_tag';\nimport { DataType } from '../types/data_type';\nimport { MetaEntity, MetaEntityAttr } from './meta_entity';\nimport { ValueEditor } from './value_editor';\n/**\n * Represents a data model\n */\nvar MetaData = /** @class */ (function () {\n /** The default constructor. */\n function MetaData() {\n this.mainEntity = null;\n this.id = '__none';\n this.name = 'Empty model';\n this.rootEntity = this.createEntity();\n this.displayFormats = new Map();\n }\n /**\n * Gets the main entity of model\n * @return The main entity.\n */\n MetaData.prototype.getMainEntity = function () {\n return this.mainEntity;\n };\n MetaData.prototype.createEntity = function (parent) {\n return new MetaEntity(parent);\n };\n MetaData.prototype.createEntityAttr = function (parent) {\n return new MetaEntityAttr(parent);\n };\n MetaData.prototype.createValueEditor = function () {\n return new ValueEditor();\n };\n /**\n * Loads data model from JSON.\n * @param stringJson The JSON string.\n */\n MetaData.prototype.loadFromJSON = function (stringJson) {\n var model = JSON.parse(stringJson);\n this.loadFromData(model);\n };\n /**\n * Loads data model from its JSON representation object.\n * @param data The JSON representation object.\n */\n MetaData.prototype.loadFromData = function (data) {\n this.id = data.id;\n this.name = data.name;\n this.version = data.vers;\n //Editors\n this.editors = new Array();\n if (data.editors) {\n for (var i = 0; i < data.editors.length; i++) {\n var newEditor = this.createValueEditor();\n newEditor.loadFromData(data.editors[i]);\n this.editors.push(newEditor);\n }\n }\n //rootEntity\n this.rootEntity.loadFromData(this, data.entroot);\n //DataFormats\n this.displayFormats = new Map();\n if (data.displayFormats) {\n for (var dtypeStr in data.displayFormats) {\n var dtype = DataType[dtypeStr];\n var formats = data.displayFormats[dtypeStr] || new Array();\n this.displayFormats.set(dtype, formats);\n }\n }\n };\n /**\n * Gets the display formats.\n * @returns The display formats.\n */\n MetaData.prototype.getDisplayFormats = function () {\n return this.displayFormats;\n };\n /**\n * Gets the display formats for type\n * @param type The type\n * @returns An array of display formats\n */\n MetaData.prototype.getDisplayFormatsForType = function (type) {\n if (this.displayFormats.has(type)) {\n return this.displayFormats.get(type);\n }\n return [];\n };\n /**\n * Gets the default display format for the provided type\n * @param type The type\n * @returns The default type format or null\n */\n MetaData.prototype.getDefaultFormat = function (type) {\n if (this.displayFormats.has(type)) {\n return this.displayFormats.get(type).filter(function (f) { return f.isdef; })[0];\n }\n return null;\n };\n /**\n * Sets data to data model.\n * @param model Its JSON representation object or JSON string.\n */\n MetaData.prototype.setData = function (model) {\n if (typeof model === 'string') {\n this.loadFromJSON(model);\n }\n else {\n this.loadFromData(model);\n }\n };\n /**\n * Checks wether the data model is empty.\n * @returns `true` if the data model is empty, otherwise `false`.\n */\n MetaData.prototype.isEmpty = function () {\n return this.rootEntity.subEntities.length === 0 && this.rootEntity.attributes.length === 0;\n };\n /**\n * Gets ID of the data model.\n * @returns The ID.\n */\n MetaData.prototype.getId = function () {\n return this.id;\n };\n /**\n * Gets name of the data model.\n * @returns The name.\n */\n MetaData.prototype.getName = function () {\n return this.name;\n };\n /**\n * Gets root entity of the data model.\n * @returns The root entity.\n */\n MetaData.prototype.getRootEntity = function () {\n return this.rootEntity;\n };\n /**\n * Finds editor by its ID.\n * @param editorId The editor ID.\n * @returns The value editor or `null`.\n */\n MetaData.prototype.getEditorById = function (editorId) {\n for (var _i = 0, _a = this.editors; _i < _a.length; _i++) {\n var editor = _a[_i];\n if (editor.id === editorId) {\n return editor;\n }\n }\n return null;\n };\n /**\n * Gets entity attribute by its ID.\n * This function runs through all attributes inside specified model (it's root entity and all its sub-entities).\n * @param attrId The attribute ID.\n * @returns The attribute or `null`.\n */\n MetaData.prototype.getAttributeById = function (attrId) {\n var attr = this.getEntityAttrById(this.getRootEntity(), attrId);\n if (!attr) {\n return null;\n }\n return attr;\n };\n /**\n * Checks wether attribute contains such property.\n * @param attrId The attribute ID.\n * @param propName The property name.\n * @returns `true` if the attribute contains the property, otherwise `false`.\n */\n MetaData.prototype.checkAttrProperty = function (attrId, propName) {\n var attribute = this.getAttributeById(attrId);\n if (attribute) {\n if (typeof attribute[propName] === 'undefined') {\n throw 'No such property: ' + propName;\n }\n if (attribute[propName]) {\n return true;\n }\n else if (attribute.lookupAttr) {\n attrId = attribute.lookupAttr;\n attribute = this.getAttributeById(attrId);\n return attribute && attribute[propName];\n }\n else {\n return false;\n }\n }\n else\n return false;\n };\n /**\n * Gets entity attribute by its ID.\n * This function runs through all attributes inside specified entity and all its sub-entities.\n * @param entity\n * @param attrId\n * @returns The attribute or `null`.\n */\n MetaData.prototype.getEntityAttrById = function (entity, attrId) {\n var idx;\n if (entity.attributes) {\n var attrCount = entity.attributes.length;\n for (idx = 0; idx < attrCount; idx++) {\n if (entity.attributes[idx].id == attrId) {\n return entity.attributes[idx];\n }\n }\n }\n var res;\n if (entity.subEntities) {\n var subEntityCount = entity.subEntities.length;\n for (idx = 0; idx < subEntityCount; idx++) {\n res = this.getEntityAttrById(entity.subEntities[idx], attrId);\n if (res)\n return res;\n }\n }\n return null;\n };\n MetaData.prototype.listByEntityWithFilter = function (entity, filterFunc) {\n var result = new Array();\n var caption;\n var ent = null;\n if (entity.subEntities) {\n var subEntityCount = entity.subEntities.length;\n for (var entIdx = 0; entIdx < subEntityCount; entIdx++) {\n ent = entity.subEntities[entIdx];\n if (!filterFunc || filterFunc(ent, null)) {\n caption = i18n.getText('Entities', ent.name);\n if (!caption) {\n caption = ent.caption;\n }\n var newEnt = utils.assign(this.createEntity(), { id: ent.name, text: caption, items: [], isEntity: true });\n newEnt.items = this.listByEntityWithFilter(ent, filterFunc);\n if (newEnt.items.length > 0)\n result.push(newEnt);\n }\n }\n }\n var attr = null;\n if (entity.attributes) {\n var attrCount = entity.attributes.length;\n for (var attrIdx = 0; attrIdx < attrCount; attrIdx++) {\n attr = entity.attributes[attrIdx];\n if (!filterFunc || filterFunc(entity, attr)) {\n caption = i18n.getText('Attributes', attr.id);\n if (!caption)\n caption = attr.caption;\n var newEnt = utils.assign(this.createEntity(), { id: attr.id, text: caption, dataType: attr.dataType });\n result.push(newEnt);\n }\n }\n }\n return result;\n };\n MetaData.prototype.listByEntity = function (entity, opts, filterFunc) {\n opts = opts || {};\n var resultEntities = [];\n var resultAttributes = [];\n var caption;\n var ent = null;\n if (entity.subEntities) {\n var subEntityCount = entity.subEntities.length;\n for (var entIdx = 0; entIdx < subEntityCount; entIdx++) {\n ent = entity.subEntities[entIdx];\n if (!filterFunc || filterFunc(ent, null)) {\n caption = i18n.getText('Entities', ent.name) || ent.caption;\n var newEnt = utils.assign(this.createEntity(), {\n id: ent.name,\n text: caption,\n items: [],\n isEntity: true,\n description: ent.description\n });\n var newOpts = utils.assign({}, opts);\n newOpts.includeRootData = false;\n newEnt.items = this.listByEntity(ent, newOpts, filterFunc);\n if (newEnt.items.length > 0) {\n resultEntities.push(newEnt);\n }\n }\n }\n }\n var attr = null;\n if (entity.attributes) {\n var attrCount = entity.attributes.length;\n for (var attrIdx = 0; attrIdx < attrCount; attrIdx++) {\n attr = entity.attributes[attrIdx];\n if (!filterFunc || filterFunc(entity, attr)) {\n caption = i18n.getText('Attributes', attr.id) || attr.caption;\n resultAttributes.push(utils.assign(this.createEntityAttr(entity), {\n id: attr.id, text: caption,\n dataType: attr.dataType, lookupAttr: attr.lookupAttr,\n description: attr.description\n }));\n }\n }\n }\n var sortCheck = function (a, b) {\n if (a.text.toLowerCase() == b.text.toLowerCase()) {\n return 0;\n }\n if (a.text.toLowerCase() > b.text.toLowerCase()) {\n return 1;\n }\n return -1;\n };\n if (opts.sortEntities) {\n resultEntities.sort(sortCheck);\n resultAttributes.sort(sortCheck);\n }\n var result;\n if (!opts.attrPlacement || opts.attrPlacement == 0) {\n result = resultEntities.concat(resultAttributes);\n }\n else {\n result = resultAttributes.concat(resultEntities);\n }\n if (opts.attrPlacement == 2) {\n result.sort(sortCheck);\n }\n if (opts.includeRootData) {\n caption = i18n.getText('Entities', entity.name);\n if (!caption)\n caption = entity.caption;\n return { id: entity.name, text: caption, items: result };\n }\n else {\n return result;\n }\n };\n /**\n * Clears data model.\n */\n MetaData.prototype.clear = function () {\n this.rootEntity = this.createEntity();\n this.editors = [];\n this.version = '';\n };\n /**\n * Add default value editors.\n */\n MetaData.prototype.addDefaultValueEditors = function () {\n var ve;\n ve = this.addOrUpdateValueEditor('_DTE', EditorTag.Edit, DataType.String);\n ve.defValue = '';\n this.addOrUpdateValueEditor('_DPDE', EditorTag.DateTime, DataType.DateTime);\n this.addOrUpdateValueEditor('_DPTE', EditorTag.DateTime, DataType.DateTime);\n };\n /**\n * Add or update a value editor.\n * @param id The id.\n * @param tag The tag.\n * @param resType The result type.\n * @returns The value editor.\n */\n MetaData.prototype.addOrUpdateValueEditor = function (id, tag, resType) {\n var ve = utils.findItemById(this.editors, id);\n if (!ve) {\n ve = this.createValueEditor();\n ve.id = id;\n this.editors.push(ve);\n }\n ve.tag = tag;\n ve.resType = resType;\n return ve;\n };\n /**\n * Gets entities tree.\n * @param opts The options.\n * @param filterFunc The filter function.\n * Takes two parameters, Entity and EntityAttr (second parameter will be null for entities), and returns boolean (true if the corresponding entity or attribute).\n * @returns The tree of the entities and their attributes according to options and the filter function\n */\n MetaData.prototype.getEntitiesTree = function (opts, filterFunc) {\n return this.listByEntity(this.getRootEntity(), opts, filterFunc);\n };\n /**\n * Gets entities tree due to filter.\n * @param filterFunc The filter function.\n * Takes two parameters, Entity and EntityAttr (second parameter will be null for entities), and returns boolean (true if the corresponding entity or attribute).\n * @returns The tree of the entities and their attributes according to the filter function\n */\n MetaData.prototype.getEntitiesTreeWithFilter = function (filterFunc) {\n return this.listByEntityWithFilter(this.getRootEntity(), filterFunc);\n };\n /**\n * Finds full entity path by attribute\n * @param attrId The attribute id.\n * @param sep The separator.\n * @returns The path.\n */\n MetaData.prototype.getFullEntityPathByAttr = function (attrId, sep) {\n sep = sep || ' ';\n return this.getEntityPathByAttr(this.getRootEntity(), attrId, sep, true);\n };\n /**\n * Finds entity path by attribute\n * @param entity The entity.\n * @param attrId The attribute id.\n * @param sep The separator.\n * @param root The root option.\n * @returns The path.\n */\n MetaData.prototype.getEntityPathByAttr = function (entity, attrId, sep, root) {\n if (!entity)\n return '';\n sep = sep || ' ';\n var entityCaption = '';\n if (entity.caption && !root) {\n var entityText = i18n.getText('Entities', entity.caption);\n entityCaption = entityText ? entityText : entity.caption;\n }\n if (entity.attributes) {\n var attrCount = entity.attributes.length;\n for (var i = 0; i < attrCount; i++) {\n if (entity.attributes[i].id == attrId) {\n return entityCaption;\n }\n }\n }\n if (entity.subEntities) {\n var subEntityCount = entity.subEntities.length;\n for (var i = 0; i < subEntityCount; i++) {\n var ent = entity.subEntities[i];\n var res = this.getEntityPathByAttr(ent, attrId, sep, false);\n if (res !== '') {\n if (entityCaption !== '')\n res = entityCaption + sep + res;\n return res;\n }\n }\n }\n return '';\n };\n /**\n * Gets the attribute text.\n * @param attr The attribute.\n * @param format The format.\n * @returns Formatted text.\n */\n MetaData.prototype.getAttributeText = function (attr, format) {\n var attrText = i18n.getText('Attributes', attr.id);\n if (!attrText) {\n attrText = attr.caption;\n }\n if (!format) {\n return attrText;\n }\n var result = '';\n var entityPath = this.getFullEntityPathByAttr(attr.id, ' ');\n if (entityPath) {\n result = format.replace(new RegExp('{attr}', 'g'), attrText);\n result = result.replace(new RegExp('{entity}', 'g'), entityPath);\n }\n else {\n result = attrText;\n }\n return result.trim();\n };\n /**\n * Scans model's entity tree and calls the callback functions for each attribute and entity.\n * @param processAttribute The callback function which is called for each attribute in model's entity tree.\n * The processed attribute is passed in the first function parameter.\n * @param processEntity The callback function which is called for each entity in tree.\n * The processed entity is passed in the first function parameter.\n */\n MetaData.prototype.runThroughEntities = function (processAttribute, processEntity) {\n this.getRootEntity().scan(processAttribute, processEntity);\n };\n /**\n * Finds first attribute by filter.\n * @param filterFunc The filter function. Takes EntityAttr object in parameter and returns boolean\n */\n MetaData.prototype.getFirstAttributeByFilter = function (filterFunc) {\n var res = null;\n this.runThroughEntities(function (attr, opts) {\n if (filterFunc(attr)) {\n opts.stop = true;\n res = attr;\n }\n }, null);\n return res;\n };\n return MetaData;\n}());\nexport { MetaData };\n//# sourceMappingURL=meta_data.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/**\n * Defines aggregations settings for the current context.\n * Group, aggregate columns, grand totals, etc.\n */\nvar AggregationSettings = /** @class */ (function () {\n function AggregationSettings(colStore) {\n this.colStore = colStore;\n this.aggregates = [];\n this.groups = [];\n this.useGrandTotals = false;\n this.useRecordCount = false;\n this._caseSensitiveGroups = false;\n this.COUNT_FIELD_NAME = 'GRPRECCNT';\n }\n Object.defineProperty(AggregationSettings.prototype, \"caseSensitiveGroups\", {\n get: function () {\n return this._caseSensitiveGroups;\n },\n set: function (value) {\n this._caseSensitiveGroups = value;\n this.updateCompareProc();\n },\n enumerable: false,\n configurable: true\n });\n AggregationSettings.prototype.updateCompareProc = function () {\n this.compareValues = this._caseSensitiveGroups\n ? this.strictCompare\n : this.caseInsensitiveCompare;\n };\n AggregationSettings.prototype.addGroup = function (settings) {\n var cols = settings.columns || this.colStore.getColumnIds(settings.from, settings.to);\n if (!this.colStore.validateColumns(cols))\n throw \"Invalid columns: \" + cols;\n if (this.hasColumnsInUse(cols))\n throw \"Can't add same columns to different groups/aggregates\";\n this.groups.push(__assign({ columns: cols }, settings));\n return this;\n };\n AggregationSettings.prototype.addAggregateColumn = function (colIndexOrId, funcId) {\n var colId = typeof colIndexOrId == 'string'\n ? colIndexOrId\n : this.colStore.getColumnIds(colIndexOrId, colIndexOrId)[0];\n if (this.hasColumnsInUse([colId]) || !this.colStore.validateAggregate(colId, funcId))\n throw 'Invalid aggregation function for the column: ' + colId;\n this.aggregates.push({ colId: colId, funcId: funcId });\n return this;\n };\n AggregationSettings.prototype.addGrandTotals = function () {\n this.useGrandTotals = true;\n return this;\n };\n AggregationSettings.prototype.addCounts = function () {\n this.useRecordCount = true;\n return this;\n };\n AggregationSettings.prototype.getGroups = function () {\n var _this = this;\n var cols = [];\n var mappedGrops = this.groups.map(function (grp) {\n cols = cols.concat(grp.columns);\n return __assign(__assign({}, grp), { columns: Array.from(cols), aggregates: Array.from(_this.aggregates) });\n });\n return mappedGrops;\n };\n AggregationSettings.prototype.getInternalGroups = function () {\n return this.groups;\n };\n AggregationSettings.prototype.lastGroup = function () {\n var groups = this.getGroups();\n return groups[groups.length - 1];\n };\n AggregationSettings.prototype.getAggregates = function () {\n return this.aggregates;\n };\n AggregationSettings.prototype.hasAggregates = function () {\n return this.aggregates.length > 0;\n };\n AggregationSettings.prototype.hasGroups = function () {\n return this.groups.length > 0;\n };\n AggregationSettings.prototype.hasGrandTotals = function () {\n return this.useGrandTotals;\n };\n AggregationSettings.prototype.hasRecordCount = function () {\n return this.useRecordCount;\n };\n AggregationSettings.prototype.isEmpty = function () {\n return !(this.hasAggregates() || this.hasGroups() ||\n this.hasAggregates() || this.hasRecordCount());\n };\n AggregationSettings.prototype.drop = function () {\n console.warn('\"drop()\" method is obsolete. Use \"clear()\" instead');\n this.clear();\n };\n AggregationSettings.prototype.clear = function () {\n this.groups = [];\n this.aggregates = [];\n this.useGrandTotals = false;\n this.useRecordCount = false;\n this.caseSensitiveGroups = false;\n return this;\n };\n /**\n * Checks if all columns from the list passed in the parameter are \"unused\".\n * Here \"unused column\" means a column that is included neither in any group nor in the aggregates list.\n * @param cols - the array of column IDs\n * @returns true if all columns in the list are not used anywhere, othervise - fals\n */\n AggregationSettings.prototype.hasColumnsInUse = function (cols) {\n for (var _i = 0, _a = this.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var interCols = group.columns\n .filter(function (c) { return cols.indexOf(c) >= 0; });\n if (interCols.length > 0)\n return true;\n }\n for (var _b = 0, _c = this.aggregates; _b < _c.length; _b++) {\n var aggr = _c[_b];\n if (cols.indexOf(aggr.colId) >= 0)\n return true;\n }\n return false;\n };\n AggregationSettings.prototype.needAggrCalculation = function () {\n return (this.hasAggregates() || this.hasRecordCount())\n && (this.hasGrandTotals() || this.hasGroups());\n };\n AggregationSettings.prototype.saveToData = function () {\n return {\n groups: Array.from(this.groups),\n ugt: this.useGrandTotals,\n urc: this.useRecordCount,\n csg: this.caseSensitiveGroups,\n aggregates: Array.from(this.aggregates)\n };\n };\n AggregationSettings.prototype.loadFromData = function (data) {\n if (data) {\n if (typeof data.ugt !== 'undefined')\n this.useGrandTotals = data.ugt;\n if (typeof data.urc !== 'undefined')\n this.useRecordCount = data.urc;\n if (typeof data.csg !== 'undefined')\n this.caseSensitiveGroups = data.csg;\n if (data.groups) {\n this.groups = Array.from(data.groups);\n }\n if (data.aggregates) {\n this.aggregates = Array.from(data.aggregates);\n }\n }\n };\n AggregationSettings.prototype.buildGroupKey = function (group, row) {\n var caseInsensitive = !this.caseSensitiveGroups;\n var result = {};\n if (group) {\n for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {\n var colId = _a[_i];\n var keyVal = row.getValue(colId);\n if (caseInsensitive && typeof (keyVal) === 'string') {\n keyVal = keyVal.toLowerCase();\n }\n result[colId] = keyVal;\n }\n }\n return result;\n };\n //returns true if value1 == value2\n AggregationSettings.prototype.strictCompare = function (value1, value2) {\n if (value1 instanceof Date) {\n return value1.getTime() === value2.getTime();\n }\n else\n return value1 === value2;\n };\n //makes a case insensative comparision of two values and return true if there are equal\n AggregationSettings.prototype.caseInsensitiveCompare = function (value1, value2) {\n if (value1 instanceof Date) {\n return value1.getTime() === value2.getTime();\n }\n else {\n var val1 = (typeof value1 === 'string') ? value1.toLowerCase() : value1;\n var val2 = (typeof value2 === 'string') ? value2.toLowerCase() : value2;\n return val1 === val2;\n }\n };\n return AggregationSettings;\n}());\nexport { AggregationSettings };\n//# sourceMappingURL=aggr_settings.js.map","import { DataType } from '../types/data_type';\nimport { utils } from '../utils/utils';\nexport var ColumnAlignment;\n(function (ColumnAlignment) {\n ColumnAlignment[ColumnAlignment[\"None\"] = 0] = \"None\";\n ColumnAlignment[ColumnAlignment[\"Left\"] = 1] = \"Left\";\n ColumnAlignment[ColumnAlignment[\"Center\"] = 2] = \"Center\";\n ColumnAlignment[ColumnAlignment[\"Right\"] = 3] = \"Right\";\n})(ColumnAlignment || (ColumnAlignment = {}));\nvar DataColumn = /** @class */ (function () {\n function DataColumn(desc) {\n if (!desc)\n throw Error(\"Options are required\");\n if (!desc.id)\n throw Error(\"Field Id is required\");\n if (!desc.label)\n throw Error(\"Label is required\");\n this.id = desc.id;\n this.type = utils.getIfDefined(desc.type, DataType.String);\n this.label = desc.label;\n this.originAttrId = desc.originAttrId;\n this.isAggr = desc.isAggr || false;\n this.displayFormat = desc.dfmt;\n this.groupFooterColumnTemplate = desc.gfct;\n this.style = desc.style || {};\n this.description = desc.description;\n this.calculatedWidth = 0;\n }\n return DataColumn;\n}());\nexport { DataColumn };\nvar DataColumnList = /** @class */ (function () {\n function DataColumnList() {\n this.items = [];\n this.mapper = {};\n this._dateColumnIdx = [];\n }\n Object.defineProperty(DataColumnList.prototype, \"count\", {\n get: function () {\n return this.items.length;\n },\n enumerable: false,\n configurable: true\n });\n DataColumnList.prototype.add = function (colOrDesc) {\n var col;\n if (colOrDesc instanceof DataColumn) {\n col = colOrDesc;\n }\n else {\n col = new DataColumn(colOrDesc);\n }\n var index = this.items.length;\n this.items.push(col);\n this.mapper[col.id] = index;\n if ([DataType.Date, DataType.DateTime, DataType.Time].indexOf(col.type) >= 0) {\n this._dateColumnIdx.push(index);\n }\n return index;\n };\n DataColumnList.prototype.updateDateColumnIdx = function () {\n this._dateColumnIdx = this.getItems()\n .filter(function (col) { return [DataType.Date, DataType.DateTime, DataType.Time].indexOf(col.type) >= 0; })\n .map(function (col, index) { return index; });\n };\n DataColumnList.prototype.put = function (index, col) {\n if (index >= 0 && index < this.count) {\n this.items[index] = col;\n this.updateDateColumnIdx();\n }\n };\n DataColumnList.prototype.move = function (col, newIndex) {\n var oldIndex = this.items.indexOf(col);\n if (oldIndex >= 0 && oldIndex != newIndex) {\n utils.moveArrayItem(this.items, oldIndex, newIndex);\n this.updateDateColumnIdx();\n }\n };\n DataColumnList.prototype.get = function (index) {\n if (index >= 0 && index < this.count) {\n return this.items[index];\n }\n else {\n return null;\n }\n };\n DataColumnList.prototype.getIndex = function (id) {\n return this.mapper[id];\n };\n DataColumnList.prototype.getItems = function () {\n return this.items;\n };\n DataColumnList.prototype.getDateColumnIndexes = function () {\n return this._dateColumnIdx;\n };\n DataColumnList.prototype.removeAt = function (index) {\n var col = this.get(index);\n this.items.splice(index, 1);\n var removeDate = this._dateColumnIdx.indexOf(index);\n if (removeDate >= 0) {\n this._dateColumnIdx.splice(removeDate, 1);\n }\n delete this.mapper[col.id];\n };\n DataColumnList.prototype.clear = function () {\n this.items = [];\n this._dateColumnIdx = [];\n this.mapper = {};\n };\n return DataColumnList;\n}());\nexport { DataColumnList };\n//# sourceMappingURL=data_column.js.map","var DataRow = /** @class */ (function () {\n function DataRow(columns, values) {\n this.columns = columns;\n this.values = values;\n }\n DataRow.prototype.toArray = function () {\n return Array.from(this.values);\n };\n DataRow.prototype.size = function () {\n return this.values.length;\n };\n DataRow.prototype.getValue = function (colIdOrIndex) {\n var index;\n if (typeof colIdOrIndex === \"string\") {\n index = this.columns.getIndex(colIdOrIndex);\n if (index === undefined) {\n throw new RangeError(\"No column with id '\".concat(colIdOrIndex, \"'\"));\n }\n }\n else {\n index = colIdOrIndex;\n }\n if (index >= this.values.length)\n throw new RangeError(\"Out of range: \" + index);\n return this.values[index];\n };\n DataRow.prototype.setValue = function (colIdOrIndex, value) {\n var index;\n if (typeof colIdOrIndex === \"string\") {\n index = this.columns.getIndex(colIdOrIndex);\n if (index === undefined) {\n throw new RangeError(\"No column with id '\".concat(colIdOrIndex, \"'\"));\n }\n }\n else {\n index = colIdOrIndex;\n }\n if (index >= this.values.length)\n throw new RangeError(\"Out of range: \" + index);\n this.values[index] = value;\n };\n return DataRow;\n}());\nexport { DataRow };\n//# sourceMappingURL=data_row.js.map","import { DataColumnList } from './data_column';\nimport { DataRow } from './data_row';\nimport { DataType } from '../types/data_type';\nimport { utils } from '../utils/utils';\nvar EasyDataTable = /** @class */ (function () {\n function EasyDataTable(options) {\n this._chunkSize = 1000;\n this._elasticChunks = false;\n this.cachedRows = [];\n this.total = 0;\n this.loader = null;\n this.needTotal = true;\n this.isInMemory = false;\n options = options || {};\n this._chunkSize = options.chunkSize || this._chunkSize;\n this._elasticChunks = options.elasticChunks || this._elasticChunks;\n this.loader = options.loader;\n if (typeof options.inMemory !== 'undefined') {\n this.isInMemory = options.inMemory;\n }\n if (this.isInMemory) {\n this.needTotal = false;\n }\n this._columns = new DataColumnList();\n this.onUpdate = options.onUpdate;\n if (options.columns) {\n for (var _i = 0, _a = options.columns; _i < _a.length; _i++) {\n var colDesc = _a[_i];\n this._columns.add(colDesc);\n }\n }\n if (options.rows) {\n for (var _b = 0, _c = options.rows; _b < _c.length; _b++) {\n var rowData = _c[_b];\n var row = this.createRow(rowData);\n this.addRow(row);\n }\n }\n this.needTotal = !this._elasticChunks;\n }\n Object.defineProperty(EasyDataTable.prototype, \"columns\", {\n get: function () {\n return this._columns;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EasyDataTable.prototype, \"chunkSize\", {\n get: function () {\n return this._chunkSize;\n },\n set: function (value) {\n this._chunkSize = value;\n this.total = 0;\n this.needTotal = !this.elasticChunks;\n this.cachedRows = [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EasyDataTable.prototype, \"elasticChunks\", {\n get: function () {\n return this._elasticChunks;\n },\n set: function (value) {\n this._elasticChunks = value;\n this.total = 0;\n this.needTotal = !this.elasticChunks;\n this.cachedRows = [];\n },\n enumerable: false,\n configurable: true\n });\n EasyDataTable.prototype.getRows = function (params) {\n var _this = this;\n var fromIndex = 0, count = this._chunkSize;\n if (params) {\n if ('page' in params) {\n fromIndex = params.pageSize * (params.page - 1);\n count = params.pageSize;\n }\n else {\n fromIndex = params.offset;\n count = params.limit;\n }\n }\n var endIndex = fromIndex + count; //the first index of the next page\n //if we don't calculate total on this request\n if (!this.needTotal && !this.elasticChunks) {\n if (fromIndex >= this.total) {\n return Promise.resolve([]);\n }\n if (endIndex > this.total) {\n endIndex = this.total;\n }\n }\n if (this.isInMemory && endIndex > this.cachedRows.length) {\n endIndex = this.cachedRows.length;\n }\n var allChunksCached = endIndex <= this.cachedRows.length;\n if (allChunksCached) {\n return Promise.resolve(this.cachedRows.slice(fromIndex, endIndex));\n }\n //if loader is not defined\n if (!this.loader) {\n throw \"Loader is not defined. Can't get the rows from \".concat(fromIndex, \" to \").concat(endIndex);\n }\n // we need total only for the first request\n var needTotal = this.needTotal;\n if (this.needTotal) {\n this.needTotal = false;\n }\n var offset = this.cachedRows.length;\n var limit = endIndex - offset;\n if (limit < this._chunkSize) {\n limit = this._chunkSize;\n }\n var resultPromise = this.loader.loadChunk({\n offset: offset,\n limit: limit,\n needTotal: needTotal\n })\n .then(function (result) {\n if (needTotal) {\n _this.total = result.total;\n }\n Array.prototype.push.apply(_this.cachedRows, result.table.getCachedRows());\n if (endIndex > _this.cachedRows.length) {\n endIndex = _this.cachedRows.length;\n }\n if (_this.elasticChunks) {\n var count_1 = result.table.getCachedCount();\n if (count_1 < limit) {\n _this.total = _this.cachedRows.length;\n }\n }\n _this.fireUpdated();\n return _this.cachedRows.slice(fromIndex, endIndex);\n });\n return resultPromise;\n };\n EasyDataTable.prototype.getRow = function (index) {\n return this.getRows({ offset: index, limit: 1 })\n .then(function (rows) { return rows.length > 0 ? rows[0] : null; });\n };\n EasyDataTable.prototype.getTotal = function () {\n return this.total;\n };\n EasyDataTable.prototype.setTotal = function (total) {\n this.total = total;\n this.needTotal = false;\n };\n EasyDataTable.prototype.getCachedCount = function () {\n return this.cachedRows.length;\n };\n EasyDataTable.prototype.clear = function () {\n this.columns.clear();\n this.cachedRows = [];\n this.total = 0;\n this.needTotal = !this._elasticChunks;\n this.fireUpdated();\n };\n EasyDataTable.prototype.createRow = function (dataOrRow) {\n var _this = this;\n var dateIdx = this._columns.getDateColumnIndexes();\n var values = new Array(this._columns.count);\n var getValue = dataOrRow instanceof DataRow\n ? function (colId) { return dataOrRow.getValue(colId); }\n : function (colId) { return dataOrRow[colId]; };\n if (dataOrRow) {\n this.columns.getItems().forEach(function (column) {\n var value = getValue(column.id);\n var index = _this.columns.getIndex(column.id);\n values[index] = (dateIdx.indexOf(index) >= 0)\n ? _this.mapDate(value, column.type)\n : value;\n });\n }\n return new DataRow(this._columns, values);\n };\n EasyDataTable.prototype.mapDate = function (value, dtype) {\n if (value) {\n var result = new Date(value);\n if (isNaN(result.getTime())\n && dtype == DataType.Time) {\n result = utils.strToTime(value);\n }\n return result;\n }\n return null;\n };\n EasyDataTable.prototype.addRow = function (rowOrValues) {\n var newRow;\n if (Array.isArray(rowOrValues)) {\n var values = rowOrValues;\n var dateIdx = this._columns.getDateColumnIndexes();\n if (dateIdx.length > 0) {\n for (var _i = 0, dateIdx_1 = dateIdx; _i < dateIdx_1.length; _i++) {\n var idx = dateIdx_1[_i];\n if (values[idx]) {\n values[idx] = this.mapDate(values[idx], this._columns.get(idx).type);\n }\n }\n }\n newRow = new DataRow(this._columns, values);\n }\n else {\n newRow = this.createRow(rowOrValues);\n }\n this.cachedRows.push(newRow);\n var cachedTotal = this.getCachedCount();\n if (cachedTotal > this.total) {\n this.total = cachedTotal;\n }\n return newRow;\n };\n EasyDataTable.prototype.getCachedRows = function () {\n return this.cachedRows;\n };\n EasyDataTable.prototype.totalIsKnown = function () {\n if (this.elasticChunks) {\n var count = this.getCachedCount();\n return count === this.total;\n }\n return !this.needTotal;\n };\n EasyDataTable.prototype.fireUpdated = function () {\n if (this.onUpdate) {\n this.onUpdate(this);\n }\n };\n return EasyDataTable;\n}());\nexport { EasyDataTable };\n//# sourceMappingURL=easy_data_table.js.map","/**\n * EasyData representation of GUID.\n */\nvar EasyGuid = /** @class */ (function () {\n function EasyGuid() {\n }\n /**\n * Generates new GUID.\n * @returns The string representation of GUID.\n */\n EasyGuid.newGuid = function () {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n return EasyGuid;\n}());\nexport { EasyGuid };\n//# sourceMappingURL=easy_guid.js.map","import { EasyGuid } from '../utils/easy_guid';\n/**\n * The representation of event emitter.\n */\nvar EventEmitter = /** @class */ (function () {\n /**\n * The default constructor.\n * @param source The source.\n */\n function EventEmitter(source) {\n this.silentMode = 0;\n this.events = new Array();\n this.source = source;\n }\n /**\n * Subscries to the event.\n * @param eventType The event type.\n * @param callback The callback.\n * @returns The subscribtion ID.\n */\n EventEmitter.prototype.subscribe = function (eventType, callback) {\n var event = this.getEventRecByType(eventType);\n var eventCallback = {\n id: EasyGuid.newGuid(),\n callback: callback\n };\n if (event) {\n event.eventCallbacks.push(eventCallback);\n }\n else {\n event = {\n type: eventType,\n eventCallbacks: new Array(eventCallback)\n };\n this.events.push(event);\n }\n return eventCallback.id;\n };\n /**\n * Unsubsribes from the event.\n * @param eventType The event type.\n * @param callbackId The subscribtion ID.\n */\n EventEmitter.prototype.unsubscribe = function (eventType, callbackId) {\n var event = this.getEventRecByType(eventType);\n if (event) {\n var index = -1;\n for (index = 0; index < event.eventCallbacks.length; index++) {\n if (event.eventCallbacks[index].id === callbackId) {\n break;\n }\n }\n if (index >= 0) {\n event.eventCallbacks.splice(index, 1);\n }\n }\n };\n /**\n * Fires the event.\n * @param eventType The event type.\n * @param data The event data.\n * @param postpone The postpone.\n * @param force To fire force. If value is `true`, ignores silent mode.\n */\n EventEmitter.prototype.fire = function (eventType, data, postpone, force) {\n if (postpone === void 0) { postpone = 0; }\n if (force === void 0) { force = false; }\n if (this.silentMode && !force) {\n return;\n }\n var eventRec = this.getEventRecByType(eventType);\n if (eventRec) {\n var eqevent_1 = {\n type: eventType,\n source: this.source,\n data: data\n };\n var emitAllFunc = function () {\n for (var _i = 0, _a = eventRec.eventCallbacks; _i < _a.length; _i++) {\n var callback = _a[_i];\n callback.callback(eqevent_1);\n }\n };\n if (postpone > 0) {\n setTimeout(emitAllFunc, postpone);\n }\n else {\n emitAllFunc();\n }\n }\n };\n /**\n * Enters to silent mode.\n */\n EventEmitter.prototype.enterSilentMode = function () {\n this.silentMode++;\n };\n /**\n * Exits from silent mode.\n */\n EventEmitter.prototype.exitSilentMode = function () {\n if (this.silentMode) {\n this.silentMode--;\n }\n };\n /**\n * Checks if emitter is in silent mode.\n * @return `true`, if silent mode is enable.\n */\n EventEmitter.prototype.isSilent = function () {\n return this.silentMode > 0;\n };\n EventEmitter.prototype.getEventRecByType = function (eventType) {\n for (var _i = 0, _a = this.events; _i < _a.length; _i++) {\n var event_1 = _a[_i];\n if (event_1.type == eventType) {\n return event_1;\n }\n }\n return null;\n };\n return EventEmitter;\n}());\nexport { EventEmitter };\n//# sourceMappingURL=event_emitter.js.map","export var liquid;\n(function (liquid) {\n function renderLiquidTemplate(template, vars) {\n var result = template;\n if (vars) {\n for (var v in vars) {\n var liquidVarRegexp = new RegExp('\\{\\{' + v + '\\}\\}', 'g');\n result = result.replace(liquidVarRegexp, vars[v]);\n }\n }\n return result;\n }\n liquid.renderLiquidTemplate = renderLiquidTemplate;\n})(liquid || (liquid = {}));\n//# sourceMappingURL=liquid.js.map","import { i18n } from './i18n';\ni18n.resetLocales();\n//# sourceMappingURL=load_default_locale_settings.js.map","//types\nexport * from './types/data_type';\nexport * from './types/entity_attr_kind';\nexport * from './types/editor_tag';\n//http\nexport * from './http/http_method';\nexport * from './http/http_request';\nexport * from './http/http_client';\n//meta data dto\nexport * from './meta/dto/meta_data_dto';\nexport * from './meta/dto/meta_entity_dto';\nexport * from './meta/dto/value_editor_dto';\n//meta data\nexport * from './meta/meta_data';\nexport * from './meta/meta_entity';\nexport * from './meta/value_editor';\n//data\nexport * from './data/aggr_structures';\nexport * from './data/aggr_settings';\nexport * from './data/data_column';\nexport * from './data/data_loader';\nexport * from './data/data_row';\nexport * from './data/easy_data_table';\n//event\nexport * from './event/event_emitter';\n//i18n\nexport * from './i18n/i18n';\n//utils\nexport * from './utils/easy_guid';\nexport * from './utils/string_utils';\nexport * from './utils/utils';\nexport * from './utils/liquid';\nimport './i18n/load_default_locale_settings';\nif (typeof Object.values !== 'function') {\n Object.values = function (obj) {\n return Object.keys(obj).map(function (key) { return obj[key]; });\n };\n}\nif (typeof Math.trunc !== 'function') {\n Math.trunc = function (x) {\n if (isNaN(x)) {\n return NaN;\n }\n if (x > 0) {\n return Math.floor(x);\n }\n return Math.ceil(x);\n };\n}\n//# sourceMappingURL=public_api.js.map","import { browserUtils } from './browser_utils';\n/**\n * Wraps all the elements inside \"parent\" by \"wrapper\" element\n * @param parent The element to add wrapper to.\n * @param wrapper The element that will wrap child elements.\n */\nexport function wrapInner(parent, wrapper) {\n parent.appendChild(wrapper);\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n}\n/**\n * Creates ands adds a new [[HTMLElement]] to \"parent\"\n * @param parent The element to add new element to.\n * @param tag Html tag of the new element.\n * @param options The options. In particular, options.cssClass sets the new element class.\n * @returns New element.\n */\nexport function addElement(parent, tag, options) {\n var element = document.createElement(tag);\n var opts = options || {};\n if (opts.cssClass) {\n element.className = opts.cssClass;\n }\n parent.appendChild(element);\n return element;\n}\n/**\n * Adds css class to the html element.\n * @param element The element to add css class to.\n * @param className The name of the css class to be added.\n */\nexport function addCssClass(element, className) {\n element.className = (element.className)\n ? element.className + ' ' + className\n : className;\n}\n/**\n * Hides the html element.\n * @param element The element to be hidden.\n */\nexport function hideElement(element) {\n element.style.display = 'none';\n}\n/**\n * Shows the html element.\n * @param element The element to be shown.\n * @param display The value of \"display\" style to be set. Default value is \"block\".\n */\nexport function showElement(element, display) {\n if (!display) {\n display = '';\n }\n element.style.display = display;\n}\n/**\n * Hides the \"first\" element and shows the \"second\".\n * @param first The element to be hidden.\n * @param second The element to be shown.\n * @param options The options. The following options are applied:\n * - display - the value of \"display\" style to be set. Default value is \"block\"\n * - duration - the duration of fading in and out\n * - complete - the callback to be called when toggle is complete\n */\nexport function toggleVisibility(first, second, options) {\n if (!options) {\n options = {};\n }\n if (!options.display) {\n options.display = '';\n }\n if (!options.duration) {\n options.duration = 200;\n }\n //TODO: later we need to make it fading in and out\n hideElement(first);\n showElement(second, options.display);\n if (options.complete) {\n options.complete();\n }\n}\n/**\n * Checks if element is visible\n * @param element The element to check.\n * @returns `true` if visible, otherwise - `false`.\n */\nexport function isVisible(element) {\n return element.style.display != 'none'\n && element.offsetWidth != 0\n && element.offsetHeight != 0;\n}\nexport function createBrowserEvent(eventName) {\n var event;\n if (typeof (Event) === 'function') {\n event = new Event(eventName);\n }\n else {\n event = document.createEvent('Event');\n event.initEvent(eventName, true, true);\n }\n return event;\n}\nexport function getViewportSize() {\n var width = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\n var height = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\n return {\n width: width,\n height: height\n };\n}\nexport function getDocSize() {\n if (browserUtils.IsIE())\n return getWinSize();\n var width = Math.max(document.documentElement.clientWidth, document.body.clientWidth || 0);\n var height = Math.max(document.documentElement.clientHeight, document.body.clientHeight || 0);\n return {\n width: width,\n height: height\n };\n}\nexport function getScrollPos() {\n var body = document.body;\n var docElem = document.documentElement;\n return {\n top: window.pageYOffset || docElem.scrollTop || body.scrollTop,\n left: window.pageXOffset || docElem.scrollLeft || body.scrollLeft\n };\n}\nexport function getElementAbsolutePos(element) {\n var res = { x: 0, y: 0 };\n if (element !== null) {\n var position = offset(element);\n res = { x: position.left, y: position.top };\n }\n return res;\n}\nfunction offset(element) {\n var defaultBoundingClientRect = { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };\n var box;\n try {\n box = element.getBoundingClientRect();\n }\n catch (_a) {\n box = defaultBoundingClientRect;\n }\n var body = document.body;\n var docElem = document.documentElement;\n var scollPos = getScrollPos();\n var scrollTop = scollPos.top;\n var scrollLeft = scollPos.left;\n var clientTop = docElem.clientTop || body.clientTop || 0;\n var clientLeft = docElem.clientLeft || body.clientLeft || 0;\n var top = box.top + scrollTop - clientTop;\n var left = box.left + scrollLeft - clientLeft;\n return { top: Math.round(top), left: Math.round(left) };\n}\nexport function getWinSize() {\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n}\nexport function slideDown(target, duration, callback) {\n target.style.removeProperty('display');\n var display = window.getComputedStyle(target).display;\n if (display === 'none')\n display = 'block';\n target.style.display = display;\n var height = target.offsetHeight;\n target.style.overflow = 'hidden';\n target.style.height = 0 + 'px';\n target.style.paddingTop = 0 + 'px';\n target.style.paddingBottom = 0 + 'px';\n target.style.marginTop = 0 + 'px';\n target.style.marginBottom = 0 + 'px';\n target.offsetHeight;\n target.style.boxSizing = 'border-box';\n target.style.transitionProperty = \"height, margin, padding\";\n target.style.transitionDuration = duration + 'ms';\n target.style.height = height + 'px';\n target.style.removeProperty('padding-top');\n target.style.removeProperty('padding-bottom');\n target.style.removeProperty('margin-top');\n target.style.removeProperty('margin-bottom');\n window.setTimeout(function () {\n target.style.removeProperty('height');\n target.style.removeProperty('overflow');\n target.style.removeProperty('transition-duration');\n target.style.removeProperty('transition-property');\n target.style.removeProperty('box-sizing');\n if (callback) {\n callback();\n }\n }, duration);\n}\nexport function slideUp(target, duration, callback) {\n target.style.transitionProperty = 'height, margin, padding';\n target.style.transitionDuration = duration + 'ms';\n target.style.boxSizing = 'border-box';\n target.style.height = target.offsetHeight + 'px';\n target.offsetHeight;\n target.style.overflow = 'hidden';\n target.style.height = 0 + 'px';\n target.style.paddingTop = 0 + 'px';\n target.style.paddingBottom = 0 + 'px';\n target.style.marginTop = 0 + 'px';\n target.style.marginBottom = 0 + 'px';\n window.setTimeout(function () {\n target.style.display = 'none';\n target.style.removeProperty('height');\n target.style.removeProperty('padding-top');\n target.style.removeProperty('padding-bottom');\n target.style.removeProperty('margin-top');\n target.style.removeProperty('margin-bottom');\n target.style.removeProperty('overflow');\n target.style.removeProperty('transition-duration');\n target.style.removeProperty('transition-property');\n target.style.removeProperty('box-sizing');\n if (callback) {\n callback();\n }\n }, duration);\n}\nexport var eqCssPrefix = 'eqjs';\nexport var eqCssMobile = 'eqjs-mobile';\n//# sourceMappingURL=ui-utils.js.map","export function mask(input, maskPattern) {\n var d = { 9: '[0-9]', a: '[a-z]' };\n var mask = maskPattern.split('');\n var keyDownHandler = function (e) {\n // backspace key or delete key\n if (e.keyCode === 8 || e.keyCode === 46) {\n e.preventDefault();\n var mskd = [];\n var startSelection = input.selectionStart;\n if (startSelection == 0)\n return;\n var selection = startSelection;\n var onlyLodash = true;\n for (var index = mask.length - 1; index >= 0; index--) {\n var el = mask[index];\n if (d[el]) {\n var t = new RegExp(d[el], 'i').test(input.value.charAt(index));\n if (t && index != startSelection - 1) {\n onlyLodash = false;\n }\n if (index === startSelection - 1)\n selection--;\n mskd.push(t && index != startSelection - 1\n ? input.value.charAt(index)\n : '_');\n }\n else {\n if (index === selection - 1)\n selection--;\n if (startSelection - 1 === index)\n startSelection--;\n mskd.push(el);\n }\n }\n input.value = !onlyLodash ? mskd.reverse().join('') : '';\n input.selectionStart = input.selectionEnd = selection < 0 ? 0 : selection;\n var event_1 = document.createEvent('Event');\n event_1.initEvent('input', true, true);\n input.dispatchEvent(event_1);\n }\n };\n var keyPressHandler = function (e) {\n var char = String.fromCharCode(e.charCode);\n if (char) {\n e.preventDefault();\n var mskd_1 = [];\n var selectionStart_1 = input.selectionStart;\n var selection_1 = selectionStart_1;\n mask.forEach(function (el, index) {\n if (d[el]) {\n var ch = (index != selectionStart_1)\n ? input.value.charAt(index)\n : char;\n var t = new RegExp(d[el], 'i').test(ch);\n mskd_1.push(t ? ch : '_');\n if (t && selectionStart_1 === index)\n selection_1++;\n }\n else {\n mskd_1.push(el);\n if (selection_1 === index)\n selection_1++;\n if (selectionStart_1 === index)\n selectionStart_1++;\n }\n });\n input.value = mskd_1.join('');\n input.selectionStart = input.selectionEnd = selection_1;\n var event_2 = document.createEvent('Event');\n event_2.initEvent('input', true, true);\n input.dispatchEvent(event_2);\n }\n };\n var inputHandler = function (e) {\n if (e.type === 'focus' && input.value !== '')\n return;\n var mskd = [];\n var startSelection = input.selectionStart;\n mask.forEach(function (el, index) {\n if (d[el]) {\n var t = new RegExp(d[el], 'i').test(input.value.charAt(index));\n mskd.push(t ? input.value.charAt(index) : '_');\n }\n else {\n mskd.push(el);\n }\n });\n input.value = mskd.join('');\n input.selectionStart = input.selectionEnd = startSelection;\n };\n input.addEventListener('keydown', keyDownHandler);\n input.addEventListener('keypress', keyPressHandler);\n input.addEventListener('input', inputHandler);\n input.addEventListener('focus', inputHandler);\n}\n//# sourceMappingURL=mask.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { mask } from './mask';\nvar DomElementBuilder = /** @class */ (function () {\n function DomElementBuilder(tag, parent) {\n if (typeof tag === \"string\") {\n this.element = document.createElement(tag);\n }\n else {\n this.element = tag;\n }\n if (parent && this.element.parentElement !== parent) {\n parent.appendChild(this.element);\n }\n }\n DomElementBuilder.prototype.addChild = function (tag, childBuilder) {\n var builder = domel(tag, this.element);\n if (childBuilder) {\n childBuilder(builder);\n }\n return this;\n };\n DomElementBuilder.prototype.addChildElement = function (element) {\n if (element) {\n this.element.appendChild(element);\n }\n return this;\n };\n DomElementBuilder.prototype.attr = function (attrId, attrValue) {\n this.element.setAttribute(attrId, attrValue);\n return this;\n };\n DomElementBuilder.prototype.id = function (value) {\n return this.attr(\"id\", value);\n };\n DomElementBuilder.prototype.focus = function () {\n this.element.focus();\n return this;\n };\n DomElementBuilder.prototype.title = function (value) {\n return this.attr('title', value);\n };\n DomElementBuilder.prototype.data = function (dataId, dataValue) {\n if (dataValue === void 0) { dataValue = null; }\n if (dataValue === null) {\n this.element.removeAttribute('data-' + dataId);\n return this;\n }\n else {\n return this.attr('data-' + dataId, dataValue);\n }\n };\n DomElementBuilder.prototype.show = function () {\n return this.removeStyle('display');\n };\n DomElementBuilder.prototype.hide = function (toHide) {\n if (toHide === void 0) { toHide = true; }\n return (toHide) ? this.setStyle('display', 'none') : this;\n };\n DomElementBuilder.prototype.visible = function (isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n return isVisible ? this.setStyle('visibility', 'visible') : this.setStyle('visibility', 'hidden');\n };\n DomElementBuilder.prototype.isVisible = function () {\n return !!(this.element.offsetWidth || this.element.offsetHeight || this.element.getClientRects().length);\n };\n DomElementBuilder.prototype.addClass = function (className) {\n var classNames = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n classNames[_i - 1] = arguments[_i];\n }\n if (className) {\n var fullList = __spreadArray(__spreadArray([], className.trim().split(\" \"), true), classNames, true);\n for (var i = 0; i < fullList.length; i++)\n this.element.classList.add(fullList[i]);\n }\n return this;\n };\n DomElementBuilder.prototype.removeClass = function (className) {\n var classNames = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n classNames[_i - 1] = arguments[_i];\n }\n if (className) {\n var fullList = __spreadArray(__spreadArray([], className.trim().split(\" \"), true), classNames, true);\n for (var i = 0; i < fullList.length; i++)\n this.element.classList.remove(fullList[i]);\n }\n return this;\n };\n DomElementBuilder.prototype.toggleClass = function (className, force) {\n if (force === void 0) { force = undefined; }\n if (className) {\n this.element.classList.toggle(className, force);\n }\n return this;\n };\n DomElementBuilder.prototype.on = function (eventType, listener) {\n var eventTypes = eventType.split(' ');\n for (var i = 0; i < eventTypes.length; i++) {\n this.element.addEventListener(eventTypes[i], listener);\n }\n return this;\n };\n DomElementBuilder.prototype.off = function (eventType, listener) {\n var eventTypes = eventType.split(' ');\n for (var i = 0; i < eventTypes.length; i++) {\n this.element.removeEventListener(eventTypes[i], listener);\n }\n return this;\n };\n DomElementBuilder.prototype.setStyle = function (styleId, styleValue) {\n this.element.style.setProperty(styleId, styleValue);\n return this;\n };\n DomElementBuilder.prototype.removeStyle = function (styleId) {\n this.element.style.removeProperty(styleId);\n return this;\n };\n DomElementBuilder.prototype.text = function (text) {\n this.element.innerText = text;\n return this;\n };\n DomElementBuilder.prototype.html = function (html) {\n this.element.innerHTML = html;\n return this;\n };\n DomElementBuilder.prototype.clear = function () {\n var oldElem = this.element;\n this.element = document.createElement(this.element.tagName);\n oldElem.replaceWith(this.element);\n };\n DomElementBuilder.prototype.addText = function (text) {\n var textEl = document.createTextNode(text);\n this.element.appendChild(textEl);\n return this;\n };\n DomElementBuilder.prototype.addHtml = function (html) {\n this.element.innerHTML += html;\n return this;\n };\n DomElementBuilder.prototype.toDOM = function () {\n return this.element;\n };\n DomElementBuilder.prototype.appendTo = function (parent) {\n if (parent) {\n parent.appendChild(this.element);\n }\n return this;\n };\n return DomElementBuilder;\n}());\nexport { DomElementBuilder };\nvar DomTextAreaElementBuilder = /** @class */ (function (_super) {\n __extends(DomTextAreaElementBuilder, _super);\n function DomTextAreaElementBuilder(element, parent) {\n var _this = this;\n if (element) {\n _this = _super.call(this, element, parent) || this;\n }\n else {\n _this = _super.call(this, \"textarea\", parent) || this;\n }\n return _this;\n }\n DomTextAreaElementBuilder.prototype.name = function (value) {\n this.element.name = value;\n return this;\n };\n DomTextAreaElementBuilder.prototype.rows = function (rows) {\n this.element.rows = rows;\n return this;\n };\n DomTextAreaElementBuilder.prototype.cols = function (cols) {\n this.element.cols = cols;\n return this;\n };\n DomTextAreaElementBuilder.prototype.value = function (value) {\n this.element.value = value;\n return this;\n };\n return DomTextAreaElementBuilder;\n}(DomElementBuilder));\nexport { DomTextAreaElementBuilder };\nvar DomInputElementBuilder = /** @class */ (function (_super) {\n __extends(DomInputElementBuilder, _super);\n function DomInputElementBuilder(element, parent) {\n var _this = this;\n if (element) {\n _this = _super.call(this, element, parent) || this;\n }\n else {\n _this = _super.call(this, \"input\", parent) || this;\n }\n return _this;\n }\n DomInputElementBuilder.prototype.name = function (value) {\n this.element.name = value;\n return this;\n };\n DomInputElementBuilder.prototype.type = function (value) {\n this.element.type = value;\n return this;\n };\n DomInputElementBuilder.prototype.size = function (value) {\n this.element.size = value;\n return this;\n };\n DomInputElementBuilder.prototype.value = function (value) {\n if (value instanceof Date) {\n this.element.valueAsDate = value;\n }\n else if (typeof value === \"number\") {\n this.element.valueAsNumber = value;\n }\n else {\n this.element.value = value;\n }\n return this;\n };\n DomInputElementBuilder.prototype.mask = function (maskPattern) {\n mask(this.element, maskPattern);\n return this;\n };\n return DomInputElementBuilder;\n}(DomElementBuilder));\nexport { DomInputElementBuilder };\nvar DomSelectElementBuilder = /** @class */ (function (_super) {\n __extends(DomSelectElementBuilder, _super);\n function DomSelectElementBuilder(element, parent) {\n var _this = this;\n if (element) {\n _this = _super.call(this, element, parent) || this;\n }\n else {\n _this = _super.call(this, \"select\", parent) || this;\n }\n return _this;\n }\n DomSelectElementBuilder.prototype.addOption = function (value) {\n var option = document.createElement('option');\n if (typeof value === \"string\") {\n option.value = value;\n option.innerHTML = value;\n }\n else {\n option.value = value.value;\n option.innerHTML = value.title || value.value;\n option.selected = value.selected || false;\n }\n this.element.appendChild(option);\n return this;\n };\n DomSelectElementBuilder.prototype.value = function (value) {\n this.element.value = value;\n return this;\n };\n return DomSelectElementBuilder;\n}(DomElementBuilder));\nexport { DomSelectElementBuilder };\nexport function domel(tag, parent) {\n if (tag === \"div\" || tag instanceof HTMLDivElement) {\n return new DomElementBuilder(tag, parent);\n }\n if (tag === \"span\" || tag instanceof HTMLSpanElement) {\n return new DomElementBuilder(tag, parent);\n }\n else if (tag === \"a\" || tag instanceof HTMLAnchorElement) {\n return new DomElementBuilder(tag, parent);\n }\n else if (tag === \"button\" || tag instanceof HTMLButtonElement) {\n return new DomElementBuilder(tag, parent);\n }\n else if (tag === \"img\" || tag instanceof HTMLImageElement) {\n return new DomElementBuilder(tag, parent);\n }\n else if (tag === \"input\" || tag instanceof HTMLInputElement) {\n return new DomInputElementBuilder(tag instanceof HTMLInputElement ? tag : null, parent);\n }\n else if (tag === \"textarea\" || tag instanceof HTMLTextAreaElement) {\n return new DomTextAreaElementBuilder(tag instanceof HTMLTextAreaElement ? tag : null, parent);\n }\n else if (tag === \"select\" || tag instanceof HTMLSelectElement) {\n return new DomSelectElementBuilder(tag instanceof HTMLSelectElement ? tag : null, parent);\n }\n return new DomElementBuilder(tag, parent);\n}\n//# sourceMappingURL=dom_elem_builder.js.map","import { utils } from '@easydata/core';\nimport { getElementAbsolutePos } from './ui-utils';\nimport { domel } from '../utils/dom_elem_builder';\nvar touchEventIsDefined = typeof TouchEvent !== 'undefined';\nexport var DropEffect;\n(function (DropEffect) {\n DropEffect[\"None\"] = \"none\";\n DropEffect[\"Allow\"] = \"allow\";\n DropEffect[\"Forbid\"] = \"forbid\";\n})(DropEffect || (DropEffect = {}));\nvar EqDragEvent = /** @class */ (function () {\n function EqDragEvent(item, dragImage, sourceEvent) {\n this.dropEffect = DropEffect.Allow;\n this.pageX = 0;\n this.pageY = 0;\n this.item = item;\n this.dragImage = dragImage;\n this.data = item.data;\n this.sourceEvent = sourceEvent;\n if (sourceEvent && sourceEvent instanceof MouseEvent) {\n this.pageX = sourceEvent.pageX,\n this.pageY = sourceEvent.pageY;\n }\n if (sourceEvent && touchEventIsDefined && sourceEvent instanceof TouchEvent\n && sourceEvent.touches[0]) {\n this.pageX = sourceEvent.touches[0].pageX,\n this.pageY = sourceEvent.touches[0].pageY;\n }\n }\n return EqDragEvent;\n}());\nexport { EqDragEvent };\nvar Position = /** @class */ (function () {\n function Position(ev) {\n if (ev && ev instanceof MouseEvent) {\n this.x = ev.pageX,\n this.y = ev.pageY;\n }\n if (ev && touchEventIsDefined && ev instanceof TouchEvent && ev.touches[0]) {\n this.x = ev.touches[0].pageX,\n this.y = ev.touches[0].pageY;\n }\n }\n return Position;\n}());\nvar DragManager = /** @class */ (function () {\n function DragManager() {\n this.delta = 5;\n this.draggableItem = null;\n this.dragImage = null;\n this.finishedSuccessfully = false;\n this.mouseDownPosition = null;\n this.containerDescriptors = [];\n this.containerDescriptorIndex = -1;\n this.dropEffect = DropEffect.None;\n this.classPrefix = 'eqjs-drop';\n this.DRAG_DISABLED_ATTR = 'drag-disabled';\n }\n DragManager.prototype.registerDraggableItem = function (descriptor) {\n var _this = this;\n var element = descriptor.element;\n if (!element) {\n throw Error(\"Element in draggle item is null or undefined\");\n }\n element.ondragstart = function () {\n return false;\n };\n var detectDragging = function (ev) {\n if (element.hasAttribute(_this.DRAG_DISABLED_ATTR)) {\n return;\n }\n ev.preventDefault();\n if (ev instanceof MouseEvent) {\n ev.stopPropagation();\n }\n var cursorPosition = new Position(ev);\n if (Math.abs(cursorPosition.x - _this.mouseDownPosition.x) > _this.delta\n || Math.abs(cursorPosition.y - _this.mouseDownPosition.y) > _this.delta) {\n startDragging(ev);\n }\n };\n var mouseMoveEventListener = function (ev) {\n _this.mouseMoveDragListener(ev);\n };\n var startDragging = function (ev) {\n ev.preventDefault();\n ev.stopPropagation();\n element.removeEventListener('mousemove', detectDragging);\n element.removeEventListener('touchmove', detectDragging);\n _this.finishedSuccessfully = false;\n if (descriptor.beforeDragStart)\n descriptor.beforeDragStart();\n _this.dragImage = domel('div')\n .setStyle('position', 'absolute')\n .setStyle('z-index', '65530')\n .toDOM();\n document.body.appendChild(_this.dragImage);\n _this.dragImage.appendChild(element.cloneNode(true));\n if (descriptor.renderer) {\n descriptor.renderer(_this.dragImage);\n }\n _this.dropEffect = DropEffect.None;\n _this.updateCusror(_this.dropEffect);\n _this.updateImageClass(_this.dropEffect);\n _this.draggableItem = {\n element: element,\n scope: descriptor.scope,\n data: descriptor.data\n };\n _this.updateDragItemPosition(ev);\n var event = new EqDragEvent(_this.draggableItem, _this.dragImage, ev);\n event.dropEffect = _this.dropEffect;\n if (descriptor.onDragStart) {\n descriptor.onDragStart(event);\n }\n if (_this.dropEffect !== event.dropEffect) {\n _this.dropEffect = event.dropEffect;\n _this.updateImageClass(_this.dropEffect);\n }\n document.addEventListener('mousemove', mouseMoveEventListener, true);\n document.addEventListener('touchmove', mouseMoveEventListener, true);\n };\n var mouseDownListener = function (ev) {\n if (touchEventIsDefined && ev instanceof TouchEvent) {\n ev.preventDefault();\n }\n _this.mouseDownPosition = new Position(ev);\n element.addEventListener('mousemove', detectDragging);\n element.addEventListener('touchmove', detectDragging);\n document.addEventListener('mouseup', mouseUpListener);\n document.addEventListener('touchend', mouseUpListener);\n };\n element.addEventListener('mousedown', mouseDownListener);\n element.addEventListener('touchstart', mouseDownListener);\n var mouseUpListener = function (ev) {\n _this.mouseDownPosition = null;\n element.removeEventListener('mousemove', detectDragging);\n element.removeEventListener('touchmove', detectDragging);\n document.removeEventListener('mousemove', mouseMoveEventListener, true);\n document.removeEventListener('touchmove', mouseMoveEventListener, true);\n if (_this.draggableItem) {\n endDraggind(ev);\n }\n };\n var endDraggind = function (ev) {\n try {\n if (_this.containerDescriptorIndex >= 0) {\n var dropContDesc = _this.containerDescriptors[_this.containerDescriptorIndex];\n var container = {\n element: dropContDesc.element,\n scopes: dropContDesc.scopes,\n data: dropContDesc.data\n };\n var event_1 = new EqDragEvent(_this.draggableItem, _this.dragImage, ev);\n try {\n if (container.scopes.indexOf(_this.draggableItem.scope) >= 0\n && _this.dropEffect === DropEffect.Allow) {\n _this.finishedSuccessfully = true;\n if (dropContDesc.onDrop) {\n dropContDesc.onDrop(container, event_1);\n }\n }\n }\n finally {\n if (dropContDesc.onDragLeave) {\n dropContDesc.onDragLeave(container, event_1);\n }\n }\n }\n }\n finally {\n try {\n var event_2 = new EqDragEvent(_this.draggableItem, _this.dragImage, ev);\n event_2.data.finishedSuccessfully = _this.finishedSuccessfully;\n if (descriptor.onDragEnd) {\n descriptor.onDragEnd(event_2);\n }\n }\n finally {\n _this.draggableItem = null;\n if (_this.dragImage && _this.dragImage.parentElement) {\n _this.dragImage.parentElement.removeChild(_this.dragImage);\n }\n _this.dragImage = null;\n _this.finishedSuccessfully = false;\n document.removeEventListener('mouseup', mouseUpListener);\n document.removeEventListener('touchend', mouseUpListener);\n }\n }\n };\n };\n DragManager.prototype.registerDropContainer = function (descriptor) {\n var element = descriptor.element;\n if (!element) {\n throw Error(\"Element in drop container is null or undefined\");\n }\n this.containerDescriptors.push(descriptor);\n };\n DragManager.prototype.removeDropContainer = function (descriptorOrSlot) {\n var descs = this.containerDescriptors\n .filter(function (desc) { return desc === descriptorOrSlot\n || desc.element == descriptorOrSlot; });\n if (descs) {\n for (var _i = 0, descs_1 = descs; _i < descs_1.length; _i++) {\n var desc = descs_1[_i];\n utils.removeArrayItem(this.containerDescriptors, desc);\n }\n }\n };\n DragManager.prototype.mouseMoveDragListener = function (ev) {\n if (ev instanceof MouseEvent) {\n ev.preventDefault();\n }\n ev.stopPropagation();\n this.updateDragItemPosition(ev);\n if (this.containerDescriptorIndex == -1) {\n for (var i = 0; i < this.containerDescriptors.length; i++) {\n var descriptor = this.containerDescriptors[i];\n if (this.detectDragEnterEvent(descriptor.element, ev)) {\n this.containerDescriptorIndex = i;\n break;\n }\n }\n if (this.containerDescriptorIndex >= 0) {\n this.dragEnterEvent(ev);\n }\n }\n else {\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\n if (this.detectDragLeaveEvent(descriptor.element, ev)) {\n this.dragLeaveEvent(ev);\n this.containerDescriptorIndex = -1;\n }\n }\n if (this.containerDescriptorIndex >= 0) {\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\n var container = {\n element: descriptor.element,\n scopes: descriptor.scopes,\n data: descriptor.data\n };\n if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {\n var event_3 = new EqDragEvent(this.draggableItem, this.dragImage, ev);\n event_3.dropEffect = this.dropEffect;\n if (descriptor.onDragOver) {\n descriptor.onDragOver(container, event_3);\n }\n }\n }\n };\n DragManager.prototype.updateCusror = function (dropEffect) {\n switch (dropEffect) {\n case DropEffect.Allow:\n this.setCursorStyle(this.dragImage, 'grabbing');\n break;\n case DropEffect.Forbid:\n this.setCursorStyle(this.dragImage, 'no-drop');\n break;\n default:\n this.setCursorStyle(this.dragImage, 'grabbing');\n break;\n }\n };\n DragManager.prototype.updateImageClass = function (dropEffect) {\n this.dragImage.classList.remove(\"\".concat(this.classPrefix, \"-allow\"));\n this.dragImage.classList.remove(\"\".concat(this.classPrefix, \"-forbid\"));\n this.dragImage.classList.remove(\"\".concat(this.classPrefix, \"-none\"));\n switch (dropEffect) {\n case DropEffect.Allow:\n this.dragImage.classList.add(\"\".concat(this.classPrefix, \"-allow\"));\n break;\n case DropEffect.None:\n this.dragImage.classList.add(\"\".concat(this.classPrefix, \"-none\"));\n break;\n case DropEffect.Forbid:\n this.dragImage.classList.add(\"\".concat(this.classPrefix, \"-forbid\"));\n break;\n default:\n this.dragImage.classList.add(\"\".concat(this.classPrefix, \"-none\"));\n break;\n }\n };\n DragManager.prototype.setCursorStyle = function (element, cursor) {\n if (element) {\n element.style.cursor = cursor;\n for (var i = 0; i < element.children.length; i++) {\n this.setCursorStyle(element.children[i], cursor);\n }\n }\n };\n DragManager.prototype.updateDragItemPosition = function (ev) {\n if (this.dragImage) {\n var pos = new Position(ev);\n this.dragImage.style.top = (pos.y - this.dragImage.offsetHeight / 2) + 'px';\n this.dragImage.style.left = (pos.x - this.dragImage.offsetWidth / 2) + 'px';\n }\n };\n DragManager.prototype.dragEnterEvent = function (ev) {\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\n var container = {\n element: descriptor.element,\n scopes: descriptor.scopes,\n data: descriptor.data\n };\n if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {\n var event_4 = new EqDragEvent(this.draggableItem, this.dragImage, ev);\n event_4.dropEffect = DropEffect.Allow;\n if (descriptor.onDragEnter) {\n descriptor.onDragEnter(container, event_4);\n }\n this.dropEffect = event_4.dropEffect;\n this.updateCusror(this.dropEffect);\n this.updateImageClass(this.dropEffect);\n }\n else {\n if (this.dropEffect !== DropEffect.Forbid) {\n this.dropEffect = DropEffect.None;\n this.updateCusror(this.dropEffect);\n this.updateImageClass(this.dropEffect);\n }\n }\n };\n DragManager.prototype.dragLeaveEvent = function (ev) {\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\n var container = {\n element: descriptor.element,\n scopes: descriptor.scopes,\n data: descriptor.data\n };\n if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {\n var event_5 = new EqDragEvent(this.draggableItem, this.dragImage, ev);\n event_5.dropEffect = DropEffect.None;\n if (descriptor.onDragLeave) {\n descriptor.onDragLeave(container, event_5);\n }\n this.dropEffect = event_5.dropEffect;\n this.updateCusror(this.dropEffect);\n this.updateImageClass(this.dropEffect);\n }\n };\n DragManager.prototype.detectDragEnterEvent = function (container, ev) {\n var containerPos = getElementAbsolutePos(container);\n var pos = new Position(ev);\n if (pos.y < containerPos.y || pos.y > containerPos.y + container.offsetHeight) {\n return false;\n }\n if (pos.x < containerPos.x || pos.x > containerPos.x + container.offsetWidth) {\n return false;\n }\n return true;\n };\n DragManager.prototype.detectDragLeaveEvent = function (container, ev) {\n var containerPos = getElementAbsolutePos(container);\n var pos = new Position(ev);\n if (pos.y > containerPos.y && pos.y < containerPos.y + container.offsetHeight\n && pos.x > containerPos.x && pos.x < containerPos.x + container.offsetWidth) {\n return false;\n }\n return true;\n };\n return DragManager;\n}());\nexport { DragManager };\n//global variable\nexport var eqDragManager = new DragManager();\n//# sourceMappingURL=drag_manager.js.map","export var AutoResizeColumns;\n(function (AutoResizeColumns) {\n AutoResizeColumns[AutoResizeColumns[\"Always\"] = 0] = \"Always\";\n AutoResizeColumns[AutoResizeColumns[\"Once\"] = 1] = \"Once\";\n AutoResizeColumns[AutoResizeColumns[\"Never\"] = 2] = \"Never\";\n})(AutoResizeColumns || (AutoResizeColumns = {}));\n//# sourceMappingURL=easy_grid_options.js.map","import { i18n, DataType } from '@easydata/core';\nimport { GridColumnAlign } from './easy_grid_columns';\nvar cssPrefix = \"keg\";\nexport var DFMT_REGEX = /{0:(.*?)}/g;\nexport var CellRendererType;\n(function (CellRendererType) {\n CellRendererType[CellRendererType[\"STRING\"] = 1] = \"STRING\";\n CellRendererType[CellRendererType[\"NUMBER\"] = 2] = \"NUMBER\";\n CellRendererType[CellRendererType[\"DATETIME\"] = 3] = \"DATETIME\";\n CellRendererType[CellRendererType[\"BOOL\"] = 4] = \"BOOL\";\n})(CellRendererType || (CellRendererType = {}));\nvar StringCellRendererDefault = function (value, column, cellValueElement, rowElement) {\n var text = value ? value.toString().replace(/\\n/g, '\\u21B5 ') : '';\n cellValueElement.innerText = text;\n cellValueElement.title = text;\n if (column.align == GridColumnAlign.NONE) {\n cellValueElement.classList.add(\"\".concat(cssPrefix, \"-cell-value-align-left\"));\n }\n};\nvar NumberCellRendererDefault = function (value, column, cellValueElement, rowElement) {\n var strValue = (value || '').toString();\n if (typeof value == 'number') {\n if (column.dataColumn && column.dataColumn.displayFormat\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\n strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {\n return i18n.numberToStr(value, $1);\n });\n }\n else {\n strValue = value.toLocaleString();\n }\n }\n cellValueElement.innerText = strValue;\n cellValueElement.title = strValue;\n if (column.align == GridColumnAlign.NONE) {\n cellValueElement.classList.add(\"\".concat(cssPrefix, \"-cell-value-align-right\"));\n }\n};\nvar DateTimeCellRendererDefault = function (value, column, cellValueElement, rowElement) {\n var isDate = Object.prototype.toString.call(value) === '[object Date]';\n var strValue = (value || '').toString();\n if (isDate) {\n if (column.dataColumn && column.dataColumn.displayFormat\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\n strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {\n return i18n.dateTimeToStr(value, column.type, $1);\n });\n }\n else {\n var locale = i18n.getCurrentLocale();\n var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };\n switch (column.type) {\n case DataType.Date:\n strValue = value.toLocaleDateString(locale);\n break;\n case DataType.Time:\n strValue = value.toLocaleTimeString(locale, timeOptions);\n break;\n case DataType.DateTime:\n strValue = \"\".concat(value.toLocaleDateString(locale), \" \").concat(value.toLocaleTimeString(locale, timeOptions));\n break;\n }\n }\n }\n cellValueElement.innerText = strValue;\n cellValueElement.title = strValue;\n if (column.align == GridColumnAlign.NONE) {\n cellValueElement.classList.add(\"\".concat(cssPrefix, \"-cell-value-align-right\"));\n }\n};\nvar BoolCellRendererDefault = function (value, column, cellValueElement, rowElement) {\n if (column.dataColumn && column.dataColumn.displayFormat\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\n var strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {\n return i18n.booleanToStr(value, $1);\n });\n return StringCellRendererDefault(strValue, column, cellValueElement, rowElement);\n }\n else {\n cellValueElement.classList.add(\"\".concat(cssPrefix, \"-cell-value-bool\"));\n cellValueElement.classList.add(\"\".concat(cssPrefix, \"-\").concat(value ? 'cell-value-true' : 'cell-value-false'));\n }\n};\nvar GridCellRendererStore = /** @class */ (function () {\n function GridCellRendererStore(options) {\n this.renderers = {};\n this.defaultRenderers = {};\n this.registerRenderer('StringDefault', StringCellRendererDefault);\n this.setDefaultRenderer(CellRendererType.STRING, StringCellRendererDefault);\n this.registerRenderer('NumberDefault', NumberCellRendererDefault);\n this.setDefaultRenderer(CellRendererType.NUMBER, NumberCellRendererDefault);\n this.registerRenderer('DateTimeDefault', DateTimeCellRendererDefault);\n this.setDefaultRenderer(CellRendererType.DATETIME, DateTimeCellRendererDefault);\n this.registerRenderer('BoolDefault', BoolCellRendererDefault);\n this.setDefaultRenderer(CellRendererType.BOOL, BoolCellRendererDefault);\n }\n GridCellRendererStore.prototype.getDefaultRenderer = function (columnType) {\n var cellType = this.getCellType(columnType);\n return this.defaultRenderers[CellRendererType[cellType]];\n };\n GridCellRendererStore.prototype.getDefaultRendererByType = function (rendererType) {\n return this.defaultRenderers[CellRendererType[rendererType]];\n };\n GridCellRendererStore.prototype.setDefaultRenderer = function (cellType, renderer) {\n if (renderer) {\n this.defaultRenderers[CellRendererType[cellType]] = renderer;\n }\n };\n GridCellRendererStore.prototype.getRenderer = function (name) {\n return this.renderers[name];\n };\n GridCellRendererStore.prototype.registerRenderer = function (name, renderer) {\n this.renderers[name] = renderer;\n };\n GridCellRendererStore.prototype.getCellType = function (dataType) {\n switch (dataType) {\n case DataType.Autoinc:\n case DataType.Byte:\n case DataType.Word:\n case DataType.Currency:\n case DataType.Float:\n case DataType.Int32:\n case DataType.Int64:\n return CellRendererType.NUMBER;\n case DataType.Date:\n case DataType.DateTime:\n case DataType.Time:\n return CellRendererType.DATETIME;\n case DataType.Bool:\n return CellRendererType.BOOL;\n default:\n return CellRendererType.STRING;\n }\n };\n return GridCellRendererStore;\n}());\nexport { GridCellRendererStore };\n//# sourceMappingURL=easy_grid_cell_renderer.js.map","import { utils, ColumnAlignment } from '@easydata/core';\nimport { CellRendererType } from \"./easy_grid_cell_renderer\";\nvar DEFAULT_WIDTH_STRING = 250;\nvar ROW_NUM_WIDTH = 60;\nexport var GridColumnAlign;\n(function (GridColumnAlign) {\n GridColumnAlign[GridColumnAlign[\"NONE\"] = 1] = \"NONE\";\n GridColumnAlign[GridColumnAlign[\"LEFT\"] = 2] = \"LEFT\";\n GridColumnAlign[GridColumnAlign[\"CENTER\"] = 3] = \"CENTER\";\n GridColumnAlign[GridColumnAlign[\"RIGHT\"] = 4] = \"RIGHT\";\n})(GridColumnAlign || (GridColumnAlign = {}));\nfunction MapAlignment(alignment) {\n switch (alignment) {\n case ColumnAlignment.Left:\n return GridColumnAlign.LEFT;\n case ColumnAlignment.Center:\n return GridColumnAlign.CENTER;\n case ColumnAlignment.Right:\n return GridColumnAlign.RIGHT;\n default:\n return GridColumnAlign.NONE;\n }\n}\nvar GridColumn = /** @class */ (function () {\n function GridColumn(column, grid, isRowNum) {\n if (isRowNum === void 0) { isRowNum = false; }\n this._label = null;\n this._description = null;\n //public left: number;\n this.align = GridColumnAlign.NONE;\n this.isVisible = true;\n this.isRowNum = false;\n this.dataColumn = column;\n this.grid = grid;\n var widthOptions = grid.options.columnWidths || {};\n if (column) {\n if (column.style.alignment) {\n this.align = MapAlignment(column.style.alignment);\n }\n this.width = (widthOptions && widthOptions[this.type]) ? widthOptions[this.type].default : DEFAULT_WIDTH_STRING;\n this.cellRenderer = this.grid.cellRendererStore.getDefaultRenderer(column.type);\n this._description = column.description;\n }\n else if (isRowNum) {\n this.isRowNum = true;\n this.width = (widthOptions && widthOptions.rowNumColumn) ? widthOptions.rowNumColumn.default : ROW_NUM_WIDTH;\n this._label = '';\n this.cellRenderer = this.grid.cellRendererStore.getDefaultRendererByType(CellRendererType.NUMBER);\n }\n if (grid && grid.options && grid.options.onGetCellRenderer) {\n this.cellRenderer = grid.options.onGetCellRenderer(this, this.cellRenderer) || this.cellRenderer;\n }\n }\n Object.defineProperty(GridColumn.prototype, \"label\", {\n get: function () {\n return this._label ? this._label : this.isRowNum ? '' : this.dataColumn.label;\n },\n set: function (value) {\n this._label = this.label;\n },\n enumerable: false,\n configurable: true\n });\n ;\n Object.defineProperty(GridColumn.prototype, \"description\", {\n /** Get column description. */\n get: function () {\n return this._description;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(GridColumn.prototype, \"type\", {\n get: function () {\n return this.dataColumn ? this.dataColumn.type : null;\n },\n enumerable: false,\n configurable: true\n });\n return GridColumn;\n}());\nexport { GridColumn };\nvar GridColumnList = /** @class */ (function () {\n function GridColumnList(columnList, grid) {\n this.items = [];\n this.grid = grid;\n this.sync(columnList);\n }\n GridColumnList.prototype.sync = function (columnList, hasRowNumCol) {\n if (hasRowNumCol === void 0) { hasRowNumCol = true; }\n this.clear();\n var rowNumCol = new GridColumn(null, this.grid, true);\n this.add(rowNumCol);\n if (!hasRowNumCol) {\n rowNumCol.isVisible = false;\n }\n if (columnList) {\n for (var _i = 0, _a = columnList.getItems(); _i < _a.length; _i++) {\n var column = _a[_i];\n var col = new GridColumn(column, this.grid);\n if (this.grid.options.onSyncGridColumn) {\n this.grid.options.onSyncGridColumn(col);\n }\n this.add(col);\n }\n }\n };\n Object.defineProperty(GridColumnList.prototype, \"count\", {\n get: function () {\n return this.items.length;\n },\n enumerable: false,\n configurable: true\n });\n GridColumnList.prototype.add = function (col) {\n var index = this.items.length;\n this.items.push(col);\n return index;\n };\n GridColumnList.prototype.put = function (index, col) {\n if (index >= 0 && index < this.items.length) {\n this.items[index] = col;\n }\n };\n GridColumnList.prototype.move = function (col, newIndex) {\n var oldIndex = this.items.indexOf(col);\n if (oldIndex >= 0 && oldIndex != newIndex)\n utils.moveArrayItem(this.items, oldIndex, newIndex);\n };\n GridColumnList.prototype.get = function (index) {\n if (index >= 0 && index < this.items.length) {\n return this.items[index];\n }\n else {\n return null;\n }\n };\n // public getIndex(name: string) : number {\n // return this.mapper[name];\n // }\n GridColumnList.prototype.getItems = function () {\n return this.items;\n };\n GridColumnList.prototype.removeAt = function (index) {\n var col = this.get(index);\n this.items.splice(index, 1);\n //delete this.mapper[col.name];\n };\n GridColumnList.prototype.clear = function () {\n this.items = [];\n //this.mapper = {};\n };\n return GridColumnList;\n}());\nexport { GridColumnList };\n//# sourceMappingURL=easy_grid_columns.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { EventEmitter, DataRow, utils, i18n, DataType } from '@easydata/core';\nimport { eqDragManager, DropEffect } from '../utils/drag_manager';\nimport { domel } from '../utils/dom_elem_builder';\nimport { getElementAbsolutePos, eqCssPrefix } from '../utils/ui-utils';\nimport { AutoResizeColumns } from './easy_grid_options';\nimport { GridColumnList, GridColumnAlign } from './easy_grid_columns';\nimport { GridCellRendererStore } from './easy_grid_cell_renderer';\nvar DEFAULT_ROW_HEIGHT = 36;\nvar DEFAULT_ROW_COUNT = 15;\n/** Represents a grid widget with columns rows, paging, custom rendering and more */\nvar EasyGrid = /** @class */ (function () {\n /** Creates and initializes all internal properties of the grid object */\n function EasyGrid(options) {\n this.cssPrefix = \"keg\";\n this.pagination = { page: 1, pageSize: 30, total: 0 };\n this.paginationOptions = {\n maxButtonCount: 10,\n useBootstrap: false //true\n };\n this.defaultDataGridOptions = {\n slot: null,\n dataTable: null,\n fixHeightOnFirstRender: false,\n syncGridColumns: true,\n useRowNumeration: true,\n allowDragDrop: false,\n aggregates: {\n settings: null,\n calculator: null\n },\n paging: {\n enabled: true,\n pageSize: 30,\n pageSizeItems: [20, 30, 50, 100, 200]\n },\n columnWidths: {\n autoResize: AutoResizeColumns.Always,\n stringColumns: {\n min: 100,\n max: 500,\n default: 250\n },\n numberColumns: {\n min: 60,\n default: 120\n },\n boolColumns: {\n min: 50,\n default: 80\n },\n dateColumns: {\n min: 80,\n default: 200\n },\n otherColumns: {\n min: 100,\n max: 500,\n default: 250\n },\n rowNumColumn: {\n min: 40,\n default: 60\n }\n },\n showPlusButton: false,\n viewportRowsCount: null,\n showActiveRow: true\n };\n this.rowsOnPagePromise = null;\n this.containerInitialHeight = 0;\n this.firstRender = true;\n this.prevRowTotals = null;\n this.landingIndex = -1;\n this.landingSlot = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-col-landing-slot\"))\n .addChildElement(domel('div')\n .toDOM())\n .toDOM();\n this._activeRowIndex = -1;\n if (options && options.paging) {\n options.paging = utils.assign(this.defaultDataGridOptions.paging, options.paging);\n }\n this.options = this.mergeOptions(options);\n this.processColumnWidthsOptions();\n if (!this.options.slot)\n throw Error('\"slot\" parameter is required to initialize EasyDataGrid');\n if (!this.options.dataTable)\n throw Error('\"dataTable\" parameter is required to initialize EasyDataGrid');\n this.dataTable = options.dataTable;\n this.eventEmitter = new EventEmitter(this);\n this.cellRendererStore = new GridCellRendererStore(options);\n this.columns = new GridColumnList(this.dataTable.columns, this);\n this.setSlot(this.options.slot);\n this.init(this.options);\n }\n EasyGrid.prototype.mergeOptions = function (options) {\n var colWidthOptions = utils.assignDeep({}, this.defaultDataGridOptions.columnWidths, options.columnWidths);\n var pagingOptions = utils.assignDeep({}, this.defaultDataGridOptions.paging, options.paging);\n var result = utils.assign({}, this.defaultDataGridOptions, options);\n result.columnWidths = colWidthOptions;\n result.paging = pagingOptions;\n return result;\n };\n EasyGrid.prototype.processColumnWidthsOptions = function () {\n var widthOptions = this.options.columnWidths;\n if (!widthOptions)\n return;\n //string columns\n utils.getStringDataTypes().forEach(function (dataType) {\n widthOptions[dataType] = __assign(__assign({}, widthOptions.stringColumns), widthOptions[dataType]);\n });\n //numeric columns\n utils.getNumericDataTypes().forEach(function (dataType) {\n widthOptions[dataType] = __assign(__assign({}, widthOptions.numberColumns), widthOptions[dataType]);\n });\n //bool columns\n widthOptions[DataType.Bool] = __assign(__assign({}, widthOptions.boolColumns), widthOptions[DataType.Bool]);\n //date columns\n utils.getDateDataTypes().forEach(function (dataType) {\n widthOptions[dataType] = __assign(__assign({}, widthOptions.dateColumns), widthOptions[dataType]);\n });\n //other columns\n var knownTypes = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], utils.getStringDataTypes(), true), utils.getNumericDataTypes(), true), utils.getDateDataTypes(), true), [\n DataType.Bool\n ], false);\n utils.getAllDataTypes().forEach(function (dataType) {\n if (!(dataType in knownTypes)) {\n widthOptions[dataType] = __assign(__assign({}, widthOptions.otherColumns), widthOptions[dataType]);\n }\n });\n widthOptions[DataType.Unknown] = widthOptions.otherColumns;\n };\n EasyGrid.prototype.setSlot = function (slot) {\n if (typeof slot === 'string') {\n if (slot.length) {\n if (slot[0] === '#') {\n this.slot = document.getElementById(slot.substring(1));\n }\n else if (slot[0] === '.') {\n var result = document.getElementsByClassName(slot.substring(1));\n if (result.length)\n this.slot = result[0];\n }\n else {\n throw Error('Unrecognized slot parameter ' +\n '(Must be id, class or HTMLElement): ' + slot);\n }\n }\n }\n else {\n this.slot = slot;\n }\n };\n /** Initializes grid widget according to the options passed in the parameter */\n EasyGrid.prototype.init = function (options) {\n var _this = this;\n if (options.onInit) {\n this.addEventListener('init', options.onInit);\n }\n if (options.onRowClick) {\n this.addEventListener('rowClick', options.onRowClick);\n }\n if (options.onRowDbClick) {\n this.addEventListener('rowDbClick', options.onRowDbClick);\n }\n if (options.onPlusButtonClick) {\n this.addEventListener('plusButtonClick', options.onPlusButtonClick);\n }\n if (options.onColumnChanged) {\n this.addEventListener('columnChanged', options.onColumnChanged);\n }\n if (options.onColumnDeleted) {\n this.addEventListener('columnDeleted', options.onColumnDeleted);\n }\n if (options.onColumnMoved) {\n this.addEventListener('columnMoved', options.onColumnMoved);\n }\n if (options.onPageChanged) {\n this.addEventListener('pageChanged', options.onPageChanged);\n }\n if (options.onActiveRowChanged) {\n this.addEventListener('activeRowChanged', options.onActiveRowChanged);\n }\n this.addEventListener('pageChanged', function (ev) { return _this.activeRowIndex = -1; });\n utils.assignDeep(this.paginationOptions, options.pagination);\n this.pagination.pageSize = this.options.paging.pageSize\n || this.pagination.pageSize;\n if (this.options.allowDragDrop) {\n eqDragManager.registerDropContainer({\n element: this.slot,\n scopes: [\"gridColumnMove\"],\n onDragEnter: function (_, ev) {\n _this.slot.classList.add(\"\".concat(eqCssPrefix, \"-drophover\"));\n _this.showLandingSlot(ev.pageX, ev.pageY);\n },\n onDragOver: function (_, ev) {\n _this.showLandingSlot(ev.pageX, ev.pageY);\n },\n onDragLeave: function (_, ev) {\n ev.dropEffect = DropEffect.Forbid;\n _this.slot.classList.remove(\"\".concat(eqCssPrefix, \"-drophover\"));\n _this.hideLandingSlot();\n },\n onDrop: function (_, ev) {\n _this.dataTable.columns.move(ev.data.column, _this.landingIndex);\n _this.refresh();\n _this.fireEvent({\n type: 'columnMoved',\n columnId: ev.data.column.id,\n newIndex: _this.landingIndex\n });\n }\n });\n }\n this.refresh();\n this.fireEvent('init');\n };\n /** Fires a grid event. You can pass either an event type\n * (like 'init', 'rowClick', 'pageChanged', etc )\n * or a ready-to-use grid event object\n * */\n EasyGrid.prototype.fireEvent = function (event) {\n if (typeof event === \"string\") {\n this.eventEmitter.fire(event);\n }\n else {\n this.eventEmitter.fire(event.type, event);\n }\n };\n /** Allows to set the data (represented by a EasyDataTable object)\n * or to replace the existing one associated with the grid */\n EasyGrid.prototype.setData = function (data) {\n this.dataTable = data;\n this.clear();\n this.refresh();\n };\n /** Returns the EasyDataTable object associated with the grid via `setData()` call */\n EasyGrid.prototype.getData = function () {\n return this.dataTable;\n };\n /** Gets the list of grid columns */\n EasyGrid.prototype.getColumns = function () {\n return this.columns;\n };\n /** This function is called when the grid is destroyed */\n EasyGrid.prototype.destroy = function () {\n this.slot.innerHTML = \"\";\n };\n /** Clears the current DOM object and re-renders everything from the scratch */\n EasyGrid.prototype.refresh = function () {\n this.clearDOM();\n this.render();\n };\n EasyGrid.prototype.clearDOM = function () {\n this.slot.innerHTML = '';\n };\n /** Clears all DOM object in the grid and return it to its initial state */\n EasyGrid.prototype.clear = function () {\n this.pagination.page = 1;\n this.clearDOM();\n };\n /** Renders the grid */\n EasyGrid.prototype.render = function () {\n var _this = this;\n if (!this.hasData() && !this.options.showPlusButton)\n return;\n this.containerInitialHeight = this.slot.clientHeight;\n this.rootDiv = document.createElement('div');\n this.rootDiv.style.width = '100%';\n this.rootDiv.classList.add(\"\".concat(this.cssPrefix, \"-root\"));\n this.columns.sync(this.dataTable.columns, this.options.useRowNumeration);\n this.renderHeader();\n this.rootDiv.appendChild(this.headerDiv);\n this.renderBody();\n this.rootDiv.appendChild(this.bodyDiv);\n this.renderFooter();\n this.rootDiv.appendChild(this.footerDiv);\n var gridContainer = document.createElement('div');\n gridContainer.classList.add(\"\".concat(this.cssPrefix, \"-container\"));\n gridContainer.appendChild(this.rootDiv);\n this.slot.appendChild(gridContainer);\n var needAutoResize = this.options.columnWidths.autoResize !== AutoResizeColumns.Never;\n if (this.rowsOnPagePromise) {\n this.rowsOnPagePromise\n .then(function () { return _this.updateHeight(); })\n .then(function () {\n _this.firstRender = false;\n _this.rowsOnPagePromise = null;\n });\n }\n else {\n setTimeout(function () {\n _this.updateHeight()\n .then(function () {\n _this.firstRender = false;\n if (needAutoResize) {\n _this.resizeColumns();\n }\n });\n }, 100);\n }\n };\n EasyGrid.prototype.updateHeight = function () {\n var _this = this;\n return new Promise(function (resolve) {\n if (_this.options.viewportRowsCount) {\n var firstRow = _this.bodyCellContainerDiv.firstElementChild;\n var rowHeight = firstRow ? firstRow.offsetHeight : DEFAULT_ROW_HEIGHT;\n var rowCount = _this.options.viewportRowsCount; // || DEFAULT_ROW_COUNT;\n var viewportHeight_1 = rowHeight * rowCount;\n domel(_this.bodyViewportDiv)\n .setStyle('height', \"\".concat(viewportHeight_1, \"px\"));\n setTimeout(function () {\n var sbHeight = _this.bodyViewportDiv.offsetHeight - _this.bodyViewportDiv.clientHeight;\n viewportHeight_1 = viewportHeight_1 + sbHeight;\n domel(_this.bodyViewportDiv)\n .setStyle('height', \"\".concat(viewportHeight_1, \"px\"));\n resolve();\n }, 100);\n return;\n }\n else if (_this.containerInitialHeight > 0) {\n // comment for now since it does not work in all cases\n // const bodyHeight = this.containerInitialHeight - this.headerDiv.offsetHeight - this.footerDiv.offsetHeight;\n // domel(this.bodyDiv)\n // .setStyle('height', `${bodyHeight}px`);\n }\n resolve();\n })\n .then(function () {\n if (_this.options.fixHeightOnFirstRender && _this.firstRender) {\n _this.slot.style.height = \"\".concat(_this.slot.offsetHeight, \"px\");\n }\n });\n };\n EasyGrid.prototype.getContainerWidth = function () {\n return this.columns.getItems()\n .filter(function (col) { return col.isVisible; })\n .map(function (col) { return col.width; })\n .reduce(function (sum, current) { return sum + current; });\n };\n EasyGrid.prototype.renderHeader = function () {\n var _this = this;\n this.headerDiv = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-header\"))\n .toDOM();\n this.headerViewportDiv = domel('div', this.headerDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-header-viewport\"))\n .toDOM();\n this.headerCellContainerDiv = domel('div', this.headerViewportDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-header-cell-container\"))\n .toDOM();\n this.headerRowDiv = domel('div', this.headerCellContainerDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-header-row\"))\n .toDOM();\n this.columns.getItems().forEach(function (column, index) {\n if (!column.isVisible) {\n return;\n }\n var hd = _this.renderColumnHeader(column, index);\n _this.headerRowDiv.appendChild(hd);\n if (column.isRowNum) {\n domel(hd)\n .addChildElement(_this.renderHeaderButtons());\n }\n });\n var containerWidth = this.getContainerWidth();\n domel(this.headerCellContainerDiv)\n .setStyle('width', \"\".concat(containerWidth, \"px\"));\n };\n EasyGrid.prototype.hasData = function () {\n return this.dataTable.columns.count > 0;\n };\n EasyGrid.prototype.renderColumnHeader = function (column, index) {\n var _this = this;\n var colBuilder = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-header-cell\"))\n .data('col-idx', \"\".concat(index))\n .setStyle('width', \"\".concat(column.width, \"px\"));\n if (column.dataColumn) {\n colBuilder\n .data('col-id', \"\".concat(column.dataColumn.id));\n }\n var colDiv = colBuilder.toDOM();\n domel('div', colDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-header-cell-resize\"));\n if (!column.isRowNum) {\n domel('div', colDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-header-cell-label\"))\n .text(column.label);\n }\n if (column.description) {\n domel('div', colDiv)\n .addClass('question-mark')\n .title(column.description);\n }\n if (this.options.allowDragDrop) {\n eqDragManager.registerDraggableItem({\n element: colDiv,\n scope: \"gridColumnMove\",\n data: { column: column },\n renderer: function (dragImage) {\n dragImage.innerHTML = '';\n var attrLabel = document.createElement('div');\n attrLabel.innerText = column.label;\n dragImage.classList.add(\"\".concat(_this.cssPrefix, \"-sortable-helper\"));\n dragImage.appendChild(attrLabel);\n },\n onDragStart: function (ev) {\n ev.dropEffect = DropEffect.Allow;\n }\n });\n }\n return colDiv;\n };\n EasyGrid.prototype.renderBody = function () {\n var _this = this;\n this.bodyDiv = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-body\"))\n .toDOM();\n this.bodyViewportDiv = domel('div', this.bodyDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-body-viewport\"))\n .attr('tabIndex', '0')\n .toDOM();\n this.bodyCellContainerDiv = domel('div', this.bodyViewportDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-cell-container\"))\n .toDOM();\n var showAggrs = this.canShowAggregates();\n if (this.dataTable) {\n this.showProgress();\n this.rowsOnPagePromise = this.getRowsToRender()\n .then(function (rows) {\n _this.pagination.total = _this.dataTable.getTotal();\n _this.hideProgress();\n //prevent double rendering (bad solution, we have to figure out how to avoid this behavior properly)\n _this.bodyCellContainerDiv.innerHTML = '';\n _this.prevRowTotals = null;\n var rowsToRender = 0;\n if (rows.length) {\n var groups_1 = showAggrs\n ? _this.options.aggregates.settings.getGroups()\n : [];\n rowsToRender = (rows.length < _this.pagination.pageSize)\n ? rows.length\n : _this.pagination.pageSize;\n rows.forEach(function (row, index) {\n if (showAggrs)\n _this.updateTotalsState(groups_1, row);\n //we don't actually render the last row\n if (index < rowsToRender) {\n var tr = _this.renderRow(row, index);\n _this.bodyCellContainerDiv.appendChild(tr);\n }\n });\n var showGrandTotalsOnEachPage = _this.options.aggregates && _this.options.aggregates.showGrandTotalsOnEachPage;\n if (showAggrs && (_this.isLastPage() || showGrandTotalsOnEachPage)) {\n var row = new DataRow(_this.dataTable.columns, new Array(_this.dataTable.columns.count));\n _this.updateTotalsState(groups_1, row, true);\n }\n }\n var needAutoResize = _this.options.columnWidths.autoResize !== AutoResizeColumns.Never;\n if (needAutoResize) {\n _this.resizeColumns();\n }\n else {\n var containerWidth = _this.getContainerWidth();\n domel(_this.bodyCellContainerDiv)\n .setStyle('width', \"\".concat(containerWidth, \"px\"));\n }\n return rowsToRender;\n })\n .catch(function (error) { console.error(error); return 0; });\n }\n this.bodyViewportDiv.addEventListener('scroll', function (ev) {\n domel(_this.headerViewportDiv)\n .setStyle('margin-left', \"-\".concat(_this.bodyViewportDiv.scrollLeft, \"px\"));\n });\n this.bodyViewportDiv.addEventListener('keydown', this.onViewportKeydown.bind(this));\n };\n EasyGrid.prototype.isLastPage = function () {\n if (this.dataTable.elasticChunks) {\n return this.dataTable.totalIsKnown()\n && (this.pagination.page * this.pagination.pageSize) >= this.pagination.total;\n }\n return this.pagination.page * this.pagination.pageSize >= this.pagination.total;\n };\n EasyGrid.prototype.canShowAggregates = function () {\n if (!this.options || !this.options.aggregates || !this.options.aggregates.settings)\n return false;\n var aggrSettings = this.options.aggregates.settings;\n var result = (aggrSettings.hasAggregates() || aggrSettings.hasRecordCount())\n && (aggrSettings.hasGroups() || aggrSettings.hasGrandTotals());\n return result;\n };\n EasyGrid.prototype.updateTotalsState = function (groups, newRow, isLast) {\n if (isLast === void 0) { isLast = false; }\n var aggrSettings = this.options.aggregates.settings;\n if (this.prevRowTotals && aggrSettings.hasGroups()) {\n var changeLevel = -1;\n for (var level = 1; level <= groups.length; level++) {\n var group = groups[level - 1];\n for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (!aggrSettings.compareValues(this.prevRowTotals.getValue(col), newRow.getValue(col))) {\n changeLevel = level;\n break;\n }\n }\n if (changeLevel !== -1)\n break;\n }\n if (changeLevel !== -1) {\n for (var level = groups.length; level >= changeLevel; level--) {\n var row = new DataRow(this.dataTable.columns, this.prevRowTotals.toArray());\n var tr = this.renderTotalsRow(level, row);\n this.bodyCellContainerDiv.appendChild(tr);\n }\n }\n }\n if (isLast && aggrSettings.hasGrandTotals() && aggrSettings.hasAggregates()) {\n var tr = this.renderTotalsRow(0, newRow);\n this.bodyCellContainerDiv.appendChild(tr);\n }\n this.prevRowTotals = newRow;\n };\n EasyGrid.prototype.applyGroupColumnTemplate = function (template, value, count) {\n var result = template.replace(/{{\\s*GroupValue\\s*}}/g, value ? \"\".concat(value) : '-');\n result = result.replace(/{{\\s*GroupCount\\s*}}/g, count ? \"\".concat(count) : '-');\n return result;\n };\n EasyGrid.prototype.renderTotalsRow = function (level, row) {\n var _this = this;\n var aggrSettings = this.options.aggregates.settings;\n var group = (level > 0)\n ? aggrSettings.getGroups()[level - 1]\n : { columns: [], aggregates: aggrSettings.getAggregates() };\n var rowBuilder = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-row\"))\n .addClass(\"\".concat(this.cssPrefix, \"-row-totals\"))\n .addClass(\"\".concat(this.cssPrefix, \"-totals-lv\").concat(level))\n .data('totals-level', \"\".concat(level))\n .attr('tabindex', '-1');\n var rowElement = rowBuilder.toDOM();\n this.columns.getItems().forEach(function (column, index) {\n if (!column.isVisible) {\n return;\n }\n var val = '';\n var colIndex = !column.isRowNum\n ? _this.dataTable.columns.getIndex(column.dataColumn.id)\n : -1;\n if (!column.isRowNum && column.dataColumn) {\n if (group.columns.indexOf(column.dataColumn.id) >= 0) {\n val = row.getValue(colIndex);\n }\n ;\n }\n if (colIndex == _this.dataTable.columns.count - 1) {\n val = '. . . . . .';\n }\n rowElement.appendChild(_this.renderCell(column, index, val, rowElement));\n });\n var aggrContainer = this.options.aggregates.calculator.getAggrContainer();\n var aggrCols = aggrSettings.getAggregates().map(function (c) { return c.colId; });\n var key = aggrSettings.buildGroupKey(group, row);\n aggrContainer.getAggregateData(level, key)\n .then(function (values) {\n for (var _i = 0, aggrCols_1 = aggrCols; _i < aggrCols_1.length; _i++) {\n var aggrColId = aggrCols_1[_i];\n row.setValue(aggrColId, values[aggrColId]);\n }\n rowElement.innerHTML = '';\n _this.columns.getItems().forEach(function (column, index) {\n if (!column.isVisible) {\n return;\n }\n var val = '';\n var colIndex = !column.isRowNum\n ? _this.dataTable.columns.getIndex(column.dataColumn.id)\n : -1;\n if (!column.isRowNum) {\n var isLastGroupColumn = false;\n if (column.dataColumn) {\n var groupColIndex = group.columns.indexOf(column.dataColumn.id);\n var aggrColIndex = aggrCols.indexOf(column.dataColumn.id);\n if (level > 0) {\n isLastGroupColumn = groupColIndex == group.columns.length - 1;\n }\n else {\n //if it's a grand total row consider first column as the last group column\n isLastGroupColumn = colIndex == 0;\n }\n if (groupColIndex >= 0 || aggrColIndex >= 0) {\n val = row.getValue(colIndex);\n }\n ;\n }\n var groupFooterTemplate = '';\n if (level > 0) {\n groupFooterTemplate = column.dataColumn.groupFooterColumnTemplate;\n //set the default template for the last grouping column\n if (!groupFooterTemplate && aggrSettings.hasRecordCount() && isLastGroupColumn) {\n groupFooterTemplate = '{{GroupValue}} ({{GroupCount}})';\n }\n }\n if (groupFooterTemplate) {\n var cellDiv_1 = _this.renderCell(column, index, val, rowElement);\n var innerCell = cellDiv_1.firstChild;\n val = innerCell.innerHTML;\n val = _this.applyGroupColumnTemplate(groupFooterTemplate, val, values[aggrSettings.COUNT_FIELD_NAME]);\n }\n }\n var cellDiv = _this.renderCell(column, index, val, rowElement);\n rowElement.appendChild(cellDiv);\n });\n })\n .catch(function (error) { return console.error(error); });\n return rowElement;\n };\n EasyGrid.prototype.onViewportKeydown = function (ev) {\n if (this.options.showActiveRow) {\n var rowCount = this.bodyCellContainerDiv.querySelectorAll(\".\".concat(this.cssPrefix, \"-row\")).length;\n var newValue = void 0;\n switch (ev.key) {\n case 'ArrowLeft':\n break;\n case 'ArrowRight':\n break;\n case 'ArrowUp':\n ev.preventDefault();\n newValue = this.activeRowIndex < 0 || this.activeRowIndex >= rowCount ? rowCount - 1 : this.activeRowIndex - 1;\n this.activeRowIndex = newValue >= 0 ? newValue : 0;\n break;\n case 'ArrowDown':\n ev.preventDefault();\n newValue = this.activeRowIndex < 0 || this.activeRowIndex >= rowCount ? 0 : this.activeRowIndex + 1;\n this.activeRowIndex = newValue < rowCount ? newValue : rowCount - 1;\n break;\n }\n }\n };\n EasyGrid.prototype.ensureRowVisibility = function (rowOrIndex) {\n var row = typeof rowOrIndex === 'number'\n ? this.getDataRow(rowOrIndex)\n : rowOrIndex;\n if (row) {\n var rowRect = row.getBoundingClientRect();\n var viewportRect = this.bodyViewportDiv.getBoundingClientRect();\n var rowTop = rowRect.top - viewportRect.top;\n var rowBottom = rowRect.bottom - viewportRect.top;\n var viewportHeight = this.bodyViewportDiv.clientHeight;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n if (rowTop > 0 &&\n rowBottom <= viewportHeight &&\n rowRect.top > 0 &&\n rowRect.bottom < windowHeight) {\n return;\n }\n if (rowTop < 0) {\n this.bodyViewportDiv.scrollTop = this.bodyViewportDiv.scrollTop + rowTop;\n }\n else if (rowBottom > viewportHeight) {\n this.bodyViewportDiv.scrollTop = this.bodyViewportDiv.scrollTop + rowBottom - viewportHeight;\n }\n rowRect = row.getBoundingClientRect();\n if (rowRect.top < 0) {\n document.documentElement.scrollTop = document.documentElement.scrollTop + rowRect.top;\n }\n else if (rowRect.bottom > windowHeight) {\n document.documentElement.scrollTop = document.documentElement.scrollTop + rowRect.bottom - windowHeight;\n }\n }\n };\n /** Returns a promise with the list of the rows to render on one page.\n * The list contains pageSize+1 row to make it possible\n * to render the totals row (if it appears to be on the edge between pages)\n */\n EasyGrid.prototype.getRowsToRender = function () {\n if (this.options.paging.enabled === false) {\n return Promise.resolve(this.dataTable.getCachedRows());\n }\n return this.dataTable.getRows({\n offset: (this.pagination.page - 1) * this.pagination.pageSize,\n limit: this.pagination.pageSize + 1\n })\n .catch(function (error) {\n console.error(error);\n return [];\n });\n };\n EasyGrid.prototype.renderFooter = function () {\n var _this = this;\n this.footerDiv = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-footer\"))\n .toDOM();\n if (this.rowsOnPagePromise) {\n this.rowsOnPagePromise.then(function (count) {\n _this.footerDiv.innerHTML = '';\n _this.footerPaginateDiv = _this.renderPageNavigator();\n _this.footerDiv.appendChild(_this.footerPaginateDiv);\n var pageInfoBlock = _this.renderPageInfoBlock(count);\n _this.footerDiv.appendChild(pageInfoBlock);\n });\n }\n };\n EasyGrid.prototype.renderPageInfoBlock = function (count) {\n var pageInfoDiv = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-page-info\"))\n .toDOM();\n var rowCount = this.dataTable.getTotal();\n if (rowCount > 0) {\n var fistPageRecordNum = count\n ? (this.pagination.page - 1) * this.pagination.pageSize + 1\n : 0;\n var lastPageRecordNum = count\n ? fistPageRecordNum + count - 1\n : 0;\n var totalStr = this.dataTable.getTotal().toString();\n if (this.dataTable.elasticChunks) {\n var count_1 = this.dataTable.getCachedCount();\n var total = this.dataTable.getTotal();\n if (count_1 !== total)\n totalStr = '?';\n }\n pageInfoDiv.innerHTML = i18n.getText('GridPageInfo')\n .replace('{FirstPageRecordNum}', \"<span>\".concat(fistPageRecordNum.toString(), \"</span>\"))\n .replace('{LastPageRecordNum}', \"<span>\".concat(lastPageRecordNum.toString(), \"</span>\"))\n .replace('{Total}', \"<span>\".concat(totalStr, \"</span>\"));\n }\n return pageInfoDiv;\n };\n EasyGrid.prototype.showProgress = function () {\n };\n EasyGrid.prototype.hideProgress = function () {\n };\n EasyGrid.prototype.getLocalIndexByGlobal = function (index) {\n if (this.pagination) {\n return index % this.pagination.pageSize;\n }\n else {\n return index;\n }\n };\n EasyGrid.prototype.getGlobalIndexByLocal = function (index) {\n if (this.pagination) {\n return (this.pagination.page - 1) * this.pagination.pageSize + index;\n }\n else {\n return index;\n }\n };\n EasyGrid.prototype.renderRow = function (row, index) {\n var _this = this;\n var indexGlobal = this.getGlobalIndexByLocal(index);\n var rowBuilder = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-row\"))\n .addClass(\"\".concat(this.cssPrefix, \"-row-\").concat(index % 2 == 1 ? 'odd' : 'even'))\n .data('row-idx', \"\".concat(indexGlobal))\n .attr('tabindex', '-1')\n .on('click', function (ev) {\n _this.activeRowIndex = index;\n _this.fireEvent({\n type: 'rowClick',\n row: row,\n rowIndex: index,\n sourceEvent: ev\n });\n })\n .on('dblclick', function (ev) {\n _this.fireEvent({\n type: 'rowDbClick',\n row: row,\n rowIndex: index,\n sourceEvent: ev\n });\n });\n if (index == 0) {\n rowBuilder.addClass(\"\".concat(this.cssPrefix, \"-row-first\"));\n }\n var rowElement = rowBuilder.toDOM();\n if (this.options.showActiveRow && index == this.activeRowIndex) {\n rowBuilder.addClass(\"\".concat(this.cssPrefix, \"-row-active\"));\n }\n this.columns.getItems().forEach(function (column, index) {\n if (!column.isVisible) {\n return;\n }\n var colindex = column.isRowNum ? -1 : _this.dataTable.columns.getIndex(column.dataColumn.id);\n var val = column.isRowNum ? indexGlobal + 1 : row.getValue(colindex);\n rowElement.appendChild(_this.renderCell(column, index, val, rowElement));\n });\n return rowElement;\n };\n EasyGrid.prototype.renderCell = function (column, colIndex, value, rowElement) {\n var builder = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-cell\"))\n .data('col-idx', \"\".concat(colIndex))\n .attr('tabindex', '-1')\n .setStyle('width', \"\".concat(column.width, \"px\"));\n if (column.align == GridColumnAlign.LEFT) {\n builder.addClass(\"\".concat(this.cssPrefix, \"-cell-align-left\"));\n }\n else if (column.align == GridColumnAlign.RIGHT) {\n builder.addClass(\"\".concat(this.cssPrefix, \"-cell-align-right\"));\n }\n else if (column.align == GridColumnAlign.CENTER) {\n builder.addClass(\"\".concat(this.cssPrefix, \"-cell-align-center\"));\n }\n var cellElement = builder.toDOM();\n var valueCell = cellElement.appendChild(domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-cell-value\"))\n .toDOM());\n if (column.cellRenderer) {\n column.cellRenderer(value, column, valueCell, rowElement);\n }\n return cellElement;\n };\n /** Sets current grid pages (if paging is used) */\n EasyGrid.prototype.setPage = function (page) {\n this.pagination.page = page;\n this.fireEvent({ type: \"pageChanged\", page: page });\n this.refresh();\n this.bodyViewportDiv.focus();\n };\n EasyGrid.prototype.renderPageNavigator = function () {\n var _this = this;\n var paginateDiv = document.createElement('div');\n paginateDiv.className = \"\".concat(this.cssPrefix, \"-pagination-wrapper\");\n var rowCount = this.dataTable.getTotal();\n if (this.options.paging && this.options.paging.enabled && rowCount > 0) {\n var prefix_1 = this.paginationOptions.useBootstrap ? '' : \"\".concat(this.cssPrefix, \"-\");\n var buttonClickHandler_1 = function (ev) {\n var element = ev.target;\n if (element.hasAttribute('data-page')) {\n var page = parseInt(element.getAttribute('data-page'));\n _this.setPage(page);\n }\n };\n var renderPageCell = function (pageIndex, content, disabled, extreme, active) {\n var li = document.createElement('li');\n li.className = \"\".concat(prefix_1, \"page-item\");\n if (!extreme) {\n if (active) {\n li.className += ' active';\n }\n var a_1 = document.createElement('a');\n a_1.setAttribute('href', 'javascript:void(0)');\n a_1.innerHTML = content || pageIndex.toString();\n a_1.setAttribute(\"data-page\", \"\".concat(pageIndex));\n a_1.className = \"\".concat(prefix_1, \"page-link\");\n a_1.addEventListener(\"click\", buttonClickHandler_1);\n li.appendChild(a_1);\n return li;\n }\n var a = document.createElement('span');\n a.setAttribute('aria-hidden', 'true');\n a.className = \"\".concat(prefix_1, \"page-link\");\n if (disabled) {\n li.className += ' disabled';\n }\n else {\n if (_this.paginationOptions.useBootstrap) {\n a = document.createElement('a');\n a.setAttribute('href', 'javascript:void(0)');\n a.setAttribute(\"data-page\", \"\".concat(pageIndex));\n }\n else {\n var newA = document.createElement('a');\n newA.setAttribute('href', 'javascript:void(0)');\n newA.setAttribute('data-page', \"\".concat(pageIndex));\n a = newA;\n }\n a.className = \"\".concat(prefix_1, \"page-link\");\n a.addEventListener(\"click\", buttonClickHandler_1);\n }\n a.innerHTML = content;\n li.appendChild(a);\n return li;\n };\n if (this.dataTable.elasticChunks) {\n var pageIndex = this.pagination.page || 1;\n var ul = document.createElement('ul');\n ul.className = \"\".concat(prefix_1, \"pagination\");\n var cell = renderPageCell(pageIndex - 1, '«', pageIndex == 1, true, false);\n ul.appendChild(cell);\n cell = renderPageCell(pageIndex + 1, '»', this.isLastPage(), true, false);\n ul.appendChild(cell);\n paginateDiv.appendChild(ul);\n }\n else {\n if (this.pagination.total > this.pagination.pageSize) {\n var pageIndex = this.pagination.page || 1;\n var pageCount = Math.ceil(this.pagination.total / this.pagination.pageSize) || 1;\n var maxButtonCount = this.paginationOptions.maxButtonCount || 10;\n var zeroBasedIndex = pageIndex - 1;\n var firstPageIndex = zeroBasedIndex - (zeroBasedIndex % maxButtonCount) + 1;\n var lastPageIndex = firstPageIndex + maxButtonCount - 1;\n if (lastPageIndex > pageCount) {\n lastPageIndex = pageCount;\n }\n var ul = document.createElement('ul');\n ul.className = \"\".concat(prefix_1, \"pagination\");\n var cell = renderPageCell(firstPageIndex - 1, '«', firstPageIndex == 1, true, false);\n ul.appendChild(cell);\n for (var i = firstPageIndex; i <= lastPageIndex; i++) {\n cell = renderPageCell(i, i.toString(), false, false, i == pageIndex);\n ul.appendChild(cell);\n }\n cell = renderPageCell(lastPageIndex + 1, '»', lastPageIndex == pageCount, true, false);\n ul.appendChild(cell);\n paginateDiv.appendChild(ul);\n }\n }\n if (this.options.paging.allowPageSizeChange) {\n var selectChangeHandler = function (ev) {\n var newValue = parseInt(ev.target.value);\n _this.pagination.pageSize = newValue;\n _this.pagination.page = 1;\n _this.refresh();\n };\n var pageSizes = document.createElement('div');\n pageSizes.className = \"\".concat(this.cssPrefix, \"-page-sizes\");\n var selectSize = document.createElement('div');\n selectSize.className = \"kfrm-select \".concat(this.cssPrefix, \"-page-sizes-select\");\n pageSizes.appendChild(selectSize);\n var sel_1 = document.createElement('select');\n var selOptions = this.options.paging.pageSizeItems || [];\n var selSet = new Set(selOptions);\n selSet.add(this.options.paging.pageSize || 20);\n Array.from(selSet).forEach(function (el) {\n var option = document.createElement(\"option\");\n option.value = el.toString();\n option.text = el.toString();\n sel_1.appendChild(option);\n });\n sel_1.value = (this.pagination.pageSize || 20).toString();\n selectSize.appendChild(sel_1);\n sel_1.addEventListener('change', selectChangeHandler);\n var labelDiv = document.createElement('div');\n labelDiv.className = \"\".concat(this.cssPrefix, \"-page-sizes-label\");\n pageSizes.appendChild(labelDiv);\n var label = document.createElement('span');\n label.innerText = i18n.getText('GridItemsPerPage');\n labelDiv.appendChild(label);\n paginateDiv.appendChild(pageSizes);\n }\n }\n return paginateDiv;\n };\n EasyGrid.prototype.addEventListener = function (eventType, handler) {\n return this.eventEmitter.subscribe(eventType, function (event) { return handler(event.data); });\n };\n EasyGrid.prototype.removeEventListener = function (eventType, handlerId) {\n this.eventEmitter.unsubscribe(eventType, handlerId);\n };\n EasyGrid.prototype.renderHeaderButtons = function () {\n var _this = this;\n if (this.options.showPlusButton) {\n return domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-header-btn-plus\"))\n .title(this.options.plusButtonTitle || 'Add')\n .addChild('a', function (builder) { return builder\n .attr('href', 'javascript:void(0)')\n .on('click', function (e) {\n e.preventDefault();\n _this.fireEvent({\n type: 'plusButtonClick',\n sourceEvent: e\n });\n }); })\n .toDOM();\n }\n return domel('span')\n .addText('#')\n .toDOM();\n };\n EasyGrid.prototype.showLandingSlot = function (pageX, pageY) {\n var colElems = this.headerRowDiv.querySelectorAll(\"[class*=\".concat(this.cssPrefix, \"-table-col]\"));\n var cols = [];\n for (var i = 1; i < colElems.length; i++) {\n var rowElem = colElems[i];\n if (rowElem.style.display === 'none')\n continue;\n cols.push(rowElem);\n }\n if (cols.length === 0) {\n this.landingIndex = 0;\n this.headerRowDiv.appendChild(this.landingSlot);\n return;\n }\n var landingPos = getElementAbsolutePos(this.landingSlot);\n if (pageX >= landingPos.x && pageX <= landingPos.x + this.landingSlot.offsetWidth) {\n return;\n }\n var newLandingIndex = this.landingIndex;\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var colPos = getElementAbsolutePos(col);\n var width = col.offsetWidth;\n if (pageX > colPos.x && pageX < colPos.x + width) {\n // -1 as we don't need to count add button here\n newLandingIndex = parseInt(col.getAttribute('data-col-idx')) - 1;\n }\n }\n if (newLandingIndex != this.landingIndex) {\n this.landingIndex = newLandingIndex;\n if (this.landingIndex < cols.length) {\n this.headerRowDiv.insertBefore(this.landingSlot, cols[this.landingIndex]);\n }\n else {\n this.headerRowDiv.appendChild(this.landingSlot);\n }\n }\n };\n EasyGrid.prototype.hideLandingSlot = function () {\n var _this = this;\n this.landingIndex = -1;\n setTimeout(function () {\n if (_this.landingSlot.parentElement) {\n _this.landingSlot.parentElement.removeChild(_this.landingSlot);\n }\n }, 10);\n };\n Object.defineProperty(EasyGrid.prototype, \"activeRowIndex\", {\n get: function () {\n return this._activeRowIndex;\n },\n set: function (value) {\n if (value !== this._activeRowIndex) {\n var oldValue = this._activeRowIndex;\n this._activeRowIndex = value;\n this.updateActiveRow();\n this.fireEvent({\n type: 'activeRowChanged',\n oldValue: oldValue,\n newValue: this.activeRowIndex,\n rowIndex: this.getGlobalIndexByLocal(this.activeRowIndex)\n });\n }\n },\n enumerable: false,\n configurable: true\n });\n EasyGrid.prototype.updateActiveRow = function () {\n var _this = this;\n if (this.options.showActiveRow) {\n var rows = this.bodyCellContainerDiv.querySelectorAll(\"[class*=\".concat(this.cssPrefix, \"-row-active]\"));\n rows.forEach(function (el) { el.classList.remove(\"\".concat(_this.cssPrefix, \"-row-active\")); });\n var activeRow = this.getActiveRow();\n if (activeRow) {\n activeRow.classList.add(\"\".concat(this.cssPrefix, \"-row-active\"));\n this.ensureRowVisibility(this.activeRowIndex);\n }\n }\n };\n EasyGrid.prototype.getActiveRow = function () {\n return this.getDataRow(this.activeRowIndex);\n };\n EasyGrid.prototype.getDataRow = function (index) {\n var rows = Array.from(this.bodyCellContainerDiv.querySelectorAll(\".\".concat(this.cssPrefix, \"-row:not(.\").concat(this.cssPrefix, \"-row-totals)\")));\n if (index >= 0 && index < rows.length)\n return rows[index];\n return null;\n };\n /** Makes the grid focused for keyboard events */\n EasyGrid.prototype.focus = function () {\n this.bodyViewportDiv.focus();\n };\n /** Resizes columns according to the data they represent */\n EasyGrid.prototype.resizeColumns = function () {\n if (this.options.columnWidths.autoResize === AutoResizeColumns.Never)\n return;\n var containerWidth = this.bodyCellContainerDiv.style.width;\n this.bodyCellContainerDiv.style.visibility = 'hidden';\n this.bodyCellContainerDiv.style.width = '1px';\n //this.headerRowDiv.style.visibility = 'hidden';\n this.headerRowDiv.style.width = '1px';\n var sumWidth = 0;\n var columns = this.columns.getItems();\n var headerCells = this.headerCellContainerDiv.querySelectorAll(\".\".concat(this.cssPrefix, \"-header-cell\"));\n var headerIdx = 0;\n var _loop_1 = function (idx) {\n var column = columns[idx];\n if (!column.isVisible)\n return \"continue\";\n var calculatedWidth = this_1.options.columnWidths.autoResize !== AutoResizeColumns.Always && column.dataColumn\n ? column.dataColumn.calculatedWidth\n : 0;\n var cellValues = this_1.bodyCellContainerDiv.querySelectorAll(\".\".concat(this_1.cssPrefix, \"-cell[data-col-idx=\\\"\").concat(idx, \"\\\"] > .\").concat(this_1.cssPrefix, \"-cell-value\"));\n var maxWidth = 0;\n if (calculatedWidth > 0) {\n sumWidth += calculatedWidth;\n column.width = calculatedWidth;\n cellValues.forEach(function (value) {\n value.parentElement.style.width = \"\".concat(calculatedWidth, \"px\");\n });\n headerCells[headerIdx].style.width = \"\".concat(calculatedWidth, \"px\");\n }\n else {\n if (cellValues.length == 0) {\n headerCells[headerIdx].style.width = null;\n headerCells[headerIdx].style.whiteSpace = 'nowrap';\n }\n maxWidth = headerCells[headerIdx].offsetWidth;\n if (cellValues.length > 0) {\n cellValues.forEach(function (value) {\n value.parentElement.style.width = null;\n var width = value.parentElement.offsetWidth;\n if (width > maxWidth) {\n maxWidth = width;\n }\n });\n maxWidth += 3;\n var maxOption = column.isRowNum\n ? this_1.options.columnWidths.rowNumColumn.max || 500\n : this_1.options.columnWidths[column.dataColumn.type].max || 2000;\n var minOption = column.isRowNum\n ? this_1.options.columnWidths.rowNumColumn.min || 0\n : this_1.options.columnWidths[column.dataColumn.type].min || 20;\n if (maxWidth > maxOption) {\n maxWidth = maxOption;\n }\n if (maxWidth < minOption) {\n maxWidth = minOption;\n }\n if (utils.isNumericType(column.type)) {\n //increase the calculated width in 1.3 times for numeric columns\n maxWidth = Math.round(maxWidth * 1.3);\n }\n sumWidth += maxWidth;\n column.width = maxWidth;\n cellValues.forEach(function (value) {\n value.parentElement.style.width = \"\".concat(maxWidth, \"px\");\n });\n headerCells[headerIdx].style.width = \"\".concat(maxWidth, \"px\");\n if (column.dataColumn) {\n column.dataColumn.calculatedWidth = maxWidth;\n }\n }\n else {\n sumWidth += maxWidth;\n }\n }\n headerIdx++;\n };\n var this_1 = this;\n for (var idx = 0; idx < this.columns.count; idx++) {\n _loop_1(idx);\n }\n if (sumWidth > 0) {\n this.bodyCellContainerDiv.style.width = \"\".concat(sumWidth, \"px\");\n this.headerCellContainerDiv.style.width = \"\".concat(sumWidth, \"px\");\n }\n else {\n this.bodyCellContainerDiv.style.width = containerWidth;\n this.headerCellContainerDiv.style.width = containerWidth;\n }\n this.bodyCellContainerDiv.style.visibility = null;\n this.headerRowDiv.removeAttribute('style');\n };\n return EasyGrid;\n}());\nexport { EasyGrid };\n//# sourceMappingURL=easy_grid.js.map","var Calendar = /** @class */ (function () {\n function Calendar(slot, options) {\n this.slot = slot;\n this.options = options || {};\n if (!this.options.yearRange) {\n this.options.yearRange = 'c-10:c+10';\n }\n }\n Object.defineProperty(Calendar.prototype, \"cssPrefix\", {\n get: function () {\n return 'kdtp-cal';\n },\n enumerable: false,\n configurable: true\n });\n Calendar.prototype.setDate = function (date) {\n this.currentDate = new Date(date);\n };\n Calendar.prototype.getDate = function () {\n return new Date(this.currentDate);\n };\n Calendar.prototype.dateChanged = function (apply) {\n if (this.options.onDateChanged) {\n this.options.onDateChanged(this.currentDate, apply);\n }\n };\n return Calendar;\n}());\nexport { Calendar };\n//# sourceMappingURL=calendar.js.map","import { getElementAbsolutePos } from '../utils/ui-utils';\nvar DateTimePicker = /** @class */ (function () {\n function DateTimePicker(options) {\n this.calendar = null;\n this.timePicker = null;\n this.options = options;\n this.render();\n }\n Object.defineProperty(DateTimePicker.prototype, \"cssPrefix\", {\n get: function () {\n return 'kdtp';\n },\n enumerable: false,\n configurable: true\n });\n DateTimePicker.prototype.setDateTime = function (dateTime) {\n this.currentDateTime = new Date(dateTime);\n if (this.calendar) {\n this.calendar.setDate(this.currentDateTime);\n }\n if (this.timePicker) {\n this.timePicker.setTime(this.currentDateTime);\n }\n };\n DateTimePicker.prototype.getDateTime = function () {\n return new Date(this.currentDateTime);\n };\n DateTimePicker.prototype.render = function () {\n var _this = this;\n if (this.options.showCalendar) {\n this.calendar = this.createCalendar({\n yearRange: this.options.yearRange,\n showDateTimeInput: this.options.showDateTimeInput,\n timePickerIsUsed: this.options.showTimePicker,\n oneClickDateSelection: this.options.oneClickDateSelection,\n onDateChanged: function (date, apply) {\n _this.currentDateTime = date;\n if (_this.timePicker) {\n _this.timePicker.setTime(_this.currentDateTime);\n }\n if (_this.options.showTimePicker) {\n _this.dateTimeChanged();\n }\n if (apply) {\n _this.apply(_this.currentDateTime);\n }\n }\n });\n if (this.calendar)\n this.calendar.render();\n }\n if (this.options.showTimePicker) {\n this.timePicker = this.createTimePicker({\n onTimeChanged: function (time) {\n _this.currentDateTime.setHours(time.getHours());\n _this.currentDateTime.setMinutes(time.getMinutes());\n if (_this.calendar) {\n _this.calendar.setDate(_this.currentDateTime);\n }\n _this.dateTimeChanged();\n }\n });\n if (this.timePicker)\n this.timePicker.render();\n }\n this.setDateTime(new Date());\n };\n DateTimePicker.prototype.createCalendar = function (options) {\n return null;\n };\n DateTimePicker.prototype.createTimePicker = function (options) {\n return null;\n };\n DateTimePicker.prototype.show = function (anchor) {\n if (this.options.beforeShow) {\n this.options.beforeShow();\n }\n var pos = getElementAbsolutePos(anchor || document.body);\n this.slot.style.top = pos.y + anchor.clientHeight + 'px';\n this.slot.style.left = pos.x + 'px';\n };\n DateTimePicker.prototype.apply = function (date) {\n if (this.options.onApply) {\n this.options.onApply(date);\n }\n this.destroy();\n };\n DateTimePicker.prototype.cancel = function () {\n if (this.options.onCancel) {\n this.options.onCancel();\n }\n this.destroy();\n };\n DateTimePicker.prototype.destroy = function () {\n if (this.slot && this.slot.parentElement) {\n this.slot.parentElement.removeChild(this.slot);\n }\n };\n DateTimePicker.prototype.dateTimeChanged = function () {\n if (this.options.onDateTimeChanged) {\n this.options.onDateTimeChanged(this.currentDateTime);\n }\n };\n return DateTimePicker;\n}());\nexport { DateTimePicker };\n//# sourceMappingURL=date_time_picker.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { i18n, utils as dataUtils } from '@easydata/core';\nimport { domel } from '../utils/dom_elem_builder';\nimport { Calendar } from './calendar';\nvar DefaultCalendar = /** @class */ (function (_super) {\n __extends(DefaultCalendar, _super);\n function DefaultCalendar(slot, options) {\n var _this = _super.call(this, slot, options) || this;\n _this.daysOfWeek = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n _this.months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n _this.calendarBody = null;\n _this.isManualInputChanging = false;\n for (var i = 0; i < _this.daysOfWeek.length; i++) {\n _this.daysOfWeek[i] = i18n.getShortWeekDayName(i + 1);\n }\n for (var i = 0; i < _this.months.length; i++) {\n _this.months[i] = i18n.getLongMonthName(i + 1);\n }\n return _this;\n }\n DefaultCalendar.prototype.setDate = function (date) {\n _super.prototype.setDate.call(this, date);\n this.selectedMonth = this.currentDate.getMonth();\n this.selectedYear = this.currentDate.getFullYear();\n this.rerenderMonth();\n };\n DefaultCalendar.prototype.render = function () {\n var _this = this;\n var header = domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-header\"));\n if (this.options.showDateTimeInput) {\n header\n .addChildElement(this.renderManualDateInput());\n }\n else {\n header\n .addChild('span', function (builder) { return _this.headerTextElem = builder.toDOM(); });\n }\n domel(this.slot)\n .addChildElement(this.renderCalendarButtons());\n this.calendarBody = domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-body\"))\n .toDOM();\n };\n DefaultCalendar.prototype.getInputDateFormat = function () {\n var settings = i18n.getLocaleSettings();\n return (this.options.timePickerIsUsed)\n ? \"\".concat(settings.editDateFormat, \" \").concat(settings.editTimeFormat)\n : settings.editDateFormat;\n };\n DefaultCalendar.prototype.renderManualDateInput = function () {\n var _this = this;\n var format = this.getInputDateFormat();\n var builder = domel('input')\n .attr('placeholder', format)\n .addClass(\"\".concat(this.cssPrefix, \"-header-input\"));\n builder\n .mask(format.replace('yyyy', '9999')\n .replace('MM', '99')\n .replace('dd', '99')\n .replace('HH', '99')\n .replace('mm', '99')\n .replace('ss', '99'))\n .on('input', function (ev) {\n builder.removeClass('error');\n try {\n _this.isManualInputChanging = true;\n var newDate = dataUtils.strToDateTime(_this.manualInputElem.value, format);\n _this.currentDate = newDate;\n _this.jump(_this.currentDate.getFullYear(), _this.currentDate.getMonth());\n _this.dateChanged(false);\n }\n catch (e) {\n builder.addClass('error');\n }\n finally {\n _this.isManualInputChanging = false;\n }\n })\n .on('keydown', function (ev) {\n if (ev.keyCode === 13) {\n ev.preventDefault();\n ev.stopPropagation();\n if (_this.manualInputElem.className.indexOf('error') < 0\n && !_this.isManualInputChanging)\n _this.dateChanged(true);\n }\n })\n .on('focus', function () {\n setTimeout(function () {\n _this.manualInputElem.selectionStart = 0;\n _this.manualInputElem.selectionEnd = 0;\n }, 50);\n });\n this.manualInputElem = builder.toDOM();\n return this.manualInputElem;\n };\n DefaultCalendar.prototype.updateDisplayedDateValue = function () {\n if (this.manualInputElem) {\n if (!this.isManualInputChanging) {\n var format = this.getInputDateFormat();\n this.manualInputElem.value = dataUtils.dateTimeToStr(this.currentDate, format);\n this.manualInputElem.focus();\n }\n }\n else if (this.headerTextElem) {\n var locale = i18n.getCurrentLocale();\n this.headerTextElem.innerText = this.currentDate.toLocaleString(locale == 'en' ? undefined : locale, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n }\n };\n DefaultCalendar.prototype.renderCalendarButtons = function () {\n var _this = this;\n var builder = domel('nav')\n .addClass(\"\".concat(this.cssPrefix, \"-nav\"))\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-nav-prev\"))\n .on('click', function () {\n _this.prev();\n })\n .addChild('span', function (builder) { return builder.html('‹'); }); })\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-nav-selectors\"))\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-nav-month\"))\n .addChild('select', function (builder) {\n builder\n .on('change', function () {\n _this.jump(_this.selectedYear, parseInt(_this.selectMonthElem.value));\n });\n var _loop_1 = function (i) {\n builder.addChild('option', function (builder) { return builder\n .attr('value', i.toString())\n .text(_this.months[i]); });\n };\n for (var i = 0; i < _this.months.length; i++) {\n _loop_1(i);\n }\n _this.selectMonthElem = builder.toDOM();\n }); })\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-nav-year\"))\n .addChild('select', function (builder) { return _this.selectYearElem = builder\n .on('change', function () {\n _this.jump(parseInt(_this.selectYearElem.value), _this.selectedMonth);\n })\n .toDOM(); }); }); })\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-nav-next\"))\n .on('click', function () {\n _this.next();\n })\n .addChild('span', function (builder) { return builder.html('›'); }); });\n return builder.toDOM();\n };\n DefaultCalendar.prototype.prev = function () {\n this.selectedYear = (this.selectedMonth === 0) ? this.selectedYear - 1 : this.selectedYear;\n this.selectedMonth = (this.selectedMonth === 0) ? 11 : this.selectedMonth - 1;\n this.rerenderMonth();\n };\n DefaultCalendar.prototype.next = function () {\n this.selectedYear = (this.selectedMonth === 11) ? this.selectedYear + 1 : this.selectedYear;\n this.selectedMonth = (this.selectedMonth + 1) % 12;\n this.rerenderMonth();\n };\n DefaultCalendar.prototype.rerenderSelectYear = function () {\n var match = /c-(\\d*):c\\+(\\d*)/g.exec(this.options.yearRange);\n var minusYear = 0;\n var plusYear = 1;\n if (match !== null) {\n minusYear = parseInt(match[1]);\n plusYear = parseInt(match[2]);\n }\n this.selectYearElem.innerHTML = '';\n for (var i = 0; i <= minusYear + plusYear; i++) {\n var op = document.createElement(\"option\");\n var year = this.selectedYear - minusYear + i;\n op.value = year.toString();\n op.innerText = year.toString();\n this.selectYearElem.appendChild(op);\n }\n };\n DefaultCalendar.prototype.jump = function (year, month) {\n this.selectedYear = year;\n this.selectedMonth = month;\n this.rerenderMonth();\n };\n DefaultCalendar.prototype.rerenderMonth = function () {\n var _this = this;\n //header text\n this.updateDisplayedDateValue();\n this.rerenderSelectYear();\n var firstDay = (new Date(this.selectedYear, this.selectedMonth)).getDay();\n var daysInMonth = new Date(this.selectedYear, this.selectedMonth + 1, 0).getDate();\n this.calendarBody.innerHTML = \"\";\n this.selectYearElem.value = this.selectedYear.toString();\n this.selectMonthElem.value = this.selectedMonth.toString();\n this.daysOfWeek.forEach(function (day, idx) {\n domel('div', _this.calendarBody)\n .addClass(\"\".concat(_this.cssPrefix, \"-weekday\"))\n .addClass(idx == 0 || idx == 6 ? \"\".concat(_this.cssPrefix, \"-weekend\") : '')\n .text(day);\n });\n // Add empty cells before first day\n for (var i = 0; i < firstDay; i++) {\n domel('div', this.calendarBody)\n .addClass(\"\".concat(this.cssPrefix, \"-day-empty\"));\n }\n // Add all month days\n var today = new Date();\n for (var day = 1; day <= daysInMonth; day++) {\n var builder = domel('div', this.calendarBody)\n .addClass(\"\".concat(this.cssPrefix, \"-day\"))\n .attr('data-date', day.toString())\n .text(day.toString())\n .on('click', function (e) {\n _this.currentDate.setFullYear(_this.selectedYear);\n _this.currentDate.setMonth(_this.selectedMonth);\n _this.currentDate.setDate(parseInt(e.target.getAttribute('data-date')));\n _this.dateChanged(_this.options.oneClickDateSelection);\n });\n if (day === today.getDate() && this.selectedYear === today.getFullYear() && this.selectedMonth === today.getMonth()) {\n builder.addClass(\"\".concat(this.cssPrefix, \"-day-current\"));\n }\n if (day === this.currentDate.getDate() && this.selectedYear === this.currentDate.getFullYear() && this.selectedMonth === this.currentDate.getMonth()) {\n builder.addClass(\"\".concat(this.cssPrefix, \"-day-selected\"));\n }\n var dayOfWeek = (firstDay + day - 1) % 7;\n if (dayOfWeek == 0 || dayOfWeek == 6) {\n builder.addClass(\"\".concat(this.cssPrefix, \"-weekend\"));\n }\n }\n // Add empty cells after last day\n var cellsDrawnInLastRow = (firstDay + daysInMonth) % 7;\n var cellsToDraw = cellsDrawnInLastRow == 0 ? 0 : 7 - cellsDrawnInLastRow;\n for (var i = 0; i < cellsToDraw; i++) {\n domel('div', this.calendarBody)\n .addClass(\"\".concat(this.cssPrefix, \"-day-empty\"));\n }\n };\n DefaultCalendar.prototype.dateChanged = function (apply) {\n _super.prototype.dateChanged.call(this, apply);\n this.rerenderMonth();\n };\n return DefaultCalendar;\n}(Calendar));\nexport { DefaultCalendar };\n//# sourceMappingURL=default_calendar.js.map","var TimePicker = /** @class */ (function () {\n function TimePicker(slot, options) {\n this.slot = slot;\n this.options = options || {};\n }\n Object.defineProperty(TimePicker.prototype, \"cssPrefix\", {\n get: function () {\n return 'kdtp-tp';\n },\n enumerable: false,\n configurable: true\n });\n TimePicker.prototype.setTime = function (time) {\n this.currentTime = new Date(time);\n };\n TimePicker.prototype.getTime = function () {\n return new Date(this.currentTime);\n };\n TimePicker.prototype.timeChanged = function () {\n if (this.options.onTimeChanged) {\n this.options.onTimeChanged(this.currentTime);\n }\n };\n return TimePicker;\n}());\nexport { TimePicker };\n//# sourceMappingURL=time_picker.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { i18n } from '@easydata/core';\nimport { domel } from '../utils/dom_elem_builder';\nimport { TimePicker } from './time_picker';\nvar DefaultTimePicker = /** @class */ (function (_super) {\n __extends(DefaultTimePicker, _super);\n function DefaultTimePicker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultTimePicker.prototype.setTime = function (time) {\n _super.prototype.setTime.call(this, time);\n this.updateDisplayedTime();\n this.hoursInput.valueAsNumber = time.getHours();\n this.minutesInput.valueAsNumber = time.getMinutes();\n };\n DefaultTimePicker.prototype.render = function () {\n var _this = this;\n domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-time\"))\n .addChild('span', function (builder) { return _this.timeText = builder.toDOM(); })\n .toDOM();\n var slidersBuilder = domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-sliders\"));\n slidersBuilder\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-time-row\"))\n .title('Hours')\n .addChild('input', function (builder) { return _this.hoursInput = builder\n .addClass(\"\".concat(_this.cssPrefix, \"-input-hours\"))\n .type('range')\n .attr('min', '0')\n .attr('max', '23')\n .attr('step', '1')\n .on('input', function (e) {\n _this.currentTime.setHours(_this.hoursInput.valueAsNumber);\n _this.updateDisplayedTime();\n _this.timeChanged();\n })\n .toDOM(); }); });\n slidersBuilder\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-time-row\"))\n .title('Minutes')\n .addChild('input', function (builder) { return _this.minutesInput = builder\n .addClass(\"\".concat(_this.cssPrefix, \"-input-minutes\"))\n .type('range')\n .attr('min', '0')\n .attr('max', '59')\n .attr('step', '1')\n .on('input', function (e) {\n _this.currentTime.setMinutes(_this.minutesInput.valueAsNumber);\n _this.updateDisplayedTime();\n _this.timeChanged();\n })\n .toDOM(); }); });\n return this.slot;\n };\n DefaultTimePicker.prototype.updateDisplayedTime = function () {\n var locale = i18n.getCurrentLocale();\n var timeToDraw = this.currentTime.toLocaleString(locale == 'en' ? undefined : locale, {\n hour: \"numeric\",\n minute: \"numeric\"\n });\n this.timeText.innerText = timeToDraw;\n };\n return DefaultTimePicker;\n}(TimePicker));\nexport { DefaultTimePicker };\n//# sourceMappingURL=default_time_picker.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { i18n } from '@easydata/core';\nimport { domel } from '../utils/dom_elem_builder';\nimport { DateTimePicker } from './date_time_picker';\nimport { DefaultCalendar } from './default_calendar';\nimport { DefaultTimePicker } from './default_time_picker';\nimport { getElementAbsolutePos } from '../utils/ui-utils';\nvar DefaultDateTimePicker = /** @class */ (function (_super) {\n __extends(DefaultDateTimePicker, _super);\n function DefaultDateTimePicker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultDateTimePicker.prototype.render = function () {\n var _this = this;\n var sb = domel('div', document.body)\n .addClass(\"\".concat(this.cssPrefix))\n .attr('tabIndex', '0')\n .setStyle('position', 'absolute')\n .setStyle('top', '-1000px')\n .setStyle('left', '-1000px')\n .on('keydown', function (ev) {\n if (ev.keyCode === 27) { // ESC is pressed\n _this.cancel();\n }\n else if (ev.keyCode === 13) { // Enter is pressed\n _this.apply(_this.getDateTime());\n }\n return false;\n });\n if (this.options.zIndex) {\n sb.setStyle('z-index', \"\".concat(this.options.zIndex));\n }\n this.slot = sb.toDOM();\n _super.prototype.render.call(this);\n this.renderButtons();\n this.globalMouseDownHandler = function (e) {\n var event = window.event || e;\n var o = event.srcElement || event.target;\n var isOutside = !_this.slot.contains(event.target);\n if (isOutside) {\n document.removeEventListener('mousedown', _this.globalMouseDownHandler, true);\n _this.cancel();\n }\n return true;\n };\n };\n DefaultDateTimePicker.prototype.renderButtons = function () {\n var _this = this;\n var builder = domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-buttons\"))\n .addChild('button', function (b) { return _this.nowButton = b\n .addClass(\"\".concat(_this.cssPrefix, \"-button \").concat(_this.cssPrefix, \"-button-now\"))\n .text(i18n.getText('ButtonNow'))\n .on('click', function () {\n _this.setDateTime(new Date());\n _this.dateTimeChanged();\n return false;\n })\n .toDOM(); });\n if (this.options.showTimePicker || !this.options.oneClickDateSelection) {\n builder.addChild('button', function (b) { return _this.submitButton = b\n .addClass(\"\".concat(_this.cssPrefix, \"-button \").concat(_this.cssPrefix, \"-button-apply\"))\n .text(i18n.getText('ButtonApply'))\n .on('click', function () {\n _this.apply(_this.getDateTime());\n return false;\n })\n .toDOM(); });\n }\n builder.addChild('button', function (b) { return _this.submitButton = b\n .addClass(\"\".concat(_this.cssPrefix, \"-button \").concat(_this.cssPrefix, \"-button-cancel\"))\n .text(i18n.getText('ButtonCancel'))\n .on('click', function () {\n _this.cancel();\n return false;\n })\n .toDOM(); });\n };\n DefaultDateTimePicker.prototype.createCalendar = function (options) {\n this.calendarSlot =\n domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-cal\"))\n .toDOM();\n return new DefaultCalendar(this.calendarSlot, options);\n };\n DefaultDateTimePicker.prototype.createTimePicker = function (options) {\n this.timePickerSlot =\n domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-tp\"))\n .toDOM();\n return new DefaultTimePicker(this.timePickerSlot, options);\n };\n DefaultDateTimePicker.prototype.show = function (anchor) {\n var _this = this;\n if (this.options.showDateTimeInput) {\n if (this.options.beforeShow) {\n this.options.beforeShow();\n }\n var anchorPos = getElementAbsolutePos(anchor || document.body);\n var parentPos = getElementAbsolutePos(anchor ? anchor.parentElement || anchor : document.body);\n this.slot.style.top = parentPos.y + 'px';\n this.slot.style.left = anchorPos.x + 'px';\n }\n else {\n _super.prototype.show.call(this, anchor);\n this.slot.focus();\n }\n setTimeout(function () {\n document.addEventListener('mousedown', _this.globalMouseDownHandler, true);\n }, 1);\n };\n return DefaultDateTimePicker;\n}(DateTimePicker));\nexport { DefaultDateTimePicker };\n//# sourceMappingURL=default_date_time_picker.js.map","export var DialogFooterAlignment;\n(function (DialogFooterAlignment) {\n DialogFooterAlignment[DialogFooterAlignment[\"Left\"] = 1] = \"Left\";\n DialogFooterAlignment[DialogFooterAlignment[\"Center\"] = 2] = \"Center\";\n DialogFooterAlignment[DialogFooterAlignment[\"Right\"] = 3] = \"Right\";\n})(DialogFooterAlignment || (DialogFooterAlignment = {}));\n//# sourceMappingURL=dialog_service.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { i18n, utils, liquid } from '@easydata/core';\nimport { DialogFooterAlignment } from './dialog_service';\nimport { domel } from '../utils/dom_elem_builder';\nvar cssPrefix = \"kdlg\";\nexport var DefaultDialogService = /** @class */ (function () {\n function DefaultDialogService() {\n }\n DefaultDialogService.prototype.openConfirm = function (title, content, callback) {\n var _this = this;\n var template = \"<div id=\\\"\".concat(cssPrefix, \"-dialog-confirm\\\">\").concat(content, \"</div>\");\n var options = {\n title: title,\n closable: false,\n submitable: true,\n cancelable: true,\n body: template\n };\n if (callback) {\n options.onSubmit = function () {\n callback(true);\n };\n options.onCancel = function () {\n callback(false);\n };\n this.open(options);\n return;\n }\n return new Promise(function (resolve) {\n options.onSubmit = function () {\n resolve(true);\n };\n options.onCancel = function () {\n resolve(false);\n };\n _this.open(options);\n });\n };\n DefaultDialogService.prototype.openPrompt = function (title, content, defVal, callback) {\n var _this = this;\n var template = \"<div id=\\\"\".concat(cssPrefix, \"-dialog-form\\\" class=\\\"kfrm-form\\\">\\n <div class=\\\"kfrm-fields label-above\\\">\\n <label for=\\\"\").concat(cssPrefix, \"-dialog-form-input\\\" id=\\\"\").concat(cssPrefix, \"-dialog-form-content\\\">\").concat(content, \"</label>\\n <input type=\\\"text\\\" name=\\\"\").concat(cssPrefix, \"-dialog-form-input\\\" id=\\\"\").concat(cssPrefix, \"-dialog-form-input\\\" />\\n </div>\\n </div>\");\n var options = {\n title: title,\n submitable: true,\n closable: true,\n cancelable: true,\n submitOnEnter: true,\n body: template,\n arrangeParents: false,\n beforeOpen: function () {\n var input = document.getElementById(\"\".concat(cssPrefix, \"-dialog-form-input\"));\n if (defVal) {\n input.value = defVal;\n }\n input.focus();\n }\n };\n var processInput = function (callback) {\n var input = document.getElementById(\"\".concat(cssPrefix, \"-dialog-form-input\"));\n var result = input.value;\n if (result && result.replace(/\\s/g, '').length > 0) {\n callback(result);\n return true;\n }\n input.classList.add('eqjs-invalid');\n return false;\n };\n if (callback) {\n options.onSubmit = function () {\n return processInput(callback);\n };\n options.onCancel = function () {\n callback(\"\");\n };\n this.open(options);\n return;\n }\n return new Promise(function (resolve) {\n options.onSubmit = function () {\n return processInput(resolve);\n };\n options.onCancel = function () {\n resolve(\"\");\n };\n _this.open(options);\n });\n };\n DefaultDialogService.prototype.open = function (options, data) {\n var _this = this;\n var dialog = new DefaultDialog(options, data);\n var onDestroy = options.onDestroy;\n options.onDestroy = function (dlg) {\n _this.untrack(dlg);\n onDestroy && onDestroy(dlg);\n };\n dialog.open();\n this.track(dialog);\n return dialog;\n };\n DefaultDialogService.prototype.createSet = function (options) {\n return new DefaultDialogSet(options, this);\n };\n DefaultDialogService.prototype.untrack = function (dlg) {\n var index = DefaultDialogService.openDialogs.indexOf(dlg);\n if (index >= 0) {\n DefaultDialogService.openDialogs.splice(index, 1);\n }\n };\n DefaultDialogService.prototype.track = function (dlg) {\n DefaultDialogService.openDialogs.push(dlg);\n };\n DefaultDialogService.prototype.openProgress = function (options) {\n var _this = this;\n var dialog = new DefaultProgressDialog(options);\n var onDestroy = options.onDestroy;\n options.onDestroy = function (dlg) {\n _this.untrack(dlg);\n onDestroy && onDestroy(dlg);\n };\n dialog.open();\n this.track(dialog);\n return dialog;\n };\n DefaultDialogService.prototype.getAllDialogs = function () {\n return Array.from(DefaultDialogService.openDialogs);\n };\n DefaultDialogService.prototype.closeAllDialogs = function () {\n for (var _i = 0, _a = Array.from(DefaultDialogService.openDialogs); _i < _a.length; _i++) {\n var dialog = _a[_i];\n dialog.close();\n }\n };\n DefaultDialogService.openDialogs = [];\n return DefaultDialogService;\n}());\nvar DefaultDialog = /** @class */ (function () {\n function DefaultDialog(options, data) {\n var _this = this;\n this.options = options;\n this.submitHandler = function (token) {\n if (_this.options.onSubmit && _this.options.onSubmit(_this, token) === false) {\n return false;\n }\n _this.destroy();\n return true;\n };\n this.cancelHandler = function () {\n if (_this.options.onCancel) {\n _this.options.onCancel(_this);\n }\n _this.destroy();\n };\n this.keydownHandler = function (ev) {\n if (ev.keyCode == 13 && _this.isActiveDialog()) {\n ev.preventDefault();\n ev.stopPropagation();\n if (_this.submitHandler()) {\n window.removeEventListener('keydown', _this.keydownHandler, false);\n return false;\n }\n }\n return true;\n };\n this.dialogId = utils.generateId('dlg');\n this.data = data;\n this.slot =\n domel('div', document.body)\n .attr('tab-index', '-1')\n .data('dialog-id', this.dialogId)\n .addClass(\"\".concat(cssPrefix, \"-modal\"), 'is-active')\n .focus()\n .addChild('div', function (b) { return b\n .addClass('kdlg-modal-background'); })\n .addChild('div', function (b) { return _this.windowElement = b\n .addClass(\"\".concat(cssPrefix, \"-modal-window\"))\n .addChild('header', function (b) {\n _this.headerElement = b\n .addClass(\"\".concat(cssPrefix, \"-header\"))\n .addChild('p', function (b) { return b\n .addClass(\"\".concat(cssPrefix, \"-header-title\"))\n .addText(options.title); })\n .toDOM();\n if (options.closable !== false)\n b.addChild('button', function (b) { return b\n .addClass(\"\".concat(cssPrefix, \"-modal-close\"))\n .on('click', function () {\n _this.cancelHandler();\n })\n .focus(); });\n })\n .addChild('div', function (b) {\n b.addClass(\"\".concat(cssPrefix, \"-alert-container\"));\n _this.alertElement = b.toDOM();\n })\n .addChild('section', function (b) {\n _this.bodyElement = b\n .addClass(\"\".concat(cssPrefix, \"-body\"))\n .toDOM();\n if (typeof options.body === 'string') {\n var html = liquid.renderLiquidTemplate(options.body, data);\n b.addHtml(html);\n }\n else {\n b.addChildElement(options.body);\n }\n })\n .addChild('footer', function (b) {\n var alignClass = null;\n if (options.footerAlignment && options.footerAlignment == DialogFooterAlignment.Center) {\n alignClass = 'align-center';\n }\n else {\n alignClass = 'align-right';\n }\n _this.footerElement = b\n .addClass(\"\".concat(cssPrefix, \"-footer\"))\n .toDOM();\n b.addClass(alignClass);\n if (options.submitable === false)\n return;\n b.addChild('button', function (bb) {\n bb.id(_this.dialogId + '-btn-submit')\n .addClass('kfrm-button', 'is-info')\n .addText(options.submitButtonText || i18n.getText('ButtonOK'));\n if (options.recaptchaSiteKey) {\n bb.data('sitekey', options.recaptchaSiteKey);\n bb.addClass('g-recaptcha');\n bb.on('click', function (e) {\n if (grecaptcha) {\n grecaptcha.ready(function () {\n grecaptcha.execute(options.recaptchaSiteKey, { action: 'submit' })\n .then(function (token) {\n _this.submitHandler(token);\n });\n });\n }\n else {\n _this.submitHandler();\n }\n });\n }\n else {\n bb.on('click', function (e) {\n _this.submitHandler();\n });\n }\n bb.focus();\n });\n if (options.cancelable !== false)\n b.addChild('button', function (bb) { return bb\n .id(_this.dialogId + '-btn-cancel')\n .addClass('kfrm-button')\n .addText(options.cancelButtonText || i18n.getText('ButtonCancel'))\n .on('click', function (e) {\n _this.cancelHandler();\n }); });\n })\n .toDOM(); })\n .toDOM();\n }\n DefaultDialog.prototype.getData = function () {\n return this.data;\n };\n DefaultDialog.prototype.getRootElement = function () {\n return this.slot;\n };\n DefaultDialog.prototype.getSubmitButtonElement = function () {\n return document.getElementById(this.dialogId + '-btn-submit');\n };\n DefaultDialog.prototype.getCancelButtonElement = function () {\n return document.getElementById(this.dialogId + '-btn-cancel');\n };\n DefaultDialog.prototype.open = function () {\n var _this = this;\n if (this.options.beforeOpen) {\n this.options.beforeOpen(this);\n }\n domel(this.slot).show();\n if (this.options.arrangeParents) {\n this.arrangeParents(true);\n }\n var windowDiv = this.slot\n .querySelector(\".\".concat(cssPrefix, \"-modal-window\"));\n if (this.options.height) {\n windowDiv.style.height = typeof this.options.height === 'string'\n ? this.options.height\n : \"\".concat(this.options.height, \"px\");\n }\n if (this.options.width) {\n windowDiv.style.width = typeof this.options.width === 'string'\n ? this.options.width\n : \"\".concat(this.options.width, \"px\");\n }\n if (this.options.submitOnEnter) {\n window.addEventListener('keydown', this.keydownHandler, false);\n }\n //clear alert on change in any input element \n this.slot.querySelectorAll('input')\n .forEach(function (element) {\n return element.addEventListener('input', function () {\n _this.clearAlert();\n if (_this.options.onInput) {\n _this.options.onInput(_this);\n }\n });\n });\n if (this.options.onShow) {\n this.options.onShow(this);\n }\n };\n DefaultDialog.prototype.submit = function () {\n this.submitHandler();\n };\n DefaultDialog.prototype.cancel = function () {\n this.cancelHandler();\n };\n DefaultDialog.prototype.close = function () {\n this.destroy();\n };\n DefaultDialog.prototype.disableButtons = function () {\n var buttons = this.slot.querySelectorAll('button');\n buttons.forEach(function (button) { return button.disabled = true; });\n };\n DefaultDialog.prototype.enableButtons = function () {\n var buttons = this.slot.querySelectorAll('button');\n buttons.forEach(function (button) { return button.disabled = false; });\n };\n DefaultDialog.prototype.showAlert = function (text, reason, replace) {\n var alert = domel('div')\n .addClass(\"\".concat(cssPrefix, \"-alert \").concat(reason || ''))\n .addChild('span', function (b) { return b\n .addClass(\"\".concat(cssPrefix, \"-alert-closebtn\"))\n .text('×')\n .on('click', function (ev) {\n var alert = ev.target.parentElement;\n alert.parentElement.removeChild(alert);\n }); })\n .addText(text)\n .toDOM();\n if (replace === true) {\n this.clearAlert();\n }\n this.alertElement.appendChild(alert);\n };\n DefaultDialog.prototype.clearAlert = function () {\n this.alertElement.innerHTML = '';\n };\n DefaultDialog.prototype.destroy = function () {\n var elem = document.querySelectorAll(\"[data-dialog-id=\\\"\".concat(this.dialogId, \"\\\"]\"));\n if (elem.length <= 0)\n return;\n if (this.options.arrangeParents) {\n this.arrangeParents(false);\n }\n document.body.removeChild(this.slot);\n if (this.options.submitOnEnter) {\n window.removeEventListener('keydown', this.keydownHandler, false);\n }\n if (this.options.onDestroy) {\n this.options.onDestroy(this);\n }\n };\n DefaultDialog.prototype.isActiveDialog = function () {\n var windowDivs = document.documentElement.querySelectorAll('.kdlg-modal');\n return windowDivs[windowDivs.length - 1] === this.slot;\n };\n DefaultDialog.prototype.arrangeParents = function (turnOn) {\n var windowDivs = document.documentElement.querySelectorAll('.kdlg-modal-window');\n for (var i = 0; i < windowDivs.length - 1; i++) {\n if (turnOn) {\n var offset = i == 0 ? 20 : i * 40 + 20;\n domel(windowDivs[i])\n .setStyle('margin-top', \"\".concat(offset, \"px\"))\n .setStyle('margin-left', \"\".concat(offset, \"px\"));\n }\n else {\n domel(windowDivs[i])\n .removeStyle('margin-top')\n .removeStyle('margin-left');\n }\n }\n };\n return DefaultDialog;\n}());\nexport { DefaultDialog };\nvar DefaultProgressDialog = /** @class */ (function (_super) {\n __extends(DefaultProgressDialog, _super);\n function DefaultProgressDialog(options, data) {\n var _this = this;\n var contentElement;\n var progressElement;\n var body = domel('div')\n .addChild('div', function (b) { return contentElement = b\n .text(options.content || '')\n .toDOM(); })\n .addChild('div', function (b) {\n b\n .addClass(\"\".concat(cssPrefix, \"-progress-line\"))\n .addChild('div', function (b) {\n progressElement = b\n .addClass('fill')\n .toDOM();\n if (options.determinated) {\n b.setStyle('width', '0%');\n }\n else {\n b.addClass('indeterminate');\n }\n });\n })\n .toDOM();\n _this = _super.call(this, {\n title: options.title,\n body: body,\n beforeOpen: options.beforeOpen,\n onSubmit: options.onSubmit,\n width: options.width,\n height: options.height,\n submitable: false,\n cancelable: false,\n closable: false,\n onDestroy: options.onDestroy\n }, data) || this;\n _this.contentElement = contentElement;\n _this.progressElement = progressElement;\n return _this;\n }\n DefaultProgressDialog.prototype.updateContent = function (content) {\n this.contentElement.innerText = content;\n };\n DefaultProgressDialog.prototype.updateProgress = function (progress) {\n var _this = this;\n progress = this.in01(progress);\n this.progressElement.style.width = \"\".concat(progress * 100, \"%\");\n if (progress === 1) {\n // postpone for 0.5s for smooth closing\n setTimeout(function () {\n _this.submit();\n }, 500);\n }\n };\n DefaultProgressDialog.prototype.in01 = function (num) {\n if (num > 1)\n return 1;\n if (num < 0)\n return 0;\n return num;\n };\n return DefaultProgressDialog;\n}(DefaultDialog));\nexport { DefaultProgressDialog };\nvar DefaultDialogSet = /** @class */ (function () {\n function DefaultDialogSet(options, dialogService) {\n this.options = options;\n this.dialogService = dialogService;\n this.currentDialog = null;\n this.currentIndex = 0;\n this.options = options;\n this.dialogService = dialogService;\n }\n DefaultDialogSet.prototype.getCurrent = function () {\n return this.currentDialog;\n };\n DefaultDialogSet.prototype.openNext = function (data) {\n return this.open(this.currentIndex + 1, data);\n };\n DefaultDialogSet.prototype.openPrev = function (data) {\n return this.open(this.currentIndex - 1, data);\n };\n DefaultDialogSet.prototype.open = function (page, data) {\n if (page < 0) {\n this.currentIndex = 0;\n }\n else if (page >= this.options.length) {\n this.currentIndex = this.options.length - 1;\n }\n else {\n this.currentIndex = page;\n }\n if (this.currentDialog) {\n try {\n this.currentDialog.close();\n }\n catch (e) { }\n }\n var dlgOptions = this.options[this.currentIndex];\n this.currentDialog = this.dialogService.open(dlgOptions, data);\n return this.currentDialog;\n };\n DefaultDialogSet.prototype.close = function () {\n if (this.currentDialog) {\n this.currentDialog.close();\n this.currentDialog = null;\n }\n };\n return DefaultDialogSet;\n}());\nexport { DefaultDialogSet };\n//# sourceMappingURL=default_dialog_service.js.map","import { i18n } from '@easydata/core';\nfunction addEasyDataUITexts() {\n i18n.updateDefaultTexts({\n GridPageInfo: '{FirstPageRecordNum} - {LastPageRecordNum} of {Total} records',\n GridItemsPerPage: 'items per page',\n ButtonOK: \"OK\",\n ButtonCancel: \"Cancel\",\n ButtonApply: 'Apply',\n ButtonNow: 'Now',\n LblTotal: 'Total'\n });\n}\naddEasyDataUITexts();\n//# sourceMappingURL=text_resources.js.map","// grid\nexport * from './grid/easy_grid';\nexport * from './grid/easy_grid_events';\nexport * from './grid/easy_grid_options';\nexport * from './grid/easy_grid_columns';\nexport * from './grid/easy_grid_cell_renderer';\n//datetimepicker\nexport * from './datetimepicker/calendar';\nexport * from './datetimepicker/date_time_picker';\nexport * from './datetimepicker/date_time_picker_options';\nexport * from './datetimepicker/default_calendar';\nexport * from './datetimepicker/default_date_time_picker';\nexport * from './datetimepicker/default_time_picker';\nexport * from './datetimepicker/time_picker';\n// utils\nexport * from './utils/browser_utils';\nexport * from './utils/dom_elem_builder';\nexport * from './utils/drag_manager';\nexport * from './utils/mask';\nexport * from './utils/ui-utils';\n//dialogs\nexport * from './dialogs/default_dialog_service';\nexport * from './dialogs/dialog_service';\nimport './i18n/text_resources';\nimport { DefaultDialogService } from './dialogs/default_dialog_service';\n// export dialogs to use outside of context as global\nvar dialogs = new DefaultDialogService();\nexport { dialogs };\n//# sourceMappingURL=public_api.js.map","export var browserUtils;\n(function (browserUtils) {\n var _isFirefox = null;\n var _isIE = null;\n function IsIE() {\n // return eval('/*@cc_on!@*/false || !!document.documentMode');\n if (_isIE === null) {\n var ua = navigator.userAgent;\n /* MSIE used to detect old browsers and Trident used to newer ones*/\n _isIE = ua.indexOf(\"MSIE \") > -1 || ua.indexOf(\"Trident/\") > -1;\n }\n return _isIE;\n }\n browserUtils.IsIE = IsIE;\n function IsEdge() {\n return !IsIE() && eval('!!window.StyleMedia');\n }\n browserUtils.IsEdge = IsEdge;\n function IsFirefox() {\n if (_isFirefox === null) {\n var ua = navigator.userAgent;\n _isFirefox = ua.toLowerCase().indexOf('firefox') > -1;\n }\n return _isFirefox;\n }\n browserUtils.IsFirefox = IsFirefox;\n var _detectedIsMobileMode = false;\n var _isMobileMode = undefined;\n var detectIsMobileMode = function () {\n var oldValue = isMobileMode();\n _detectedIsMobileMode = window.matchMedia('only screen and (max-width: 840px)').matches\n || window.matchMedia('only screen and (max-height: 420px)').matches;\n var newValue = isMobileMode();\n if (newValue !== oldValue && mobileModeChangeHandler) {\n mobileModeChangeHandler(newValue);\n }\n };\n detectIsMobileMode();\n window.addEventListener('resize', function () { return detectIsMobileMode(); });\n function isMobileMode() {\n if (_isMobileMode !== undefined) {\n return _isMobileMode;\n }\n else {\n return _detectedIsMobileMode;\n }\n }\n browserUtils.isMobileMode = isMobileMode;\n function setIsMobileMode(value) {\n var oldValue = isMobileMode();\n _isMobileMode = value;\n var newValue = isMobileMode();\n if (newValue !== oldValue && mobileModeChangeHandler) {\n mobileModeChangeHandler(newValue);\n }\n }\n browserUtils.setIsMobileMode = setIsMobileMode;\n var mobileModeChangeHandler;\n function onMobileModeChanged(callback) {\n mobileModeChangeHandler = callback;\n }\n browserUtils.onMobileModeChanged = onMobileModeChanged;\n function getMobileCssClass() {\n return isMobileMode() ? 'k-mobile' : null;\n }\n browserUtils.getMobileCssClass = getMobileCssClass;\n})(browserUtils || (browserUtils = {}));\n//# sourceMappingURL=browser_utils.js.map","module.exports = __WEBPACK_EXTERNAL_MODULE__388__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { \r\n EqContext, Widget, WidgetGroup, \r\n ExprTag, QueryChangeEventData, QueryChangePart, QueryChangeAction \r\n} from '@easyquery/core';\r\n\r\nimport { eqDragManager, createBrowserEvent } from '@easydata/ui';\r\n\r\nimport { eqCssPrefix } from '../utils/utils'\r\nimport { browserUtils } from '../utils/browser_utils'\r\nimport { EntitiesPanelOptions } from './widget_options'\r\n\r\n/**\r\n * The entities panel wiget, implemented without JQuery.\r\n */\r\nexport class EntitiesPanel extends Widget {\r\n\r\n private panel: HTMLElement;\r\n private rootEntityBlock: HTMLElement;\r\n private entityTreeBlock: HTMLElement;\r\n private progressBlock: HTMLElement;\r\n private filterBoxBlock: HTMLElement;\r\n private filterBoxInput: HTMLInputElement;\r\n\r\n private options: EntitiesPanelOptions;\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-ep';\r\n }\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n this.group = WidgetGroup.Model | WidgetGroup.Query;\r\n this.panel = slot;\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'entitiesPanel';\r\n }\r\n\r\n /**\r\n * Initialize widget.\r\n * @param context The context. \r\n * @param options The options.\r\n */\r\n public init(context: EqContext, options?: EntitiesPanelOptions) {\r\n super.init(context, options);\r\n\r\n this.setOptions(options);\r\n this.renderProgressBlock();\r\n }\r\n\r\n /**\r\n * Refresh widget implementation\r\n */\r\n protected refreshCore() {\r\n this.render();\r\n if (this.options.syncWithColumns) {\r\n this.refreshCheckedStateByColumns();\r\n }\r\n }\r\n\r\n protected onProcessStartCore() {\r\n if (this.options.showIndicatorOnLoad) {\r\n if (!this.progressBlock.parentNode)\r\n this.panel.appendChild(this.progressBlock);\r\n }\r\n }\r\n \r\n protected onProcessEndCore() {\r\n if (this.options.showIndicatorOnLoad) {\r\n if (this.progressBlock.parentNode)\r\n this.panel.removeChild(this.progressBlock);\r\n }\r\n }\r\n\r\n protected destroyCore() {\r\n this.slot.innerHTML = '';\r\n }\r\n\r\n private setOptions(options: EntitiesPanelOptions) {\r\n\r\n this.options = {\r\n showToolbar: true,\r\n syncWithColumns: false,\r\n showSelectAllButton: false,\r\n showClearSelectionButton: true,\r\n showAddColumnButton: true,\r\n showAddConditionButton: true,\r\n showCheckboxes: true,\r\n showTooltips: true,\r\n draggableAttributes: true,\r\n showAttributes: { useInConditions: true, useInResult: true, useInSorting: false },\r\n showFilterBox: false,\r\n filterBoxMode: 0,\r\n showIndicatorOnLoad: true,\r\n attrPlacement: 0,\r\n sortEntities: false,\r\n autoClearSelection: true,\r\n entityRenderedCallback: null,\r\n attributeRenderedCallback: null,\r\n }\r\n\r\n if (options) {\r\n dataUtils.assignDeep(this.options, options);\r\n }\r\n\r\n if (this.queryChangedCallbackId) {\r\n const query = this.context.getQuery();\r\n query.removeChangedCallback(this.queryChangedCallbackId);\r\n }\r\n\r\n if (this.options.syncWithColumns) {\r\n const query = this.context.getQuery();\r\n this.queryChangedCallbackId = query.addChangedCallback((ev) => {\r\n const edata = ev.data as QueryChangeEventData;\r\n if (!edata || (edata.part != QueryChangePart.Columns && edata.part != QueryChangePart.All)) {\r\n return;\r\n }\r\n this.refreshCheckedStateByColumns();\r\n });\r\n }\r\n }\r\n\r\n private queryChangedCallbackId: string = null;\r\n\r\n private render() {\r\n let model = this.context.getModel();;\r\n\r\n this.clear();\r\n\r\n this.panel.classList.add(`${this.cssPrefix}-panel`);\r\n this.panel.classList.add(browserUtils.getMobileCssClass());\r\n\r\n this.rootEntityBlock = document.createElement('div');\r\n if (model != null && !model.isEmpty()) {\r\n let entTree = model.getEntitiesTree({\r\n addUIC: this.options.showAttributes.useInConditions,\r\n addUIR: this.options.showAttributes.useInResult,\r\n addUIS: this.options.showAttributes.useInSorting,\r\n attrPlacement: this.options.attrPlacement,\r\n sortEntities: this.options.sortEntities,\r\n includeRootData: true\r\n });\r\n\r\n this.entityTreeBlock = this.renderEntity(entTree, this.rootEntityBlock, 0);\r\n this.panel.appendChild(this.entityTreeBlock);\r\n }\r\n\r\n if (this.options.showFilterBox) {\r\n this.createFilterBox();\r\n }\r\n else {\r\n this.rootEntityBlock.style.top = '0';\r\n }\r\n\r\n if (this.options.showToolbar && !this.options.syncWithColumns) {\r\n this.createToolPanel();\r\n }\r\n else {\r\n this.rootEntityBlock.style.bottom = '0';\r\n }\r\n }\r\n\r\n private renderEntity(entity, block: HTMLElement, offset: number): HTMLElement {\r\n\r\n let entityBlock: HTMLElement;\r\n\r\n let entityNode = document.createElement('div');\r\n entityNode.classList.add(`${this.cssPrefix}-entity-node`);\r\n entityNode.classList.add(browserUtils.getMobileCssClass());\r\n\r\n let entityChildren = document.createElement('div');\r\n entityChildren.classList.add(`${this.cssPrefix}-entity-children`);\r\n entityChildren.classList.add(browserUtils.getMobileCssClass());\r\n\r\n let nodeLabel = document.createElement('label');\r\n nodeLabel.classList.add(`${this.cssPrefix}-entity-node-label`);\r\n\r\n let nodeInput = document.createElement('input');\r\n nodeInput.type = 'checkbox';\r\n nodeInput.title = entity.text;\r\n\r\n let nodeToggleButton = document.createElement('a');\r\n nodeToggleButton.href = 'javascript:void(0)';\r\n nodeToggleButton.title = `${i18n.getText(\"EntityToggle\")} ${entity.text}`;\r\n nodeToggleButton.classList.add(`${this.cssPrefix}-entity-node-button`);\r\n\r\n let attrNode: HTMLElement, attrLabel: HTMLLabelElement, attrInput: HTMLInputElement;\r\n\r\n let currentOffset = offset;\r\n\r\n let isAttributeInTree = (attrId: string, entityBlock: HTMLElement): boolean => {\r\n let res = entityBlock.querySelectorAll(`.${this.cssPrefix}-entity-attr[data-id=\"${attrId}\"]`);\r\n return res.length > 0;\r\n };\r\n\r\n if (block) {\r\n entityBlock = block;\r\n entityBlock.innerHTML = '';\r\n }\r\n else {\r\n entityBlock = document.createElement('div');\r\n }\r\n\r\n entityBlock.classList.add(`${this.cssPrefix}-entity`);\r\n entityBlock.classList.add(browserUtils.getMobileCssClass());\r\n\r\n if (entity.id && entity.id != \"\") {\r\n nodeLabel.innerText = entity.text;\r\n entityNode.appendChild(nodeLabel); //caption\r\n\r\n if (this.options.showCheckboxes) {\r\n nodeLabel.insertBefore(nodeInput, nodeLabel.firstChild)\r\n }\r\n\r\n entityNode.insertBefore(nodeToggleButton, entityNode.firstChild);\r\n\r\n if (this.options.showTooltips && entity.description) {\r\n nodeLabel.setAttribute('title', entity.description);\r\n }\r\n\r\n for (let i = 0; i < currentOffset; i++) {\r\n let divElem = document.createElement('div');\r\n divElem.classList.add(`${this.cssPrefix}-entity-offset`);\r\n\r\n entityNode.insertBefore(divElem, entityNode.firstChild);\r\n }\r\n\r\n entityBlock.appendChild(entityNode);\r\n entityChildren.hidden = true;\r\n\r\n currentOffset++;\r\n }\r\n\r\n let itemsLength = entity.items ? entity.items.length : 0;\r\n for (let i = 0; i < itemsLength; i++) {\r\n let item = entity.items[i];\r\n\r\n if (item.isEntity) {\r\n entityChildren.appendChild(this.renderEntity(item, null, currentOffset));\r\n }\r\n else {\r\n if (!item.lookupAttr || !(isAttributeInTree(item.lookupAttr, entityChildren))) {\r\n attrLabel = document.createElement('label');\r\n attrLabel.innerText = item.text;\r\n attrLabel.classList.add(`${this.cssPrefix}-entity-attr-label`);\r\n\r\n if (this.options.showCheckboxes) {\r\n attrInput = document.createElement('input');\r\n attrInput.type = 'checkbox';\r\n attrInput.title = item.text;\r\n attrLabel.insertBefore(attrInput, attrLabel.firstChild);\r\n\r\n if (this.options.syncWithColumns) {\r\n attrInput.addEventListener('change', (ev) => {\r\n const model = this.context.getModel();\r\n const query = this.context.getQuery();\r\n const checkbox = ev.currentTarget as HTMLInputElement;\r\n const attrId = checkbox.parentElement.parentElement.getAttribute('data-id');\r\n\r\n if (model.checkAttrProperty(attrId, \"useInResult\")) {\r\n if (checkbox.checked) {\r\n const attr = model.getAttributeById(attrId);\r\n const column = query.addColumn({\r\n attribute: attr\r\n });\r\n query.fireColumnsChangedEvent(QueryChangeAction.Add, column)\r\n }\r\n else {\r\n const columns = query.getColumns()\r\n .filter(col => col.expr.tag === ExprTag.EntityAttribute \r\n && col.expr.value === attrId);\r\n \r\n if (columns.length > 0) {\r\n query.removeColumn(columns[0])\r\n query.fireColumnsChangedEvent(QueryChangeAction.Delete, columns[0]);\r\n }\r\n \r\n }\r\n \r\n }\r\n });\r\n }\r\n }\r\n\r\n if (this.options.showTooltips && item.description) {\r\n attrLabel.setAttribute('title', item.description);\r\n }\r\n\r\n for (let j = 0; j < currentOffset + 1; j++) {\r\n let divElem = document.createElement('div');\r\n divElem.classList.add(`${this.cssPrefix}-entity-offset`);\r\n\r\n attrLabel.insertBefore(divElem, attrLabel.firstChild);\r\n }\r\n\r\n attrNode = document.createElement('div');\r\n attrNode.classList.add(`${this.cssPrefix}-entity-attr`);\r\n if (entityNode.innerHTML.length == 0) {\r\n attrNode.classList.add(`${this.cssPrefix}-entity-attr-root`);\r\n }\r\n\r\n attrNode.innerHTML = \"\";\r\n attrNode.appendChild(attrLabel);\r\n attrNode.setAttribute('data-id', item.id);\r\n\r\n if (this.options.draggableAttributes) {\r\n\r\n eqDragManager.registerDraggableItem({\r\n element: attrNode,\r\n scope: \"entityAttr\",\r\n data: {attrId: item.id},\r\n renderer: (dragImage) => {\r\n dragImage.innerHTML = '';\r\n\r\n const attrLabel = document.createElement('span');\r\n attrLabel.innerText = item.text;\r\n\r\n dragImage.appendChild(attrLabel);\r\n }\r\n });\r\n\r\n }\r\n\r\n if (this.options.attributeRenderedCallback) {\r\n this.options.attributeRenderedCallback(attrNode);\r\n }\r\n\r\n entityChildren.appendChild(attrNode);\r\n }\r\n }\r\n }\r\n\r\n if (entityChildren.innerHTML.length) {\r\n entityBlock.appendChild(entityChildren);\r\n\r\n nodeToggleButton.addEventListener('click', (event: MouseEvent) => {\r\n entityChildren.hidden = !entityChildren.hidden;\r\n let element = event.target as HTMLElement;\r\n let className = `${this.cssPrefix}-entity-node-button-open`;\r\n if (element.classList.contains(className)) {\r\n element.classList.remove(className);\r\n }\r\n else {\r\n element.classList.add(className);\r\n }\r\n\r\n event.preventDefault();\r\n });\r\n\r\n }\r\n\r\n if (entityChildren) {\r\n const checkboxes = entityChildren.querySelectorAll(`.${this.cssPrefix}-entity-attr > label > input`);\r\n for(let i = 0; i < checkboxes.length; i++) {\r\n const checkbox = checkboxes[i];\r\n checkbox.addEventListener('click', (event: Event) => {\r\n let element = event.target as HTMLInputElement;\r\n\r\n if (element.checked && !nodeInput.checked) {\r\n nodeInput.checked = true;\r\n }\r\n else if (entityChildren.querySelectorAll('input:checked').length === 0) {\r\n nodeInput.checked = false;\r\n }\r\n\r\n event.stopPropagation();\r\n });\r\n }\r\n }\r\n\r\n nodeInput.addEventListener('click', (event: MouseEvent) => {\r\n let element = event.target as HTMLInputElement;\r\n\r\n const entities = entityChildren.querySelectorAll('label input') as NodeListOf<HTMLInputElement>;\r\n\r\n for(let i = 0; i < entities.length; i++) {\r\n const entity = entities[i];\r\n entity.checked = element.checked;\r\n }\r\n\r\n\r\n if (this.options.syncWithColumns) {\r\n const query = this.context.getQuery();\r\n const model = this.context.getModel();\r\n\r\n const attrList = [];\r\n const attrElems = Array.from(entityChildren.querySelectorAll(`.${this.cssPrefix}-entity-attr`));\r\n for(const elem of attrElems) {\r\n const attrId = elem.getAttribute('data-id');\r\n\r\n if (model.checkAttrProperty(attrId, 'useInResult')) {\r\n attrList.push(attrId);\r\n }\r\n }\r\n\r\n if (element.checked) {\r\n for(const attrId of attrList) {\r\n query.addColumn({attributeId: attrId});\r\n }\r\n }\r\n else {\r\n const columns = query.getColumns()\r\n .filter(col => col.expr.tag === ExprTag.EntityAttribute \r\n && attrList.indexOf(col.expr.value) >= 0);\r\n query.removeColumns(columns, null);\r\n }\r\n\r\n query.fireColumnsChangedEvent();\r\n }\r\n\r\n event.stopPropagation();\r\n\r\n });\r\n\r\n if (block != this.rootEntityBlock && this.options.entityRenderedCallback) {\r\n this.options.entityRenderedCallback(entityBlock);\r\n }\r\n\r\n return entityBlock;\r\n }\r\n\r\n private createFilterBox() {\r\n this.filterBoxBlock = document.createElement('div');\r\n this.filterBoxBlock.classList.add(`${this.cssPrefix}-filter-box`);\r\n this.filterBoxBlock.classList.add(browserUtils.getMobileCssClass());\r\n\r\n this.filterBoxInput = document.createElement('input');\r\n this.filterBoxInput.classList.add(`${this.cssPrefix}-filter-box-input`);\r\n\r\n this.filterBoxInput.addEventListener('input', (e) => {\r\n const attrs = this.panel.querySelectorAll(`.${this.cssPrefix}-entity-attr`) as NodeListOf<HTMLElement>;\r\n for(let i = 0; i < attrs.length; i++) {\r\n const attr: HTMLElement = attrs[i];\r\n attr.hidden = !this.checkFilterAttribute(attr);\r\n }\r\n \r\n const entities = this.panel.querySelectorAll(`:scope > .${this.cssPrefix}-entity`) as NodeListOf<HTMLElement>;\r\n for(let i = 0; i < entities.length; i++) {\r\n const entity: HTMLElement = entities[i];\r\n\r\n let attrs = entity.querySelectorAll(`.${this.cssPrefix}-entity-attr`) as NodeListOf<HTMLElement>;\r\n let displayAttrCount = 0;\r\n for (let i = 0; i < attrs.length; i++) {\r\n if (attrs[i].style.display !== 'None') {\r\n displayAttrCount++;\r\n }\r\n }\r\n\r\n entity.hidden = displayAttrCount === 0;\r\n }\r\n\r\n if (this.filterBoxInput.value === '')\r\n this.collapseAll();\r\n else\r\n this.expandAll();\r\n\r\n });\r\n\r\n\r\n this.filterBoxBlock.appendChild(this.filterBoxInput);\r\n this.panel.insertBefore(this.filterBoxBlock, this.panel.firstChild);\r\n }\r\n\r\n private createToolPanel() {\r\n let defClass = `${this.cssPrefix}-tool-panel`;\r\n\r\n let toolPanelBlock = document.createElement('div');\r\n toolPanelBlock.classList.add(defClass);\r\n toolPanelBlock.classList.add(browserUtils.getMobileCssClass());\r\n\r\n let toolSelectAll = document.createElement('div');\r\n toolSelectAll.classList.add(`${defClass}-select-all`);\r\n toolSelectAll.title = 'Select all';\r\n\r\n let toolDeselectAll = document.createElement('div');\r\n toolDeselectAll.classList.add(`${defClass}-deselect-all`);\r\n toolDeselectAll.title = 'Clear selection';\r\n\r\n let toolAddColumns = document.createElement('div');\r\n toolAddColumns.classList.add(`${defClass}-add-columns`);\r\n toolAddColumns.title = 'Add column';\r\n\r\n let toolAddCond = document.createElement('div');\r\n toolAddCond.classList.add(`${defClass}-add-cond`);\r\n toolAddCond.title = 'Add condition';\r\n\r\n let toolLeftBlock = document.createElement('div');\r\n toolLeftBlock.classList.add(`${defClass}-left-side`);\r\n\r\n let toolRightBlock = document.createElement('div');\r\n toolRightBlock.classList.add(`${defClass}-right-side`);\r\n\r\n let model = this.context.getModel();\r\n\r\n if (this.options.showSelectAllButton) {\r\n toolSelectAll.title = i18n.getText(\"ButtonSelectAll\");\r\n toolLeftBlock.appendChild(toolSelectAll);\r\n\r\n toolSelectAll.addEventListener('click', () => {\r\n this.selectAll();\r\n });\r\n }\r\n\r\n if (this.options.showClearSelectionButton) {\r\n toolDeselectAll.title = i18n.getText(\"ButtonDeselectAll\");\r\n toolLeftBlock.appendChild(toolDeselectAll);\r\n\r\n toolDeselectAll.addEventListener('click', () => {\r\n this.deselectAll();\r\n });\r\n }\r\n\r\n if (this.options.showAddColumnButton) {\r\n toolAddColumns.title = i18n.getText(\"ButtonAddColumns\");\r\n toolRightBlock.appendChild(toolAddColumns);\r\n\r\n toolAddColumns.addEventListener('click', () => {\r\n const attrElements = this.panel.querySelectorAll(`.${this.cssPrefix}-entity-attr`) as NodeListOf<HTMLElement>;\r\n let attrList = [];\r\n let attrId: string;\r\n\r\n const query = this.context.getQuery();\r\n\r\n query.fireProcessEvent({\r\n source: self,\r\n status: \"start\"\r\n });\r\n\r\n for(let i = 0; i < attrElements.length; i++) {\r\n const attrElement = attrElements[i];\r\n let input = attrElement.getElementsByTagName('input')[0];\r\n \r\n if (input.checked) {\r\n attrId = attrElement.getAttribute('data-id');\r\n if (model.checkAttrProperty(attrId, \"useInResult\")) {\r\n attrList.push(attrId);\r\n }\r\n }\r\n }\r\n\r\n for (let attrId of attrList) {\r\n const attr = model.getAttributeById(attrId);\r\n query.addColumn({\r\n attribute: attr\r\n }, true);\r\n }\r\n \r\n query.fireChangedEvent();\r\n\r\n if (this.options.autoClearSelection) {\r\n this.deselectAll();\r\n }\r\n\r\n query.fireProcessEvent({\r\n source: self,\r\n status: \"finish\"\r\n });\r\n\r\n });\r\n }\r\n\r\n if (this.options.showAddConditionButton) {\r\n toolAddCond.title = i18n.getText(\"ButtonAddConditions\");\r\n toolRightBlock.appendChild(toolAddCond);\r\n\r\n toolAddCond.addEventListener('click', () => {\r\n let attrElements = this.panel.querySelectorAll(`.${this.cssPrefix}-entity-attr`) as NodeListOf<HTMLElement>;\r\n let attrList = [];\r\n let attrId: string;\r\n let query = this.context.getQuery();\r\n\r\n query.fireProcessEvent({\r\n source: self,\r\n status: \"start\"\r\n });\r\n\r\n for(let i = 0; i < attrElements.length; i++) {\r\n const attrElement = attrElements[i];\r\n let input = attrElement.getElementsByTagName('input')[0];\r\n \r\n if (input.checked) {\r\n attrId = attrElement.getAttribute('data-id');\r\n if (model.checkAttrProperty(attrId, \"useInConditions\")) {\r\n attrList.push(attrId);\r\n }\r\n }\r\n }\r\n\r\n for(let attrId of attrList) {\r\n query.addSimpleCondition({\r\n attributeId: attrId\r\n });\r\n \r\n }\r\n \r\n query.fireChangedEvent();\r\n\r\n if (this.options.autoClearSelection) {\r\n this.deselectAll();\r\n }\r\n\r\n query.fireProcessEvent({\r\n source: self,\r\n status: \"finish\"\r\n });\r\n });\r\n }\r\n\r\n toolPanelBlock.appendChild(toolLeftBlock);\r\n toolPanelBlock.appendChild(toolRightBlock);\r\n this.panel.appendChild(toolPanelBlock);\r\n }\r\n\r\n private checkFilterAttribute(attr: HTMLElement): boolean {\r\n const inputElem = attr.querySelector('label input') as HTMLInputElement;\r\n if (inputElem.checked) {\r\n return true;\r\n }\r\n\r\n const labelElem = attr.querySelector('label') as HTMLLabelElement;\r\n const attrCaption = labelElem.textContent;\r\n if (this.checkFilterText(attrCaption)) {\r\n return true;\r\n }\r\n\r\n const entityNode = attr.parentElement.parentElement.querySelector(`.${this.cssPrefix}-entity-node`) as HTMLElement;\r\n const entityCaption = (entityNode.querySelector('label') as HTMLLabelElement).textContent;\r\n if (this.checkFilterText(entityCaption)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private checkFilterText(value: string): boolean {\r\n let filterText = this.filterBoxInput.value;\r\n if (filterText == \"\") return true;\r\n if (this.options.filterBoxMode == 0 && value.toLowerCase().indexOf(filterText.toLowerCase()) >= 0) return true;\r\n if (this.options.filterBoxMode == 1 && value.toLowerCase().indexOf(filterText.toLowerCase()) == 0) return true;\r\n\r\n return false;\r\n }\r\n\r\n private refreshCheckedStateByColumns() {\r\n\r\n this.deselectAll();\r\n\r\n const query = this.context.getQuery();\r\n const exprColumns = query.getColumns()\r\n .filter(col => col.expr.tag === ExprTag.EntityAttribute);\r\n\r\n for(const column of exprColumns) {\r\n const attrNode = this.rootEntityBlock\r\n .querySelector(`.${this.cssPrefix}-entity-attr[data-id=\"${column.expr.value}\"]`);\r\n let checkbox = attrNode.querySelector(`label > input`) as HTMLInputElement;\r\n checkbox.checked = true;\r\n\r\n let entChildren = attrNode.parentElement;\r\n while (entChildren \r\n && entChildren.classList\r\n .contains(`${this.cssPrefix}-entity-children`)) {\r\n\r\n entChildren.hidden = false;\r\n const entElem = entChildren.parentElement;\r\n if (entElem && entChildren !== entElem.firstElementChild) {\r\n checkbox = entElem.firstElementChild\r\n .querySelector(`label > input`) as HTMLInputElement;\r\n checkbox.checked = true;\r\n\r\n entChildren = entElem.parentElement;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n private expandAll() {\r\n for(let i =0; i < this.rootEntityBlock.childNodes.length; i++) {\r\n const child = this.rootEntityBlock.childNodes[0] as HTMLElement;\r\n const childs = child.querySelectorAll(`.${this.cssPrefix}-entity-children`) as NodeListOf<HTMLElement>;\r\n for(let j = 0; j < childs.length; j++) {\r\n const elem = childs[j];\r\n elem.hidden = false\r\n }\r\n }\r\n\r\n const nodeButtons = this.rootEntityBlock.querySelectorAll(`.${this.cssPrefix}-entity-node-button`) as NodeListOf<HTMLElement>;\r\n for(let i = 0; i < nodeButtons.length; i++) {\r\n const elem = nodeButtons[i];\r\n\r\n elem.classList.add(`${this.cssPrefix}-entity-node-button-open`);\r\n }\r\n\r\n }\r\n\r\n private collapseAll() {\r\n\r\n for(let i =0; i < this.rootEntityBlock.childNodes.length; i++) {\r\n const child = this.rootEntityBlock.childNodes[0] as HTMLElement;\r\n const childs = child.querySelectorAll(`.${this.cssPrefix}-entity-children`) as NodeListOf<HTMLElement>;\r\n for(let j = 0; j < childs.length; j++) {\r\n const elem = childs[j];\r\n elem.hidden = true\r\n }\r\n }\r\n\r\n const nodeButtons = this.rootEntityBlock.querySelectorAll(`.${this.cssPrefix}-entity-node-button`) as NodeListOf<HTMLElement>;\r\n for(let i = 0; i < nodeButtons.length; i++) {\r\n const elem = nodeButtons[i];\r\n\r\n elem.classList.remove(`${this.cssPrefix}-entity-node-button-open`);\r\n }\r\n }\r\n\r\n private selectAll() {\r\n const inputs = this.entityTreeBlock.querySelectorAll('input') as NodeListOf<HTMLInputElement>;\r\n for(let i = 0; i < inputs.length; i++) {\r\n const input = inputs[i];\r\n input.checked = true;\r\n }\r\n }\r\n\r\n private deselectAll() {\r\n const inputs = this.entityTreeBlock.querySelectorAll('input') as NodeListOf<HTMLInputElement>;\r\n for(let i = 0; i < inputs.length; i++) {\r\n const input = inputs[i];\r\n input.checked = false;\r\n }\r\n }\r\n\r\n private renderProgressBlock() {\r\n this.progressBlock = document.createElement('div');\r\n this.progressBlock.classList.add(`${eqCssPrefix}-progress-win8`);\r\n this.progressBlock.classList.add(browserUtils.getMobileCssClass());\r\n 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>';\r\n }\r\n\r\n private clear() {\r\n this.panel.innerHTML = \"\";\r\n }\r\n}","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\n\r\nimport { domel } from '@easydata/ui';\r\n\r\nimport { getElementAbsolutePos, getScrollPos, getWinSize, getViewportSize } from '@easydata/ui';\r\nimport { browserUtils } from './browser_utils';\r\nimport { findHighestZIndex } from './utils';\r\n\r\ninterface MenuLevelOptions {\r\n menu?: PopupMenu;\r\n parent?: MenuLevel;\r\n container?: HTMLElement;\r\n levelIndex?: number;\r\n levelDiv?: HTMLDivElement;\r\n domWriteItemsId?: boolean;\r\n menuId?: string;\r\n itemRenderedCallback?: (item: MenuItem, itemDiv: HTMLDivElement) => void;\r\n items?: MenuItem[];\r\n showSelected?: boolean;\r\n}\r\n\r\nclass MenuLevel { \r\n private parentMenu: PopupMenu;\r\n private parentLevel: MenuLevel;\r\n\r\n private parentElement: HTMLElement;\r\n private levelIndex: number;\r\n\r\n private searchDiv: HTMLDivElement;\r\n private searchBox: HTMLInputElement;\r\n\r\n private closeDiv: HTMLDivElement;\r\n\r\n private scrollDiv: HTMLDivElement;\r\n private domWriteItemsId: boolean;\r\n\r\n private menuId: string;\r\n private itemRenderedCallback: (item: any, itemDiv: HTMLDivElement) => void;\r\n\r\n private items: MenuItem[];\r\n private filteredItems: MenuItem[];\r\n private _applyItem: MenuItem;\r\n\r\n public get applyItem(): MenuItem {\r\n return this._applyItem;\r\n }\r\n \r\n private activeItem: MenuItem;\r\n private selectedItem: MenuItem;\r\n\r\n private initialized: boolean;\r\n\r\n private updated: number;\r\n\r\n private isFilteringMode = false;\r\n private showSelected = false;\r\n\r\n public applyBtn: HTMLButtonElement;\r\n public levelDiv: HTMLDivElement;\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-menu';\r\n }\r\n\r\n\r\n constructor(options: MenuLevelOptions){\r\n //menu, items, levelIndex\r\n this.parentMenu = options.menu || null;\r\n this.parentLevel = options.parent || null;\r\n this.parentElement = options.container || document.body;\r\n this.levelIndex = options.levelIndex || 0;\r\n this.levelDiv = null;\r\n this.domWriteItemsId = options.domWriteItemsId || false;\r\n this.menuId = options.menuId || '';\r\n this.itemRenderedCallback = options.itemRenderedCallback || null;\r\n\r\n //we need to define special \"apply\" item for this level\r\n this._applyItem = { id: null, text: null, itemDiv: null};\r\n\r\n this.items = options.items || [];\r\n this.activeItem = null;\r\n this.selectedItem = null;\r\n this.initialized = false;\r\n\r\n this.showSelected = options.showSelected;\r\n\r\n this.updated = 0;\r\n\r\n this.renderContent();\r\n }\r\n\r\n public getItems() : MenuItem[] {\r\n return this.items;\r\n }\r\n\r\n public setItems(items: MenuItem[]) {\r\n this.items = items;\r\n }\r\n\r\n public renderContent() {\r\n if (!this.items) {\r\n return;\r\n }\r\n\r\n const self = this;\r\n\r\n //define internal variables used in this function\r\n const itemBgColor = this.parentMenu.style.colors.bgON || \"white\";\r\n const itemFgColor = this.parentMenu.style.colors.fgON || \"black\";\r\n const itemOverBgColor = this.parentMenu.style.colors.bgOVER || \"LightSteelBlue\";\r\n const itemFontFamily = this.parentMenu.style.itemStyle.fontFamily || \"\";\r\n const itemFontSize = this.parentMenu.style.itemStyle.fontSize || \"14px\";\r\n\r\n const multiselect = this.parentMenu.options.multiselect;\r\n const isSubQuery = this.parentMenu.options.isSubQuery;\r\n\r\n //add base DIV element which is also used to show the shadow\r\n const baseDivBuilder = domel('div')\r\n .addClass(browserUtils.getMobileCssClass());\r\n\r\n\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n baseDivBuilder\r\n .setStyle('backgroundColor', itemBgColor)\r\n .setStyle('border', '1px solid')\r\n .setStyle('borderColor', itemBgColor)\r\n .setStyle('backgroundColor', this.parentMenu.style.colors.border)\r\n .setStyle('margin', '-2px 2px 2px -2px')\r\n .setStyle('width', 'auto')\r\n .setStyle('height','auto');\r\n }\r\n\r\n baseDivBuilder\r\n .setStyle('z-index', this.parentMenu.zIndex)\r\n .setStyle('position', 'absolute')\r\n .setStyle('display', 'none');\r\n\r\n let baseDiv = baseDivBuilder.toDOM();\r\n baseDiv['menuLevel'] = this;\r\n\r\n const applyItem = this._applyItem;\r\n\r\n //if multiselect option is on - then we should add special \"apply\" item\r\n if (multiselect && this.levelIndex === 0 && this.parentMenu.options.hideButtons !== true) {\r\n const applyDiv = document.createElement(\"div\");\r\n applyDiv.classList.add(`${this.cssPrefix}-applyDiv`);\r\n applyDiv['menuItem'] = applyItem;\r\n\r\n this.applyBtn = document.createElement('button');\r\n\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n applyDiv.style.borderBottom = '1px solid';\r\n applyDiv.style.padding = '5px';\r\n applyDiv.style.marginBottom = '5px';\r\n\r\n this.applyBtn.style.padding = '0 5px';\r\n this.applyBtn.style.cursor = \"pointer\";\r\n }\r\n\r\n const applyTextNode = document.createTextNode(this.parentMenu.options.buttons.submit);\r\n this.applyBtn.appendChild(applyTextNode);\r\n applyDiv.appendChild(this.applyBtn);\r\n\r\n //cancel btn\r\n const cancelBtn = document.createElement('button');\r\n cancelBtn.classList.add(`${this.cssPrefix}-cancel`);\r\n\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n cancelBtn.style.padding = '0 5px';\r\n cancelBtn.style.cursor = 'pointer';\r\n cancelBtn.style.marginLeft = '15px';\r\n }\r\n\r\n const cancelText = document.createTextNode(this.parentMenu.options.buttons.cancel);\r\n cancelBtn.appendChild(cancelText);\r\n applyDiv.appendChild(cancelBtn);\r\n baseDiv.appendChild(applyDiv);\r\n applyItem.itemDiv = applyDiv;\r\n\r\n this.applyBtn.addEventListener('click', () => {\r\n this.submit(this._applyItem);\r\n });\r\n\r\n cancelBtn.addEventListener('click', () => {\r\n this.parentMenu.hideMenu();\r\n });\r\n }\r\n\r\n // if too many items - then we add a special \"search\" item\r\n // or there is an options to show always\r\n if (this.parentLevel == null \r\n && (this.parentMenu.options.searchBoxAlwaysShown || this.items.length >= this.parentMenu.options.showSearchBoxAfter)) {\r\n\r\n const searchDivBuilder = \r\n domel('div')\r\n .addClass(`${this.cssPrefix}-searchDiv`);\r\n\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n searchDivBuilder\r\n .setStyle('border-bottom', '1px solid #666')\r\n .setStyle('background-color', itemBgColor)\r\n .setStyle('border-color', this.parentMenu.style.colors.border);\r\n\r\n if (itemFontFamily != \"\") { \r\n searchDivBuilder.setStyle('font-family', itemFontFamily); \r\n }\r\n\r\n searchDivBuilder\r\n .setStyle('font-size', itemFontSize)\r\n .setStyle('color', itemFgColor)\r\n .setStyle('cursor', 'pointer')\r\n .setStyle('text-align', 'left')\r\n .setStyle('padding', '5px');\r\n }\r\n\r\n const searchEditBoxBuilder = \r\n domel('input')\r\n .id('searchBox')\r\n .name('searchBox')\r\n .type('text')\r\n .size(16)\r\n .addClass(`${this.cssPrefix}-searchBox`)\r\n .on('input', (ev) => {\r\n this.deactivateItem(this.activeItem);\r\n this.renderItems(this.searchBox.value);\r\n })\r\n .on('keydown', (ev) => {\r\n let keyCode = (ev as KeyboardEvent).keyCode;\r\n switch (keyCode) {\r\n case 13: //enter\r\n if (this.activeItem) {\r\n this.activeItem.itemDiv.click();\r\n }\r\n break;\r\n\r\n case 38: // up\r\n this.moveActiveItemUp();\r\n break;\r\n \r\n case 40: // down\r\n this.moveActiveItemDown();\r\n break;\r\n\r\n case 39: // right\r\n if (!this.searchBox.value) {\r\n this.openSubLevel(this.activeItem);\r\n }\r\n break; \r\n } \r\n });\r\n\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n searchEditBoxBuilder\r\n .setStyle('font-family', 'monospace')\r\n .setStyle('font-size', '8pt')\r\n .setStyle('width', '100%');\r\n }\r\n\r\n if (isSubQuery) {\r\n searchEditBoxBuilder.addClass('eqjs-dialog')\r\n }\r\n\r\n this.searchBox = searchEditBoxBuilder.toDOM();\r\n this.searchDiv = searchDivBuilder.toDOM();\r\n\r\n this.searchDiv.appendChild(this.searchBox);\r\n baseDiv.appendChild(this.searchDiv);\r\n\r\n }\r\n\r\n const scrollDiv = document.createElement(\"div\");\r\n scrollDiv.tabIndex = 1;\r\n domel(scrollDiv)\r\n .addClass(`${this.cssPrefix}-scrollDiv`)\r\n .addClass(browserUtils.getMobileCssClass());\r\n scrollDiv.style.overflowX = \"hidden\";\r\n scrollDiv.style.overflowY = \"auto\";\r\n scrollDiv.style.position = \"relative\";\r\n baseDiv.appendChild(scrollDiv);\r\n this.levelDiv = baseDiv;\r\n this.scrollDiv = scrollDiv;\r\n\r\n if (this.menuId) {\r\n this.levelDiv.id = this.menuId;\r\n }\r\n\r\n if (this.parentLevel) {\r\n this.levelDiv.style.zIndex\r\n = this.parentLevel.levelDiv.style.zIndex;\r\n }\r\n\r\n this.renderItems();\r\n\r\n const scrollDivKeyDownHandler = (event: KeyboardEvent) => {\r\n switch(event.which) {\r\n case 13: // enter\r\n if (this.parentMenu.options.multiselect) {\r\n this.parentMenu.getRootLevel().applyBtn.click();\r\n }\r\n else {\r\n if (this.activeItem) {\r\n this.activeItem.itemDiv.click();\r\n }\r\n }\r\n break;\r\n\r\n case 32: // space\r\n if (this.activeItem) {\r\n this.activeItem.itemDiv.click();\r\n }\r\n break;\r\n\r\n case 37: // left\r\n if (this.parentLevel && !this.isFilteringMode) {\r\n this.deactivateItem(this.activeItem);\r\n this.parentLevel.focus();\r\n }\r\n break;\r\n\r\n case 39: // right\r\n this.openSubLevel(this.activeItem);\r\n break;\r\n\r\n case 38: // up\r\n this.moveActiveItemUp();\r\n break;\r\n\r\n case 40: // down\r\n this.moveActiveItemDown();\r\n break;\r\n\r\n default: return; // exit this handler for other keys\r\n }\r\n event.preventDefault(); // prevent the default action (scroll / move caret) \r\n };\r\n\r\n scrollDiv.addEventListener(\"keydown\", scrollDivKeyDownHandler);\r\n\r\n if (browserUtils.isMobileMode()) {\r\n this.closeDiv = \r\n domel('div', baseDiv)\r\n .addClass('eqjs-menu-close-btn')\r\n .addText(i18n.getText('ButtonClose'))\r\n .on('click', () => {\r\n this.parentMenu.hideMenu();\r\n })\r\n .toDOM();\r\n\r\n }\r\n }\r\n\r\n private moveActiveItemDown() {\r\n const items = this.isFilteringMode ? this.filteredItems : this.items;\r\n\r\n if (this.activeItem) {\r\n const idx = items.indexOf(this.activeItem);\r\n if (idx < items.length - 1) {\r\n this.activateItem(items[idx + 1], false);\r\n }\r\n }\r\n else {\r\n this.activateItem(items[0], false);\r\n }\r\n }\r\n\r\n private moveActiveItemUp() {\r\n const items = this.isFilteringMode ? this.filteredItems : this.items;\r\n if (this.activeItem) {\r\n const idx = items.indexOf(this.activeItem);\r\n if (idx > 0) {\r\n this.activateItem(items[idx - 1], false);\r\n }\r\n }\r\n else {\r\n this.activateItem(items[items.length - 1], false);\r\n }\r\n }\r\n\r\n private openSubLevel(menuItem) {\r\n if (menuItem && menuItem.items && !this.isFilteringMode) {\r\n this.showSubLevel(menuItem);\r\n menuItem.subLevel.activateItem(menuItem.subLevel.items[0]);\r\n }\r\n }\r\n\r\n\r\n public focusScrollDiv() {\r\n this.scrollDiv.focus();\r\n }\r\n\r\n private turnCheckboxes(items: MenuItem[]) {\r\n //turn checkboxes on for selected items\r\n for (let i = 0; i < items.length; i++) {\r\n const item = items[i];\r\n if (item.itemCheckbox)\r\n item.itemCheckbox.checked = this.isItemSelected(item);\r\n if (item.items) {\r\n this.turnCheckboxes(item.items);\r\n }\r\n }\r\n }\r\n\r\n private isItemSelected(item) {\r\n if (item.items) {\r\n for (var i = 0; i < item.items.length; i++) {\r\n if (this.isItemSelected(item.items[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n else {\r\n return item.selected;\r\n }\r\n }\r\n\r\n private setItemSelected(item, value) {\r\n if (item.items) {\r\n for (let i = 0; i < item.items.length; i++) {\r\n this.setItemSelected(item.items[i], value);\r\n }\r\n }\r\n else {\r\n item.selected = value;\r\n }\r\n }\r\n\r\n private submitItems(items, selectedItems) {\r\n for (let j = 0; j < items.length; j++) {\r\n if (items[j].items) {\r\n this.submitItems(items[j].items, selectedItems);\r\n }\r\n else {\r\n if (items[j].selected) {\r\n selectedItems.push(items[j]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private allSubitemsAreFiltered(items, filterCallback: (item: any) => boolean) {\r\n for (let i = 0; i < items.length; i++) {\r\n if (filterCallback(items[i])) \r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private isItemDiv(element: HTMLElement) : boolean {\r\n return element['menuItem'] ? true : false;\r\n }\r\n\r\n private isLevelDiv(element: HTMLElement) : boolean {\r\n return element['menuLevel'] ? true : false;\r\n }\r\n\r\n private getMenuItem(element : HTMLElement | EventTarget) : any {\r\n let el = element as HTMLElement;\r\n while (!this.isItemDiv(el)) {\r\n if (this.isLevelDiv(el)) {\r\n throw \"Can't get menu item\";\r\n }\r\n el = el.parentElement;\r\n }\r\n\r\n return el['menuItem'];\r\n }\r\n\r\n private renderItemsWithoutFilter() {\r\n this.isFilteringMode = false;\r\n\r\n const scrollDiv = this.scrollDiv;\r\n\r\n const multiselect = this.parentMenu.options.multiselect;\r\n const activateOnMouseOver = this.parentMenu.options.activateOnMouseOver;\r\n\r\n const itemFgColor = this.parentMenu.style.colors.fgON || 'black';\r\n const itemOverBgColor = this.parentMenu.style.colors.bgOVER || 'LightSteelBlue';\r\n\r\n const itemFontSize = this.parentMenu.style.itemStyle.fontSize || '14px';\r\n const itemFilterCallback = this.parentMenu.getItemFilterCallback();\r\n\r\n scrollDiv.innerHTML = \"\";\r\n\r\n for (let i = 0; i < this.items.length; i++) {\r\n const item = this.items[i];\r\n if (!item || !item.text) continue;\r\n if (itemFilterCallback) {\r\n if (!itemFilterCallback(item)) continue;\r\n if (item.items && this.allSubitemsAreFiltered(item.items, itemFilterCallback)) continue;\r\n }\r\n\r\n item.data = (propName) => {\r\n return this[propName];\r\n };\r\n\r\n if (typeof (item.selected) == \"undefined\") {\r\n item.selected = false;\r\n }\r\n if (item.selected && this.selectedItem == null) {\r\n this.selectedItem = item;\r\n }\r\n const itemDiv = document.createElement(\"div\");\r\n domel(itemDiv)\r\n .addClass(`${this.cssPrefix}-itemDiv`)\r\n .addClass(browserUtils.getMobileCssClass());\r\n\r\n if (item.selected && this.showSelected && !multiselect) {\r\n itemDiv.classList.add(`${this.cssPrefix}-selected`)\r\n };\r\n\r\n if (this.domWriteItemsId && this.menuId) {\r\n itemDiv.id = 'item-' + this.menuId + '-' + item.id;\r\n }\r\n\r\n scrollDiv.appendChild(itemDiv);\r\n\r\n itemDiv['menuItem'] = item;\r\n itemDiv['menuLevel'] = this;\r\n item.itemDiv = itemDiv;\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n itemDiv.style.fontSize = itemFontSize;\r\n itemDiv.style.color = itemFgColor;\r\n itemDiv.style.paddingLeft = \"15px\";\r\n itemDiv.style.paddingRight = \"6px\";\r\n itemDiv.style.cursor = \"pointer\";\r\n }\r\n\r\n if (item.text == '---') {\r\n itemDiv.appendChild(document.createElement('hr'));\r\n }\r\n else {\r\n if (multiselect) { \r\n var cb = document.createElement(\"input\");\r\n cb.type = \"checkbox\";\r\n cb.id = \"cb\" + item.id;\r\n cb.checked = this.isItemSelected(item);\r\n cb.defaultChecked = this.isItemSelected(item);\r\n itemDiv.appendChild(cb);\r\n item.itemCheckbox = cb;\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n cb.style.margin = \"4px 10px 0 0\";\r\n cb.style.verticalAlign = \"top\";\r\n }\r\n }\r\n\r\n\r\n let itemText = item.text;\r\n if (this.parentMenu.options.showItemIds) {\r\n itemText = item.id + ':' + itemText;\r\n }\r\n const itemTextNode = document.createTextNode(itemText);\r\n itemDiv.appendChild(itemTextNode);\r\n\r\n if (item.items && item.items.length > 0) {\r\n itemDiv.classList.add(`${this.cssPrefix}-itemDiv-hasChildren`);\r\n\r\n const arrowSpan = document.createElement('span');\r\n arrowSpan.classList.add(`${this.cssPrefix}-itemDiv-arrow`);\r\n itemDiv.appendChild(arrowSpan);\r\n\r\n const arrowText = document.createTextNode('>');\r\n arrowSpan.appendChild(arrowText);\r\n }\r\n\r\n const itemClickHandler = (ev: MouseEvent) => {\r\n const menuItem = this.getMenuItem(ev.target);\r\n if (multiselect) {\r\n if (!menuItem.items || ev.target == menuItem.itemCheckbox) {\r\n const itemSelected = this.isItemSelected(menuItem);\r\n this.setItemSelected(menuItem, !itemSelected);\r\n menuItem.itemCheckbox.checked = !itemSelected;\r\n this.parentMenu.refreshCheckboxes();\r\n }\r\n else {\r\n this.activateItem(menuItem);\r\n }\r\n }\r\n else {\r\n this.activateItem(menuItem);\r\n this.submit(menuItem);\r\n }\r\n return false;\r\n };\r\n\r\n itemDiv.removeEventListener(\"click\", itemClickHandler);\r\n itemDiv.addEventListener('click', itemClickHandler);\r\n\r\n itemDiv.addEventListener('mouseenter', (ev) => {\r\n const item = this.getMenuItem(ev.target);\r\n this.parentMenu.isCursorInside = true;\r\n if (activateOnMouseOver) {\r\n this.activateItem(item);\r\n }\r\n });\r\n\r\n itemDiv.addEventListener('mouseleave', (ev) => {\r\n const item = this.getMenuItem(ev.target);\r\n this.parentMenu.isCursorInside = false;\r\n setTimeout(() => {\r\n if (!this.parentMenu.isCursorInside) {\r\n if (activateOnMouseOver && item == this.activeItem && !item.subLevel) {\r\n this.deactivateItem(item);\r\n }\r\n }\r\n }, 200);\r\n });\r\n }\r\n\r\n if (this.itemRenderedCallback) {\r\n this.itemRenderedCallback(this.menuId, itemDiv);\r\n }\r\n }\r\n }\r\n\r\n private renderItemsWithFilter(filter: string) {\r\n this.isFilteringMode = true;\r\n\r\n const scrollDiv = this.scrollDiv;\r\n scrollDiv.innerHTML = \"\";\r\n\r\n const filterSections = filter.split('>');\r\n const pureFilterTexts = filterSections.map(section => section.replace(/\\*/g, ''));\r\n\r\n const items = this.filterItems(this.items, filterSections);\r\n this.filteredItems = [];\r\n for (let i = 0; i < items.length; i++) {\r\n this.renderItemWithFilter(items[i], pureFilterTexts, 0);\r\n }\r\n }\r\n\r\n private matchesFilter(text: string, regexp?: RegExp) : boolean {\r\n if (text && regexp) {\r\n return regexp.test(text);\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n\r\n private filterItems(items: MenuItem[], filterSections: string[]): MenuItem[] {\r\n const resultItems = [];\r\n const filter = filterSections.length > 0 ? filterSections[0] : '';\r\n const restFilterSections = filterSections.length > 1 ? filterSections.slice(1) : filterSections;\r\n const filterRegexp = filter ? new RegExp(filter.replace(/\\*/g, '.+?'), 'i') : null;\r\n for (let i = 0; i < items.length; i++) {\r\n const item = items[i];\r\n if (item.items) {\r\n const groupItem = dataUtils.assign({ }, item);\r\n const groupItemMatches = this.matchesFilter(item.text, filterRegexp);\r\n\r\n //if we have only one filter section (or an empty filter)\r\n if (filterSections.length < 2) {\r\n //if current group item matches the filter -> show all sub-items\r\n if (groupItemMatches && filterSections.length < 2) {\r\n groupItem.items = dataUtils.createArrayFrom(item.items);\r\n }\r\n else {\r\n groupItem.items = this.filterItems(item.items, restFilterSections); \r\n }\r\n }\r\n //if we have more than 1 filter section and there is a match -> filter sub-items as well\r\n else if (groupItemMatches) {\r\n groupItem.items = this.filterItems(item.items, restFilterSections);\r\n }\r\n //otherwise we skip this group at all\r\n else {\r\n groupItem.items = [];\r\n }\r\n\r\n if (groupItem.items.length > 0) {\r\n resultItems.push(groupItem) \r\n }\r\n } \r\n else {\r\n if (this.matchesFilter(item.text, filterRegexp)) {\r\n resultItems.push(item);\r\n }\r\n }\r\n }\r\n\r\n return resultItems;\r\n }\r\n\r\n private renderItemWithFilter(item: MenuItem, filterTexts: string[], level: number) {\r\n const scrollDiv = this.scrollDiv;\r\n\r\n const levelFilterText = level < filterTexts.length ? filterTexts[level] : filterTexts[filterTexts.length - 1]; \r\n\r\n const multiselect = this.parentMenu.options.multiselect;\r\n const activateOnMouseOver = this.parentMenu.options.activateOnMouseOver;\r\n\r\n const itemFgColor = this.parentMenu.style.colors.fgON || 'black';\r\n const itemOverBgColor = this.parentMenu.style.colors.bgOVER || 'LightSteelBlue';\r\n\r\n const itemFontSize = this.parentMenu.style.itemStyle.fontSize || '14px';\r\n const itemFilterCallback = this.parentMenu.getItemFilterCallback();\r\n\r\n if (!item || !item.text) return;\r\n if (itemFilterCallback) {\r\n if (!itemFilterCallback(item)) return;\r\n if (item.items && this.allSubitemsAreFiltered(item.items, itemFilterCallback)) return;\r\n }\r\n\r\n item.data = function (propName) {\r\n return this[propName];\r\n };\r\n\r\n if (typeof (item.selected) == \"undefined\") {\r\n item.selected = false;\r\n }\r\n if (item.selected && this.selectedItem == null) {\r\n this.selectedItem = item;\r\n }\r\n const itemDiv = document.createElement(\"div\");\r\n domel(itemDiv)\r\n .addClass(`${this.cssPrefix}-itemDiv`)\r\n .addClass(browserUtils.getMobileCssClass());\r\n\r\n itemDiv.style.marginLeft = `${level * 10}px`;\r\n\r\n if (item.selected && !multiselect) {\r\n itemDiv.classList.add(`${this.cssPrefix}-selected`)\r\n };\r\n\r\n if (this.domWriteItemsId && this.menuId) {\r\n itemDiv.id = 'item-' + this.menuId + '-' + item.id;\r\n }\r\n\r\n scrollDiv.appendChild(itemDiv);\r\n\r\n itemDiv['menuItem'] = item;\r\n itemDiv['menuLevel'] = this;\r\n item.itemDiv = itemDiv;\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n itemDiv.style.fontSize = itemFontSize;\r\n itemDiv.style.color = itemFgColor;\r\n itemDiv.style.paddingLeft = \"15px\";\r\n itemDiv.style.paddingRight = \"6px\";\r\n itemDiv.style.cursor = \"pointer\";\r\n }\r\n\r\n if (item.text == '---') {\r\n itemDiv.appendChild(document.createElement('hr'));\r\n }\r\n else {\r\n if (multiselect) { \r\n var cb = document.createElement(\"input\");\r\n cb.type = \"checkbox\";\r\n cb.id = \"cb\" + item.id;\r\n cb.checked = this.isItemSelected(item);\r\n cb.defaultChecked = this.isItemSelected(item);\r\n itemDiv.appendChild(cb);\r\n item.itemCheckbox = cb;\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n cb.style.margin = \"4px 10px 0 0\";\r\n cb.style.verticalAlign = \"top\";\r\n }\r\n }\r\n\r\n const itemText = document.createElement('span');\r\n itemText.innerHTML = this.highlightText(item.text, levelFilterText);\r\n itemDiv.appendChild(itemText);\r\n\r\n if (item.items && item.items.length > 0) {\r\n itemDiv.classList.add(`${this.cssPrefix}-itemDiv-filter-hasChildren`);\r\n }\r\n else {\r\n this.filteredItems.push(item);\r\n\r\n const itemClickHandler = (event: MouseEvent) => {\r\n if (multiselect) {\r\n if (!item.items || event.target == item.itemCheckbox) {\r\n const itemSelected = this.isItemSelected(item);\r\n this.setItemSelected(item, !itemSelected);\r\n item.itemCheckbox.checked = !itemSelected;\r\n this.parentMenu.refreshCheckboxes();\r\n }\r\n else {\r\n this.activateItem(item);\r\n }\r\n }\r\n else {\r\n this.activateItem(item);\r\n this.submit(item);\r\n }\r\n return false;\r\n };\r\n \r\n itemDiv.removeEventListener(\"click\", itemClickHandler);\r\n itemDiv.addEventListener('click', itemClickHandler);\r\n \r\n itemDiv.addEventListener('mouseenter', (ev) => {;\r\n this.parentMenu.isCursorInside = true;\r\n if (activateOnMouseOver) {\r\n this.activateItem(item);\r\n }\r\n });\r\n \r\n itemDiv.addEventListener('mouseleave', (ev) => {\r\n this.parentMenu.isCursorInside = false;\r\n setTimeout(() => {\r\n if (!this.parentMenu.isCursorInside) {\r\n if (activateOnMouseOver && item == this.activeItem && !item.subLevel) {\r\n this.deactivateItem(item);\r\n }\r\n }\r\n }, 200);\r\n });\r\n }\r\n }\r\n\r\n if (item.items) {\r\n for(let i = 0; i < item.items.length; i++) {\r\n this.renderItemWithFilter(item.items[i], filterTexts, level + 1);\r\n }\r\n }\r\n\r\n if (this.itemRenderedCallback) {\r\n this.itemRenderedCallback(this.menuId, itemDiv);\r\n }\r\n }\r\n\r\n private highlightText(content: string, text: string): string {\r\n if (text && text.length > 0) {\r\n const lowerText = text.toLowerCase();\r\n const lowerContent = content.toLowerCase();\r\n const insertValue1 = `<span class='eqjs-menu-itemDiv-highlight'>`;\r\n const insertValue2 = `</span>`;\r\n const startIndex = lowerContent.indexOf(lowerText);\r\n if (startIndex >= 0) {\r\n let pos = 0;\r\n const value = content;\r\n const indexInMas = [];\r\n while (true) {\r\n const index = lowerContent.indexOf(lowerText, pos);\r\n if (index >= 0) {\r\n indexInMas.push(index);\r\n pos = index + text.length;\r\n } else {\r\n pos++;\r\n }\r\n if (pos >= value.length - 1) {\r\n break;\r\n }\r\n }\r\n if (indexInMas.length > 0) {\r\n content = '';\r\n for (let i = 0; i < indexInMas.length; i++) {\r\n if (i === 0) {\r\n content += value.substring(0, indexInMas[i]);\r\n }\r\n \r\n content += insertValue1 + value.substring(indexInMas[i], indexInMas[i] + text.length) + insertValue2;\r\n \r\n if (i < indexInMas.length - 1) {\r\n content += value.substring(indexInMas[i] + text.length, indexInMas[i + 1]);\r\n } else {\r\n content += value.substring(indexInMas[i] + text.length);\r\n }\r\n \r\n }\r\n }\r\n }\r\n \r\n }\r\n\r\n return content;\r\n }\r\n\r\n\r\n private renderItems(filter?: string) {\r\n if (!filter && !browserUtils.isMobileMode()) {\r\n this.renderItemsWithoutFilter();\r\n } \r\n else {\r\n filter = filter || '';\r\n this.renderItemsWithFilter(filter.toLowerCase());\r\n }\r\n \r\n }\r\n\r\n public activateItem(menuItem, openSubLevel = true) {\r\n if (this.activeItem != null) {\r\n this.deactivateItem(this.activeItem);\r\n }\r\n this.activeItem = menuItem;\r\n\r\n const rowElement = menuItem.itemDiv as HTMLDivElement;\r\n rowElement.classList.add('active');\r\n\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n const itemBgColor = this.parentMenu.style.colors.bgON;\r\n const itemFgColor = this.parentMenu.style.colors.fgON;\r\n const itemOverBgColor = this.parentMenu.style.colors.bgOVER;\r\n const itemOverFgColor = this.parentMenu.style.colors.fgOVER || \"\";\r\n\r\n const itemClass = this.parentMenu.style.itemClass || \"\";\r\n const itemClassOver = this.parentMenu.style.itemClassOver || \"\";\r\n\r\n if (itemClassOver != \"\") {\r\n rowElement.style.backgroundColor = \"\";\r\n rowElement.style.color = \"\";\r\n }\r\n else {\r\n rowElement.style.backgroundColor = itemOverBgColor;\r\n rowElement.style.color = itemOverFgColor;\r\n }\r\n }\r\n\r\n if (menuItem.items && !this.isFilteringMode && openSubLevel) {\r\n this.showSubLevel(menuItem);\r\n }\r\n }\r\n\r\n public deactivateItem(menuItem) {\r\n if (!menuItem) return; \r\n const rowElement = menuItem.itemDiv as HTMLElement;\r\n\r\n rowElement.classList.remove('active');\r\n\r\n if (this.parentMenu.options.useDefaultStyles) {\r\n const itemBgColor = this.parentMenu.style.colors.bgON;\r\n const itemFgColor = this.parentMenu.style.colors.fgON;\r\n\r\n const itemClass = this.parentMenu.style.itemClass || \"\";\r\n if (itemClass != \"\") {\r\n rowElement.style.backgroundColor = \"\";\r\n rowElement.style.color = \"\";\r\n }\r\n else {\r\n rowElement.style.backgroundColor = itemBgColor;\r\n rowElement.style.color = itemFgColor;\r\n }\r\n }\r\n\r\n if (menuItem.subLevel) {\r\n menuItem.subLevel.hide();\r\n }\r\n\r\n this.activeItem = null;\r\n }\r\n\r\n public showSubLevel(menuItem: MenuItem) {\r\n if (!menuItem.subLevel) {\r\n let levelId = '';\r\n if (this.menuId) {\r\n levelId = this.menuId + \"-\" + menuItem.id;\r\n }\r\n\r\n menuItem.subLevel = new MenuLevel({\r\n showSelected: this.showSelected,\r\n menu: this.parentMenu,\r\n parent: this,\r\n container: this.parentElement,\r\n items: menuItem.items,\r\n levelIndex: this.levelIndex + 1,\r\n domWriteItemsId: this.domWriteItemsId,\r\n menuId: levelId,\r\n itemRenderedCallback: this.itemRenderedCallback\r\n });\r\n }\r\n\r\n const pos = getElementAbsolutePos(menuItem.itemDiv);\r\n const scroll = getScrollPos();\r\n const winSize = getWinSize();\r\n\r\n //show menu to the side that have more space available\r\n const leftSpace = pos.x - scroll.left; \r\n const rightSpace = winSize.width - leftSpace - menuItem.itemDiv.offsetWidth;\r\n \r\n pos.x += (menuItem.itemDiv.offsetParent as HTMLElement).offsetWidth;\r\n pos.y += 1;\r\n menuItem.subLevel.showAt(pos.x, pos.y, true, true);\r\n\r\n menuItem.subLevel.levelDiv.style.width = '';\r\n menuItem.subLevel.levelDiv.style.right = '';\r\n if ((rightSpace >= menuItem.subLevel.levelDiv.offsetWidth) || (rightSpace >= leftSpace)) { //show level to the right\r\n if (rightSpace < menuItem.subLevel.levelDiv.offsetWidth) {\r\n menuItem.subLevel.levelDiv.style.right = -scroll.left + 'px'; \r\n }\r\n }\r\n else { //show level to the left\r\n if (leftSpace < menuItem.subLevel.levelDiv.offsetWidth) {\r\n menuItem.subLevel.levelDiv.style.left = scroll.left + 4 + 'px';\r\n }\r\n else {\r\n menuItem.subLevel.levelDiv.style.left = '';\r\n }\r\n menuItem.subLevel.levelDiv.style.right = getViewportSize().width - pos.x + menuItem.itemDiv.offsetWidth - 6 + 'px';\r\n }\r\n\r\n menuItem.subLevel.levelDiv.style.visibility = 'visible';\r\n menuItem.subLevel.focus();\r\n }\r\n\r\n public adjustTopPos(top: number) {\r\n const winSize = getWinSize();\r\n const levelBottom = top - getScrollPos().top + this.levelDiv.offsetHeight;\r\n\r\n let res = top;\r\n if (levelBottom > winSize.height - 5) {\r\n res -= levelBottom - winSize.height + 5;\r\n if (res < getScrollPos().top) { \r\n res = getScrollPos().top + 10; \r\n }\r\n }\r\n return res;\r\n }\r\n\r\n public showAt(x: number, y: number, adjustTopPos: boolean, hidden: boolean) {\r\n if (!this.items) {\r\n return;\r\n }\r\n\r\n this.initLevelDiv();\r\n\r\n //crocodile\r\n this.turnCheckboxes(this.items);\r\n\r\n this.renderItems();\r\n\r\n const levelStyle = this.levelDiv.style;\r\n if (hidden) {\r\n this.levelDiv.style.visibility = 'hidden'; \r\n }\r\n\r\n levelStyle.display = 'block';\r\n \r\n levelStyle.left = x + 'px';\r\n levelStyle.top = y + 'px';\r\n\r\n\r\n this.scrollDiv.style.width = \"auto\";\r\n this.scrollDiv.style.height = \"auto\";\r\n\r\n //adjusting level top position\r\n if (adjustTopPos) {\r\n y = this.adjustTopPos(y);\r\n levelStyle.top = y + 'px';\r\n }\r\n\r\n //setting minimal level width if it is defined\r\n let minItemWidth = this.parentMenu.minItemWidth;\r\n if (minItemWidth > 0 && this.scrollDiv.offsetWidth < minItemWidth) {\r\n for (let i = 0; i < this.items.length; i++) {\r\n this.items[i].itemDiv.style.width = minItemWidth + \"px\";\r\n }\r\n }\r\n\r\n let maxItemWidth = this.parentMenu.maxItemWidth;\r\n if (maxItemWidth > 0 && this.scrollDiv.offsetWidth > maxItemWidth) {\r\n for (let i = 0; i < this.items.length; i++) {\r\n this.items[i].itemDiv.style.width = maxItemWidth + \"px\";\r\n this.items[i].itemDiv.style.overflowX = \"hidden\";\r\n }\r\n }\r\n\r\n const winSize = getWinSize();\r\n\r\n //adjustinng maximum height of the menu level if it does not fit to browser window\r\n let maxHeight = winSize.height - (y - getScrollPos().top) - 15; //document.documentElement.scrollTop\r\n\r\n if (this.parentMenu.maxHeight > 0 && maxHeight > this.parentMenu.maxHeight) {\r\n maxHeight = this.parentMenu.maxHeight;\r\n }\r\n\r\n if (this._applyItem != null && this._applyItem.itemDiv != null) {\r\n maxHeight -= this._applyItem.itemDiv.offsetHeight + 5;\r\n }\r\n\r\n if (this.searchDiv != null) {\r\n maxHeight -= this.searchDiv.offsetHeight;\r\n }\r\n\r\n if (this.closeDiv != null) {\r\n maxHeight -= this.closeDiv.offsetHeight;\r\n }\r\n\r\n if (this.levelDiv.offsetHeight > maxHeight) {\r\n let newHeight = maxHeight;\r\n if (newHeight < 50) { newHeight = 50; }\r\n\r\n this.scrollDiv.style.height = newHeight + \"px\";\r\n }\r\n else {\r\n this.scrollDiv.style.height = \"auto\";\r\n }\r\n \r\n this.activeItem = null;\r\n }\r\n\r\n public focus() {\r\n window.setTimeout(() => {\r\n this.scrollDiv.focus();\r\n if (this.searchBox != null) {\r\n if (this.parentMenu.options.searchBoxAutoFocus) {\r\n this.searchBox.focus();\r\n }\r\n this.searchBox.value = \"\";\r\n }\r\n }, 100);\r\n }\r\n\r\n public hide() {\r\n if (this.activeItem !== null) {\r\n if (this.activeItem.subLevel) {\r\n this.activeItem.subLevel.hide();\r\n }\r\n }\r\n\r\n if (this.levelDiv) {\r\n var levelStyle = this.levelDiv.style;\r\n levelStyle.display = 'none';\r\n\r\n if (this.initialized) {\r\n this.parentElement.removeChild(this.levelDiv);\r\n this.initialized = false;\r\n }\r\n }\r\n }\r\n\r\n public initLevelDiv() {\r\n if (!this.initialized) {\r\n this.parentElement.appendChild(this.levelDiv);\r\n domel(this.levelDiv)\r\n .addClass(`${this.cssPrefix}-levelDiv`)\r\n .addClass(browserUtils.getMobileCssClass());\r\n this.initialized = true;\r\n }\r\n }\r\n\r\n public submit(menuItem: MenuItem) {\r\n if (menuItem != null) {\r\n if (!menuItem.items) {\r\n this.parentMenu.hideMenu();\r\n let selectedItems = [];\r\n if (menuItem == this._applyItem) {\r\n this.submitItems(this.items, selectedItems);\r\n }\r\n\r\n this.parentMenu.submitMenu(menuItem, selectedItems);\r\n }\r\n }\r\n }\r\n\r\n public remove() {\r\n //remove old level elements\r\n for (let i = 0; i < this.items.length; i++) {\r\n let item = this.items[i];\r\n if (item.subLevel) {\r\n item.subLevel.remove();\r\n }\r\n }\r\n\r\n if (this.levelDiv) {\r\n this.levelDiv.innerHTML = \"\";\r\n const parentNode = this.levelDiv.parentNode;\r\n if (parentNode != null) {\r\n parentNode.removeChild(this.levelDiv);\r\n }\r\n }\r\n\r\n this.levelDiv = null;\r\n }\r\n\r\n public update(newItems: MenuItem[]) {\r\n this.remove();\r\n\r\n //create new level\r\n this.items = newItems;\r\n this.activeItem = null;\r\n this.selectedItem = null;\r\n this._applyItem.itemDiv = null;\r\n this.initialized = false;\r\n this.updated++;\r\n\r\n this.renderContent();\r\n }\r\n\r\n public refreshCheckboxes() {\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n if (item.itemCheckbox) {\r\n item.itemCheckbox.checked = this.isItemSelected(item);\r\n }\r\n\r\n if (item.subLevel) {\r\n item.subLevel.refreshCheckboxes();\r\n }\r\n }\r\n }\r\n\r\n public refreshItems() {\r\n for (let i = 0; i < this.items.length; i++) {\r\n const item = this.items[i];\r\n if (item.itemDiv) {\r\n if (item.hidden) {\r\n item.itemDiv.style.display = \"none\";\r\n }\r\n else {\r\n item.itemDiv.style.display = \"block\";\r\n }\r\n }\r\n\r\n if (item.subLevel) {\r\n item.subLevel.refreshItems();\r\n }\r\n }\r\n }\r\n\r\n public findItem(searchedText: string) {\r\n const txt = searchedText.toLowerCase();\r\n\r\n for (let i = 0; i < this.items.length; i++) {\r\n const item = this.items[i];\r\n if (item.text.toLowerCase().indexOf(txt) == 0) {\r\n return item;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n}\r\n\r\nexport interface MenuItem {\r\n id: string,\r\n text: string,\r\n selected?: boolean;\r\n data?: any,\r\n items?: MenuItem[]\r\n hidden?: boolean,\r\n subLevel?: MenuLevel,\r\n itemDiv?: HTMLElement,\r\n itemCheckbox?: HTMLInputElement,\r\n extra?: any\r\n}\r\n\r\nexport interface PopupMenuOptions {\r\n activateOnMouseOver?: boolean;\r\n searchBoxAutoFocus?: boolean;\r\n searchBoxAlwaysShown?: boolean;\r\n useDefaultStyles?: boolean;\r\n multiselect?: boolean;\r\n isSubQuery?: boolean;\r\n buttons?: {\r\n submit?: string;\r\n cancel?: string;\r\n },\r\n submitOnBlur?: boolean;\r\n hideButtons?: boolean;\r\n items?: MenuItem[];\r\n container?: HTMLElement;\r\n domWriteItemsId?: boolean;\r\n id?: string;\r\n itemRenderedCallback?: (item: any, itemDiv: HTMLDivElement) => void;\r\n itemFilterCallback?: (item: any) => boolean;\r\n itemSelectedCallback?: (item: any, selectedItems: any[]) => void;\r\n menuClosedCallback?: () => void;\r\n zIndex?: number;\r\n onMenuItemSelected?: boolean;\r\n selectedIds?: string[] | string;\r\n anchor?: HTMLElement;\r\n adjustHeight?: boolean;\r\n \r\n /** \r\n * If the number of items in drop down menu exceeds this number then a search box will be displayed. \r\n * Set this option to 0 if want to show the search box in any case \r\n */\r\n showSearchBoxAfter?: number;\r\n showSelected?: boolean;\r\n\r\n /** If true - the menu will show the ID for each item (e.g. {itemId}:{itemText}) */\r\n showItemIds?: boolean\r\n}\r\n\r\nexport class PopupMenu {\r\n private static lastMenuID = 0;\r\n\r\n public maxHeight: number;\r\n public minItemWidth: number;\r\n public maxItemWidth: number;\r\n public isCursorInside: boolean = false;\r\n public style: any;\r\n public zIndex: string;\r\n\r\n private itemFilterCallback: (item: any) => boolean;\r\n private itemSelectedCallback: (item: any, selectedItems: any[]) => void;\r\n private menuClosedCallback: () => void;\r\n\r\n private rootLevel: MenuLevel;\r\n\r\n private menuId: number;\r\n\r\n private mouseIsOverBlock: boolean = false;\r\n private mouseIsOverLink: boolean = false;\r\n private toId: string = null;\r\n\r\n private commandTemplate: string;\r\n private args: any[];\r\n\r\n private globalMouseDownHandler: (e: MouseEvent) => void;\r\n private menuKeyUpHandler: (e: KeyboardEvent) => void;\r\n\r\n private active: boolean = false;\r\n\r\n private ancorFocused: HTMLElement = null;\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-menu';\r\n }\r\n\r\n public options: PopupMenuOptions = {\r\n items: [],\r\n buttons: {\r\n submit: i18n.getText('ButtonApply'),\r\n cancel: i18n.getText('ButtonCancel')\r\n },\r\n itemFilterCallback : null,\r\n useDefaultStyles: false,\r\n multiselect: false,\r\n adjustHeight: true,\r\n showSearchBoxAfter: 30,\r\n activateOnMouseOver: true,\r\n container: document.body,\r\n domWriteItemsId: false,\r\n itemRenderedCallback: null,\r\n showItemIds: false\r\n };\r\n\r\n constructor(options?: PopupMenuOptions) {\r\n if (options) {\r\n dataUtils.assignDeep(this.options, options);\r\n }\r\n\r\n if (this.options.hideButtons) {\r\n this.options.submitOnBlur = true;\r\n }\r\n\r\n this.menuId = PopupMenu.lastMenuID++;\r\n\r\n this.updateProps();\r\n\r\n this.rootLevel = new MenuLevel({\r\n menu: this,\r\n items: this.options.items,\r\n levelIndex: 0,\r\n container: this.options.container,\r\n domWriteItemsId: this.options.domWriteItemsId,\r\n menuId: this.options.id,\r\n itemRenderedCallback: this.options.itemRenderedCallback,\r\n showSelected: this.options.showSelected,\r\n });\r\n\r\n this.rootLevel.levelDiv.classList.add(`${this.cssPrefix}-rootLevel`);\r\n if (this.options.zIndex)\r\n this.rootLevel.levelDiv.style.zIndex = `${this.options.zIndex}`;\r\n\r\n this.menuKeyUpHandler = (e: KeyboardEvent) => {\r\n if (e.which == 27) {\r\n this.hideMenu();\r\n e.stopImmediatePropagation();\r\n }\r\n };\r\n\r\n this.globalMouseDownHandler = (e: MouseEvent) => {\r\n if (!this.active) return true;\r\n let event = window.event || e;\r\n let o: any = event.srcElement || event.target;\r\n let isOutside = true;\r\n\r\n while (o) {\r\n if (o.tagName && o.tagName.toLowerCase() == 'div') {\r\n\r\n // it is added in renderContent of MenuLevel class\r\n if (o.menuLevel) {\r\n if (o.menuLevel.parentMenu == this) {\r\n isOutside = false;\r\n break;\r\n }\r\n }\r\n }\r\n o = o.parentNode || o.parentElement;\r\n }\r\n\r\n if (isOutside) {\r\n if (this.options.submitOnBlur) {\r\n this.rootLevel.submit(this.rootLevel.applyItem);\r\n }\r\n this.hideMenu();\r\n }\r\n \r\n return true;\r\n };\r\n\r\n\r\n this.render();\r\n }\r\n\r\n public getItems() : MenuItem[] {\r\n return this.rootLevel.getItems();\r\n }\r\n\r\n private updateProps() {\r\n this.style = {};\r\n this.style.colors = { border: \"#666666\", shadow: \"#888888\", bgON: \"white\", fgON: \"black\", bgOVER: \"#B6BDD2\", fgOVER: \"black\" };\r\n this.style.itemStyle = { fontSize: \"14px\" };\r\n\r\n this.minItemWidth = 0;\r\n this.maxItemWidth = 0;\r\n this.maxHeight = 0;\r\n this.zIndex = `${this.options.zIndex}`;\r\n\r\n this.commandTemplate = \"\";\r\n this.args = [];\r\n this.active = false;\r\n }\r\n\r\n private render() {\r\n\r\n }\r\n\r\n private clearItemsMenuProps(items: MenuItem[]) {\r\n if (!items) return;\r\n\r\n for (var i = 0; i < items.length; i++) {\r\n this.clearItemMenuProps(items[i]);\r\n }\r\n }\r\n\r\n private clearItemMenuProps(item) {\r\n //don't clear properties they belong this menu\r\n if (item.subLevel && item.subLevel.parentMenu == this) return;\r\n\r\n if (item.subLevel) {\r\n item.subLevel.remove();\r\n item.subLevel = null;\r\n }\r\n\r\n if (item.itemDiv) {\r\n item.itemDiv = null;\r\n }\r\n\r\n if (item.items) {\r\n this.clearItemsMenuProps(item.items);\r\n } \r\n }\r\n\r\n private setSelectedItems(items, selectedIds) {\r\n const itemsLength = items ? items.length : 0;\r\n for (let i = 0; i < itemsLength; i++) {\r\n const item = items[i];\r\n if (item.items) {\r\n this.setSelectedItems(item.items, selectedIds);\r\n }\r\n else {\r\n item.selected = selectedIds.indexOf(item.id) >= 0;\r\n }\r\n }\r\n }\r\n\r\n public getRootLevel(): MenuLevel {\r\n return this.rootLevel;\r\n }\r\n\r\n public getItemFilterCallback(): (item: MenuItem) => boolean {\r\n return this.itemFilterCallback;\r\n }\r\n \r\n public showMenu(options: PopupMenuOptions) {\r\n this.ancorFocused = options.anchor == document.activeElement ? options.anchor : null;\r\n\r\n this.clearItemsMenuProps(this.options.items);\r\n\r\n this.itemSelectedCallback = options.itemSelectedCallback || null;\r\n this.menuClosedCallback = options.menuClosedCallback || null;\r\n this.itemFilterCallback = options.itemFilterCallback || null;\r\n\r\n\r\n if (options.items) {\r\n this.options.items = options.items;\r\n this.rootLevel.setItems(options.items);\r\n }\r\n\r\n if (options.onMenuItemSelected) {\r\n this.options.onMenuItemSelected = options.onMenuItemSelected;\r\n }\r\n\r\n let selectedIds = options.selectedIds || null;\r\n if (selectedIds) {\r\n if (typeof selectedIds === \"string\") {\r\n selectedIds = selectedIds.split(\",\");\r\n }\r\n }\r\n else {\r\n selectedIds = [];\r\n }\r\n\r\n this.active = true;\r\n\r\n this.setSelectedItems(this.options.items, selectedIds);\r\n\r\n if (browserUtils.isMobileMode()) {\r\n this.rootLevel.showAt(0, 0, true, true);\r\n this.rootLevel.levelDiv.style.top = '0px';\r\n this.rootLevel.levelDiv.style.bottom = '0px';\r\n this.rootLevel.levelDiv.style.right = '0px';\r\n this.rootLevel.levelDiv.style.position = 'fixed';\r\n this.rootLevel.levelDiv.style.fontSize = '20px';\r\n } \r\n else {\r\n const anchor = options.anchor || document.documentElement;\r\n\r\n const srcPos = getElementAbsolutePos(anchor);\r\n \r\n const anchorHeight = anchor.offsetHeight;\r\n const anchorWidth = anchor.offsetWidth;\r\n \r\n const pos = {\r\n x: srcPos.x,\r\n y: srcPos.y + anchorHeight + 2\r\n };\r\n const scroll = getScrollPos();\r\n const winSize = getWinSize();\r\n \r\n //show menu to the side that have more space available\r\n const leftSpace = pos.x + anchorWidth - scroll.left;\r\n const rightSpace = winSize.width - leftSpace + anchorWidth;\r\n \r\n pos.x += 2;\r\n \r\n this.rootLevel.showAt(pos.x, pos.y, true, true);\r\n\r\n this.rootLevel.levelDiv.style.width = '';\r\n this.rootLevel.levelDiv.style.right = '';\r\n\r\n if (!this.rootLevel.levelDiv.style.zIndex) {\r\n // z-index is at least 10000 and more if anchor has bigger\r\n this.rootLevel.levelDiv.style.zIndex = `${Math.max(10000, findHighestZIndex(anchor) + 1)}`;\r\n }\r\n \r\n if ((rightSpace >= this.rootLevel.levelDiv.offsetWidth) || (rightSpace >= leftSpace)) {\r\n //show level to the right\r\n if (rightSpace < this.rootLevel.levelDiv.offsetWidth) {\r\n this.rootLevel.levelDiv.style.right = -scroll.left + 'px';\r\n }\r\n }\r\n else { \r\n //show level to the left\r\n if (leftSpace < this.rootLevel.levelDiv.offsetWidth) {\r\n this.rootLevel.levelDiv.style.left = scroll.left + 4 + 'px';\r\n }\r\n else {\r\n this.rootLevel.levelDiv.style.left = '';\r\n }\r\n this.rootLevel.levelDiv.style.right = getViewportSize().width - pos.x - anchorWidth + 'px';\r\n }\r\n\r\n this.rootLevel.levelDiv.style.fontSize = '14px';\r\n }\r\n \r\n\r\n this.rootLevel.levelDiv.style.visibility = 'visible';\r\n this.rootLevel.focus();\r\n\r\n document.addEventListener('keyup', this.menuKeyUpHandler);\r\n document.addEventListener('mousedown', this.globalMouseDownHandler, true);\r\n }\r\n\r\n public hideMenu() {\r\n document.removeEventListener('mousedown', this.globalMouseDownHandler, true);\r\n document.removeEventListener('keyup', this.menuKeyUpHandler);\r\n this.rootLevel.hide();\r\n \r\n if (this.ancorFocused) {\r\n this.ancorFocused.focus();\r\n }\r\n\r\n if (this.menuClosedCallback) {\r\n this.menuClosedCallback();\r\n }\r\n }\r\n\r\n public submitMenu(menuItem, selectedItems) {\r\n if (this.itemSelectedCallback) {\r\n this.itemSelectedCallback(menuItem, selectedItems);\r\n }\r\n }\r\n\r\n public knockMenuStyle (menu: HTMLElement) {\r\n menu.removeAttribute('style');\r\n const ul = menu.querySelectorAll('ul').item(0);\r\n var hasUlStyle = ul && ul.style ? true : false;\r\n\r\n if (hasUlStyle !== false) {\r\n ul.setAttribute('style', '');\r\n }\r\n }\r\n\r\n public refreshItems() {\r\n this.rootLevel.refreshItems();\r\n }\r\n\r\n public refreshCheckboxes() {\r\n this.rootLevel.refreshCheckboxes();\r\n }\r\n}","\r\nexport class DisplayFormatParser { \r\n private formatStr = '';\r\n private pos = 0;\r\n private token = 'text';\r\n private tokenText = '';\r\n\r\n public start(s: string) {\r\n this.formatStr = s;\r\n this.pos = 0;\r\n this.tokenText = '';\r\n }\r\n\r\n private skipSpaces() {\r\n while (this.pos < this.formatStr.length && this.formatStr.charAt(this.pos) === ' ') this.pos++;\r\n }\r\n\r\n public getToken() {\r\n return this.token;\r\n }\r\n\r\n public getTokenText() {\r\n return this.tokenText;\r\n }\r\n\r\n public next() {\r\n this.skipSpaces();\r\n if (this.pos >= this.formatStr.length) return false;\r\n\r\n let npos = 0;\r\n if (this.formatStr.charAt(this.pos) === '{') {\r\n npos = this.formatStr.indexOf('}', this.pos);\r\n if (npos < 0) return false;\r\n this.tokenText = this.formatStr.substring(this.pos, npos + 1);\r\n if (this.tokenText.indexOf('{expr') === 0 || this.tokenText.indexOf('{attr') === 0) {\r\n this.token = 'expression';\r\n }\r\n this.pos = npos + 1;\r\n }\r\n else if (this.formatStr.charAt(this.pos) === '[' && this.pos < this.formatStr.length - 1 && this.formatStr.charAt(this.pos + 1) === '[') {\r\n this.pos += 2;\r\n npos = this.formatStr.indexOf(']]', this.pos);\r\n this.token = 'function';\r\n this.tokenText = this.formatStr.substring(this.pos, npos);\r\n this.pos = npos + 2;\r\n }\r\n else {\r\n this.token = 'text';\r\n let npos1 = this.formatStr.indexOf('{', this.pos);\r\n if (npos1 < 0) npos1 = this.formatStr.length;\r\n let npos2 = this.formatStr.indexOf('[[', this.pos);\r\n if (npos2 < 0) npos2 = this.formatStr.length;\r\n npos = Math.min(npos1, npos2);\r\n this.tokenText = this.formatStr.substring(this.pos, npos).trim();\r\n this.pos = npos;\r\n }\r\n return true;\r\n }\r\n}","import { \r\n SortDirection, \r\n QueryColumn, QueryChangeAction, \r\n i18n\r\n} from '@easyquery/core';\r\n\r\nimport { \r\n eqDragManager, DropEffect, \r\n createBrowserEvent, domel \r\n} from '@easydata/ui';\r\n\r\nimport { eqCssPrefix } from '../../../utils/utils';\r\nimport { MenuItem, PopupMenu } from '../../../utils/popup_menu';\r\nimport { ColumnsPanel } from '../../columns_panel';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nimport { safeFocus } from '../../../utils/utils';\r\n\r\nexport enum ColumnAction {\r\n Enable = 0,\r\n Delete = 1,\r\n Hidden = 2,\r\n SortingNone = 3,\r\n SortingAsc = 4,\r\n SortingDesc = 5,\r\n MoveTop = 6,\r\n MoveUp = 7,\r\n MoveDown = 8,\r\n MoveBottom = 9,\r\n Menu = 10,\r\n Type = 11,\r\n Format = 12\r\n}\r\n\r\nexport abstract class ColumnRendererCP {\r\n\r\n protected column: QueryColumn;\r\n protected panel: ColumnsPanel;\r\n protected functionMenu: PopupMenu = null;\r\n protected formatsMenu: PopupMenu = null;\r\n protected buttonMenu: PopupMenu = null;\r\n\r\n protected element: HTMLDivElement;\r\n\r\n private sortingButton: HTMLDivElement;\r\n\r\n protected isMouseOverBlock = false;\r\n \r\n protected keepShowingButtons = false;\r\n\r\n constructor(panel: ColumnsPanel, column: QueryColumn, slot?: HTMLDivElement) {\r\n this.panel = panel;\r\n this.column = column;\r\n this.element = slot;\r\n }\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-qc';\r\n }\r\n\r\n protected get columnEnabled(): boolean {\r\n return this.column.enabled;\r\n }\r\n\r\n protected set columnEnabled(value: boolean) {\r\n this.column.enabled = value;\r\n }\r\n\r\n public render(): HTMLDivElement { \r\n if (this.getButtonsToShow().indexOf(\"sorting\") >= 0 && this.columnEnabled) {\r\n this.sortingButton = this.renderSoringButton(this.column.sorting);\r\n if (this.column.sorting !== SortDirection.None) {\r\n this.sortingButton.style.display = 'block' \r\n }\r\n }\r\n \r\n const builder = domel('div');\r\n builder.data('id', this.column.id);\r\n\r\n if (this.element) {\r\n this.element.parentNode\r\n .replaceChild(builder.toDOM(), this.element);\r\n }\r\n \r\n this.element = builder.toDOM();\r\n \r\n if (this.panel.options.allowDragDrop && !browserUtils.isMobileMode()) { \r\n eqDragManager.registerDraggableItem({\r\n element: this.element,\r\n scope: \"entityAttrSort\",\r\n data: { column: this.column },\r\n beforeDragStart: () => {\r\n this.hideButtons();\r\n },\r\n renderer: (dragImage) => {\r\n dragImage.innerHTML = '';\r\n\r\n const attrLabel = document.createElement('span');\r\n attrLabel.innerText = this.column.caption;\r\n dragImage.classList.add('eqjs-sortable-helper');\r\n \r\n dragImage.appendChild(attrLabel);\r\n },\r\n onDragStart: (ev) => {\r\n this.element.style.display = 'none';\r\n ev.dropEffect = DropEffect.Allow;\r\n },\r\n onDragEnd: (ev) => {\r\n if (!ev.data.finishedSuccessfully) {\r\n this.element.style.removeProperty('display');\r\n } \r\n }\r\n });\r\n }\r\n\r\n if (this.isEditable()) {\r\n this.createFunctionMenu();\r\n this.createFormatsMenu();\r\n }\r\n this.createButtonMenu();\r\n\r\n builder\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.renderCheckbox())\r\n //start sort button\r\n .addChild('div', builder => builder\r\n .addClass(`${eqCssPrefix}-button-placeholder`, `${this.cssPrefix}-button-placeholder`, `${this.cssPrefix}-colelement`, \r\n `${this.cssPrefix}-sortbutton-placeholder`)\r\n .addChildElement(this.sortingButton)\r\n )\r\n // end sort button\r\n\r\n \r\n .addChildElement(this.renderExpressionBlock())\r\n\r\n if (this.panel.options.showColumnTitles !== false && !browserUtils.isMobileMode()) {\r\n builder\r\n .addChildElement(this.renderCaptionBlock())\r\n }\r\n\r\n builder\r\n //start buttons\r\n .addChild('div', builder => {\r\n builder\r\n .addClass(`${eqCssPrefix}-column-buttonsBlock`, `${this.cssPrefix}-buttonsBlock`)\r\n .addClass(browserUtils.getMobileCssClass());\r\n\r\n\r\n //start enable button\r\n if (this.getButtonsToShow().indexOf(\"enable\") >= 0 && !this.column.isReadOnly()) {\r\n builder.addChildElement(this.renderEnabledButton())\r\n }\r\n //end enable button\r\n\r\n //start aggr func button\r\n if (this.getButtonsToShow().indexOf(\"type\") >= 0 && this.columnEnabled) {\r\n builder.addChildElement(this.renderColumnTypeButton())\r\n }\r\n //end aggr func button\r\n\r\n //start format selector button\r\n if (this.getButtonsToShow().indexOf(\"format\") >= 0 && this.columnEnabled ) {\r\n builder.addChildElement(this.renderColumnFormatButton())\r\n }\r\n //end format selector button\r\n\r\n //start delete button\r\n if (this.getButtonsToShow().indexOf(\"delete\") >= 0 && !this.column.isReadOnly()) {\r\n builder.addChildElement(this.renderDeleteButton())\r\n }\r\n //end delete button\r\n\r\n //start menu button\r\n if (this.getButtonsToShow().indexOf(\"menu\") >= 0 && !this.column.isReadOnly()) {\r\n builder.addChildElement(this.renderMenuButton())\r\n }\r\n //end menu button\r\n })\r\n //end buttons \r\n\r\n if (!browserUtils.isMobileMode()) {\r\n //start event listeners\r\n builder\r\n .on('mouseenter', this.onMouseEnter.bind(this))\r\n .on('mouseleave', this.onMouseLeave.bind(this))\r\n //end event listeners\r\n }\r\n\r\n if (this.panel.options.accentActiveColumn || browserUtils.isMobileMode()) {\r\n builder\r\n .on('click', this.onMouseClick.bind(this)); //touchstart\r\n }\r\n\r\n if (this.panel.options.alwaysShowButtons) {\r\n this.showButtons();\r\n }\r\n\r\n \r\n return this.element;\r\n }\r\n\r\n private onMouseClick(ev: Event) {\r\n ev.stopPropagation();\r\n this.panel.toggleColumnPicked(this.column);\r\n this.adjustButtonsVisibility();\r\n if (!browserUtils.isMobileMode()) {\r\n this.element.dispatchEvent(createBrowserEvent(\"mouseenter\"));\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public fireColumnChanged() {\r\n this.column.fireChangedEvent();\r\n }\r\n\r\n public refresh() {\r\n this.render();\r\n }\r\n\r\n protected abstract renderExpressionBlock(): HTMLDivElement;\r\n\r\n protected renderCaptionBlock(): HTMLDivElement {\r\n const builder = domel('div')\r\n .addClass(`${this.cssPrefix}-colelement`, `${this.cssPrefix}-captionelement`)\r\n .addClass(browserUtils.getMobileCssClass());\r\n\r\n if (this.isEditable()) {\r\n builder\r\n .addChild('a', builder => builder\r\n .attr('href', 'javascript:void(0)')\r\n .title(this.column.caption)\r\n .text(this.column.caption)\r\n .on('click', (ev) => { //touchstart \r\n ev.stopPropagation();\r\n\r\n const element = ev.target as HTMLElement;\r\n const inputEl = element.parentElement.querySelector('input') as HTMLInputElement;\r\n if (inputEl) {\r\n element.style.display = 'none';\r\n inputEl.style.removeProperty('display');\r\n inputEl.style.minWidth = `${element.clientWidth}`;\r\n inputEl.focus();\r\n this.element.setAttribute(eqDragManager.DRAG_DISABLED_ATTR, '');\r\n }\r\n\r\n return false;\r\n }) //TO DO:add localization and input field\r\n )\r\n .addChild('input', builder => builder\r\n .hide()\r\n .value(this.column.caption)\r\n .on('blur keydown', (ev) => { \r\n \r\n let isEndEvent = false;\r\n let save = true;\r\n\r\n if (ev instanceof KeyboardEvent) {\r\n // Enter\r\n if (ev.keyCode === 13) {\r\n isEndEvent = true;\r\n //ESC\r\n } else if (ev.keyCode === 27) {\r\n isEndEvent = true;\r\n save = false;\r\n }\r\n\r\n } else if (ev instanceof FocusEvent) {\r\n isEndEvent = true;\r\n }\r\n\r\n if (isEndEvent) {\r\n\r\n const inputEl = (ev.target as HTMLInputElement);\r\n const aEl = inputEl.parentElement.querySelector('a') as HTMLAnchorElement;\r\n if (aEl) {\r\n aEl.style.removeProperty('display');\r\n inputEl.style.display = 'none';\r\n }\r\n if (save && this.column.caption !== inputEl.value) {\r\n this.column.caption = inputEl.value;\r\n\r\n this.fireColumnChanged();\r\n } else {\r\n inputEl.value = this.column.caption;\r\n safeFocus(aEl);\r\n }\r\n\r\n this.element.removeAttribute(eqDragManager.DRAG_DISABLED_ATTR);\r\n }\r\n\r\n return true;\r\n \r\n })\r\n );\r\n } else {\r\n builder.addChild('span', b => {\r\n b.text(this.column.caption)\r\n .title(this.column.caption)\r\n });\r\n }\r\n\r\n return builder.toDOM();\r\n }\r\n\r\n protected renderSoringButton(sorting: SortDirection): HTMLDivElement {\r\n const sortButtonCssClass = `${eqCssPrefix}-column-sortbutton`;\r\n let sortButtonDirectionCssClass;\r\n switch (sorting) {\r\n case SortDirection.Ascending:\r\n sortButtonDirectionCssClass = `${sortButtonCssClass}-asc`;\r\n break;\r\n case SortDirection.Descending:\r\n sortButtonDirectionCssClass = `${sortButtonCssClass}-desc`;\r\n break;\r\n default:\r\n sortButtonDirectionCssClass = `${sortButtonCssClass}-none`;\r\n break;\r\n }\r\n\r\n if (!this.isEditable()) {\r\n if (sorting === SortDirection.Ascending \r\n || sorting === SortDirection.Descending)\r\n return domel('div')\r\n .addClass(sortButtonCssClass, `${eqCssPrefix}-button`, \r\n sortButtonDirectionCssClass)\r\n .title(i18n.getText('ButtonSorting'))\r\n .toDOM();\r\n\r\n return null;\r\n }\r\n \r\n return domel('div')\r\n .addClass(sortButtonCssClass, `${eqCssPrefix}-button`, sortButtonDirectionCssClass)\r\n .data(\"btnplaceholder\", \"\")\r\n .title(i18n.getText('ButtonSorting'))\r\n .attr('tabIndex', '0')\r\n .on('click', (ev) => { //touchstart\r\n \r\n ev.stopPropagation();\r\n\r\n this.keepShowingButtons = true;\r\n const menu = this.getUIS() ? this.panel.sortMenu || this.panel.moveMenu : this.panel.moveMenu;\r\n menu.showMenu({\r\n anchor: this.sortingButton,\r\n selectedIds: this.column.isHidden() ? ['IsHidden'] : null,\r\n itemSelectedCallback: (data, items) => {\r\n\r\n let action: ColumnAction;\r\n switch(data.id) {\r\n case \"IsHidden\":\r\n action = ColumnAction.Hidden;\r\n break;\r\n case \"MoveTop\":\r\n action = ColumnAction.MoveTop;\r\n break;\r\n case \"MoveDown\":\r\n action = ColumnAction.MoveDown;\r\n break;\r\n case \"MoveUp\":\r\n action = ColumnAction.MoveUp;\r\n break;\r\n case \"MoveBottom\":\r\n action = ColumnAction.MoveBottom;\r\n break;\r\n case \"None\":\r\n action = ColumnAction.SortingNone;\r\n break;\r\n case \"Ascending\":\r\n action = ColumnAction.SortingAsc;\r\n break;\r\n case \"Descending\":\r\n action = ColumnAction.SortingDesc;\r\n break;\r\n }\r\n \r\n this.buttonMenuHandler(action, null);\r\n },\r\n menuClosedCallback: () => { //called when menu is closed\r\n this.keepShowingButtons = false;\r\n if (!this.isMouseOverBlock) {\r\n this.leaveButtonBlock();\r\n }\r\n }\r\n });\r\n })\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}})\r\n .toDOM();\r\n }\r\n\r\n protected renderCheckbox(): HTMLElement {\r\n if (this.panel.options.showCheckboxes && !this.column.isReadOnly()) {\r\n return domel(\"div\")\r\n .title(i18n.getText('CmdToggleEnable'))\r\n .attr('tabIndex', '0')\r\n .addClass(`${this.cssPrefix}-colelement ${this.cssPrefix}-column-checkbox`)\r\n .addClass(`${ this.columnEnabled ? 'enabled' : '' }`)\r\n .on('click', () => {\r\n this.columnEnabled = !this.columnEnabled;\r\n this.column.fireChangedEvent();\r\n return false;\r\n })\r\n .on('keypress', evt => { if ([13, 32].includes((evt as KeyboardEvent).keyCode) ) { (evt.target as HTMLElement).click()}})\r\n .toDOM();\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n protected renderDeleteButton(): HTMLDivElement {\r\n return domel('div')\r\n .addClass(`${eqCssPrefix}-button-placeholder`,`${this.cssPrefix}-button-placeholder`, \r\n `${this.cssPrefix}-deletebutton-placeholder`)\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild('div', b => b\r\n .addClass(`${eqCssPrefix}-button`, `${eqCssPrefix}-column-button`, \r\n `${eqCssPrefix}-column-button-delete`)\r\n .title(i18n.getText('CmdDelete'))\r\n .attr('tabIndex', '0')\r\n .on('click', ev => this.buttonMenuHandler(ColumnAction.Delete, ev)) //touchstart\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}})\r\n )\r\n .toDOM()\r\n }\r\n\r\n protected renderMenuButton(): HTMLDivElement {\r\n return domel('div')\r\n .addClass(`${eqCssPrefix}-button-placeholder`,`${this.cssPrefix}-button-placeholder`, \r\n `${this.cssPrefix}-menubutton-placeholder`)\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild('div', b => b\r\n .addClass(`${eqCssPrefix}-button`, `${eqCssPrefix}-column-button`, \r\n `${eqCssPrefix}-column-button-menu`)\r\n .title(i18n.getText('ButtonMenu'))\r\n .attr('tabIndex', '0')\r\n .on('click', evt => this.buttonMenuHandler(ColumnAction.Menu, evt)) //touchstart \r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}})\r\n )\r\n .toDOM()\r\n }\r\n\r\n protected getClassesToAdd(): string {\r\n let result = \"\";\r\n\r\n result += this.columnEnabled ? '' : ` ${this.cssPrefix}-disabled`;\r\n if (this.columnEnabled) {\r\n result += this.column.isReadOnly() ? ` ${this.cssPrefix}-readonly` : '';\r\n }\r\n\r\n result += this.column.isHidden() ? ` ${this.cssPrefix}-hidden` : '';\r\n\r\n return result;\r\n }\r\n\r\n protected renderColumnTypeButton(): HTMLDivElement {\r\n return (this.isEditable() && this.panel.options.allowAggrColumns !== false)\r\n ? domel('div')\r\n .addClass(`${eqCssPrefix}-button-placeholder`, `${this.cssPrefix}-button-placeholder`,\r\n `${this.cssPrefix}-typebutton-placeholder`,`${this.cssPrefix}-button-active`)\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild('div', b => b\r\n .addClass(`${eqCssPrefix}-button`, `${eqCssPrefix}-column-button`, \r\n `${eqCssPrefix}-column-button-type`)\r\n .title(i18n.getText('ButtonToAggr'))\r\n .attr('tabIndex', '0')\r\n .on('click', (ev) => { //touchstart \r\n ev.stopPropagation();\r\n\r\n this.keepShowingButtons = true;\r\n this.changeTypeHandler(ev); \r\n }) \r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}})\r\n )\r\n .toDOM() \r\n : null;\r\n }\r\n\r\n\r\n protected renderColumnFormatButton(): HTMLDivElement {\r\n const formatItems = this.getFormatsMenuItems();\r\n return (this.isEditable() && this.panel.options.allowDisplayFormatChange !== false && formatItems.length > 1)\r\n ? domel('div')\r\n .addClass(`${eqCssPrefix}-button-placeholder`, `${this.cssPrefix}-button-placeholder`,\r\n `${this.cssPrefix}-formatbutton-placeholder`, `${this.cssPrefix}-button-active`)\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild('div', b => b\r\n .addClass(`${eqCssPrefix}-button`, `${eqCssPrefix}-column-button`,\r\n `${eqCssPrefix}-column-button-format`)\r\n .title(i18n.getText('ButtonFormat'))\r\n .attr('tabIndex', '0')\r\n .on('click', (ev) => { //touchstart \r\n ev.stopPropagation();\r\n\r\n this.keepShowingButtons = true;\r\n this.changeFormatHandler(ev);\r\n\r\n })\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click() } })\r\n )\r\n .toDOM()\r\n : null;\r\n }\r\n\r\n\r\n protected renderEnabledButton(): HTMLDivElement {\r\n return domel('div')\r\n .addClass(`${eqCssPrefix}-button-placeholder`, `${this.cssPrefix}-button-placeholder`,\r\n `${this.cssPrefix}-enablebutton-placeholder`,`${this.cssPrefix}-button-active`)\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild('div', b => b\r\n .addClass(`${eqCssPrefix}-button`, `${eqCssPrefix}-column-button`, `${eqCssPrefix}-column-button-enable`)\r\n .title(i18n.getText('CmdToggleEnable'))\r\n .addClass(this.columnEnabled ? 'enabled' : '')\r\n .attr('tabIndex', '0')\r\n .on('click',evt => this.buttonMenuHandler(ColumnAction.Enable, evt)) //touchstart\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}})\r\n ).toDOM()\r\n }\r\n\r\n\r\n protected isEditable(): boolean {\r\n return this.columnEnabled && !this.column.isReadOnly();\r\n }\r\n\r\n protected abstract changeTypeHandler(ev: Event);\r\n\r\n protected changeFormatHandler(ev: Event) {\r\n const formats = this.panel\r\n .getContext()\r\n .getModel()\r\n .getDisplayFormatsForType(this.column.getDataType());\r\n\r\n let itemId = '{0:__default}';\r\n if (formats.filter(f => f.format == this.column.displayFormat).length > 0) {\r\n itemId = this.column.displayFormat;\r\n }\r\n\r\n this.formatsMenu.showMenu({\r\n anchor: ev.target as HTMLElement,\r\n selectedIds: itemId,\r\n itemSelectedCallback: (data, items) => {\r\n if (data.id != itemId) {\r\n if (data.id == '{0:__default}') {\r\n this.column.displayFormat = '';\r\n }\r\n else {\r\n this.column.displayFormat = data.id;\r\n }\r\n\r\n this.column.fireChangedEvent();\r\n }\r\n\r\n return false;\r\n },\r\n menuClosedCallback: () => { //called when menu is closed\r\n this.keepShowingButtons = false;\r\n if (!this.isMouseOverBlock) {\r\n this.element.dispatchEvent(createBrowserEvent('mouseleave'));\r\n }\r\n }\r\n });\r\n }\r\n\r\n protected getUIS() {\r\n return this.panel\r\n .getContext().getModel()\r\n .checkAttrProperty(this.column.expr.value, \"useInSorting\");\r\n }\r\n\r\n private onMouseEnter(e: Event) {\r\n this.isMouseOverBlock = true;\r\n this.enterButtonBlock()\r\n e.stopPropagation();\r\n\r\n return false;\r\n }\r\n\r\n private onMouseLeave(e: Event) {\r\n this.isMouseOverBlock = false;\r\n this.leaveButtonBlock();\r\n e.stopPropagation();\r\n\r\n return false;\r\n }\r\n\r\n protected isColumnActive(): boolean {\r\n return this.element.classList.contains(\"active\");\r\n }\r\n\r\n protected hideButtons() {\r\n domel(this.element).data(\"show-buttons\", null);\r\n }\r\n\r\n protected showButtons() {\r\n domel(this.element).data(\"show-buttons\", \"\");\r\n }\r\n\r\n protected adjustButtonsVisibility() {\r\n if (this.panel.options.alwaysShowButtons || \r\n ((this.panel.options.accentActiveColumn || browserUtils.isMobileMode()) \r\n && this.isColumnActive())) {\r\n this.showButtons();\r\n }\r\n }\r\n\r\n protected enterButtonBlock() {\r\n this.showButtons();\r\n }\r\n\r\n protected leaveButtonBlock() {\r\n if (!this.keepShowingButtons && this.panel.options.alwaysShowButtons !== true && (!this.isColumnActive() || this.panel.options.accentActiveColumn != true)) {\r\n this.hideButtons();\r\n }\r\n }\r\n\r\n protected createFunctionMenu() {\r\n const items = [];\r\n const funcs = this.panel.getContext().getModel().getAggrFunctions();\r\n let funcAllowed = true;\r\n\r\n let item = null;\r\n\r\n const colDataType = this.column.getDataType();\r\n\r\n let funcCaption;\r\n\r\n for(const func of funcs) {\r\n if (!func) continue;\r\n\r\n const toInclude = func.getAppliedTypesOrDefault().indexOf(colDataType) >= 0;\r\n\r\n if (this.column.expr.func === func.id && !toInclude) {\r\n funcAllowed = false;\r\n }\r\n\r\n if (toInclude) {\r\n funcCaption = this.panel.getContext().getModel()\r\n .getAggrFunctionCaption(func.id);\r\n \r\n item = {\r\n id: func.id,\r\n text: funcCaption\r\n };\r\n\r\n items.push(item);\r\n }\r\n }\r\n\r\n if (!funcAllowed) {\r\n this.column.expr.func = items[0].id;\r\n }\r\n \r\n //Add \"Custom Expression\" menu\r\n const columnsPanel = this.panel;\r\n if (columnsPanel.areCustomExpressionsAllowed()) {\r\n item = {\r\n id: 'CustomSqlDivider',\r\n text: '---'\r\n };\r\n\r\n items.push(item);\r\n\r\n funcCaption = i18n.getText('CustomExpression');\r\n item = {\r\n id: 'CUSTOMSQL',\r\n text: funcCaption\r\n };\r\n\r\n items.push(item);\r\n }\r\n \r\n\r\n let menuId = this.column.id;\r\n if (menuId) {\r\n menuId += '-FunctionsMenu';\r\n }\r\n\r\n const menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n domWriteItemsId: true //this.panel.options.domWriteItemsId\r\n };\r\n \r\n\r\n this.functionMenu = new PopupMenu(menuOptions);\r\n }\r\n\r\n protected createFormatsMenu() {\r\n if (this.panel.options.allowDisplayFormatChange == false) return;\r\n\r\n let menuId = this.column.id;\r\n if (menuId) {\r\n menuId += '-FormatsMenu';\r\n }\r\n\r\n const items = this.getFormatsMenuItems();\r\n const menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n showSelected: true,\r\n domWriteItemsId: true //this.panel.options.domWriteItemsId\r\n };\r\n\r\n this.formatsMenu = new PopupMenu(menuOptions);\r\n }\r\n\r\n private getFormatsMenuItems(): MenuItem[] {\r\n const formats = this.panel.getContext().getModel()\r\n .getDisplayFormatsForType(this.column.getDataType());\r\n\r\n return [{ id: '{0:__default}', text: \"Default\" }]\r\n .concat(formats.map(format => ({ id: format.format, text: i18n.getText(\"DisplayFormats\", format.name) || format.name })));\r\n }\r\n\r\n protected getButtonsToShow(): Array<string> {\r\n return this.panel.options.buttons && Array.isArray(this.panel.options.buttons) ? this.panel.options.buttons : [\"enable\", \"delete\", \"type\", \"sorting\", \"format\"];\r\n }\r\n\r\n protected buttonMenuHandler(action: ColumnAction, evt?: Event) {\r\n switch (action) {\r\n case ColumnAction.Delete:\r\n const curQuery = this.column.getQuery();\r\n curQuery.removeColumn(this.column);\r\n curQuery.fireColumnsChangedEvent(QueryChangeAction.Delete, this.column);\r\n break;\r\n case ColumnAction.Enable:\r\n this.columnEnabled = !this.columnEnabled;\r\n this.fireColumnChanged();\r\n break;\r\n case ColumnAction.Hidden:\r\n this.column.setHidden(!this.column.isHidden());\r\n this.fireColumnChanged();\r\n break;\r\n \r\n case ColumnAction.MoveTop:\r\n this.panel.moveColumn(this.column, \"MoveTop\");\r\n break;\r\n case ColumnAction.MoveBottom:\r\n this.panel.moveColumn(this.column, \"MoveBottom\");\r\n break;\r\n case ColumnAction.MoveUp:\r\n this.panel.moveColumn(this.column, \"MoveUp\");\r\n break;\r\n case ColumnAction.MoveDown:\r\n this.panel.moveColumn(this.column, \"MoveDown\");\r\n break;\r\n \r\n case ColumnAction.SortingAsc:\r\n this.column.sorting = SortDirection.Ascending;\r\n this.column.fireChangedEvent();\r\n break;\r\n case ColumnAction.SortingDesc:\r\n this.column.sorting = SortDirection.Descending;\r\n this.column.fireChangedEvent();\r\n break;\r\n case ColumnAction.SortingNone:\r\n this.column.sorting = SortDirection.None;\r\n this.column.fireChangedEvent();\r\n break;\r\n\r\n case ColumnAction.Menu:\r\n const colMenu = this.buttonMenu;\r\n this.keepShowingButtons = true;\r\n colMenu.showMenu({\r\n anchor: evt ? evt.target as HTMLElement : null,\r\n selectedIds: this.getButtonMenuSelectedItems(),\r\n itemSelectedCallback: (item) => {\r\n let action: ColumnAction = item.id;\r\n switch(item.id) {\r\n case \"enable\":\r\n action = ColumnAction.Enable;\r\n break;\r\n case \"delete\":\r\n action = ColumnAction.Delete;\r\n break;\r\n case \"hidden\":\r\n action = ColumnAction.Hidden;\r\n break;\r\n case \"MoveTop\":\r\n action = ColumnAction.MoveTop;\r\n break;\r\n case \"MoveBottom\":\r\n action = ColumnAction.MoveBottom;\r\n break;\r\n case \"MoveUp\":\r\n action = ColumnAction.MoveUp;\r\n break;\r\n case \"MoveDown\":\r\n action = ColumnAction.MoveDown;\r\n break;\r\n case \"None\":\r\n action = ColumnAction.SortingNone;\r\n break;\r\n case \"Ascending\":\r\n action = ColumnAction.SortingAsc;\r\n break;\r\n case \"Descending\":\r\n action = ColumnAction.SortingAsc;\r\n break;\r\n }\r\n\r\n this.buttonMenuHandler(action, evt);\r\n },\r\n itemFilterCallback: (item) => {\r\n let result = this.columnEnabled || item.id === \"__group\" || item.id === \"enable\" || item.id === \"delete\";\r\n return result;\r\n },\r\n menuClosedCallback: () => { //called when menu is closed\r\n this.keepShowingButtons = false;\r\n if (!this.isMouseOverBlock)\r\n this.leaveButtonBlock();\r\n }\r\n\r\n });\r\n break;\r\n default:\r\n if (!this.processFormatsButtonMenuItems(action, evt))\r\n this.processExtraButtonMenuItems(action, evt);\r\n break;\r\n }\r\n\r\n evt && evt.stopPropagation();\r\n \r\n return false;\r\n }\r\n\r\n private createButtonMenu() {\r\n if (!this.buttonMenu) {\r\n let menuId = this.column.id;\r\n if (menuId) {\r\n menuId += '-ButtonMenu';\r\n }\r\n\r\n const common = [];\r\n common.push({\r\n id: \"enable\",\r\n text: i18n.getText('MenuEnable')\r\n });\r\n \r\n if (this.panel.options.allowHiddenColumns) {\r\n common.push({\r\n id: \"hidden\",\r\n text: i18n.getText('CmdHiddenColumn')\r\n })\r\n }\r\n \r\n common.push({\r\n id: \"delete\",\r\n text: i18n.getText('CmdDelete')\r\n });\r\n \r\n let items = [];\r\n \r\n items.push({\r\n id: '__group',\r\n text: ' ',\r\n items: common\r\n });\r\n \r\n const sortItems = this.panel.options.allowSorting ?\r\n [ \r\n ...this.panel.getSortMenuList(), \r\n ...this.panel.getMoveMenuList()\r\n ] :\r\n this.panel.getMoveMenuList();\r\n \r\n items.push({\r\n id: '__group',\r\n text: i18n.getText('CmdGroupSort'),\r\n items: sortItems\r\n })\r\n \r\n const extra = this.getExtraButtonMenuItems();\r\n\r\n if (extra && Array.isArray(extra)) {\r\n items = [...items, ...extra];\r\n }\r\n\r\n const formatItems = this.getFormatsMenuItems();\r\n if (formatItems.length > 1) {\r\n items.push({\r\n id: '__group',\r\n text: i18n.getText('CmdGroupFormat'),\r\n items: formatItems\r\n });\r\n }\r\n \r\n const menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n domWriteItemsId: true, //this.panel.options.domWriteItemsId\r\n showSelected: true \r\n };\r\n\r\n this.buttonMenu = new PopupMenu(menuOptions);\r\n }\r\n }\r\n\r\n protected abstract getExtraButtonMenuItems(): Array<any>;\r\n\r\n protected abstract processExtraButtonMenuItems(action: ColumnAction | string, evt: Event): boolean;\r\n\r\n protected processFormatsButtonMenuItems(action: ColumnAction | string, evt: Event): boolean {\r\n const formats = this.panel\r\n .getContext().getModel()\r\n .getDisplayFormatsForType(this.column.getDataType());\r\n\r\n if (action == '{0:__default}') {\r\n this.column.displayFormat = '';\r\n }\r\n else if (formats.filter(f => f.format == action).length > 0) {\r\n this.column.displayFormat = action as string;\r\n }\r\n else {\r\n return false;\r\n }\r\n\r\n this.column.fireChangedEvent();\r\n return true;\r\n }\r\n\r\n protected getButtonMenuSelectedItems(): Array<string> {\r\n let arrSelected = [];\r\n if (this.columnEnabled) {\r\n arrSelected.push(\"enable\");\r\n };\r\n\r\n if (this.column.isHidden()) {\r\n arrSelected.push(\"hidden\");\r\n };\r\n\r\n const formats = this.panel\r\n .getContext()\r\n .getModel()\r\n .getDisplayFormatsForType(this.column.getDataType());\r\n\r\n let formatId = '{0:__default}';\r\n if (formats.filter(f => f.format == this.column.displayFormat).length > 0) {\r\n formatId = this.column.displayFormat;\r\n }\r\n\r\n arrSelected.push(formatId);\r\n\r\n return arrSelected;\r\n }\r\n}","import { i18n, DataType} from '@easydata/core';\r\nimport { ExprTag, EntityAttr } from '@easyquery/core';\r\n\r\nimport { createBrowserEvent, domel } from '@easydata/ui';\r\n\r\nimport { ColumnRendererCP, ColumnAction } from './column_renderer_cp';\r\n\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\n\r\nexport class AttrColumnRendererCP extends ColumnRendererCP {\r\n protected getClassesToAdd(): string {\r\n return `${super.getClassesToAdd()} ${this.cssPrefix}-row ${this.cssPrefix}-row-column-entattr`;\r\n }\r\n\r\n protected renderExpressionBlock(): HTMLDivElement {\r\n return domel(\"div\")\r\n .addClass(`${this.cssPrefix}-expr-block`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', builder => builder\r\n .addClass(`${this.cssPrefix}-colelement`,`${this.cssPrefix}-attrelement`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.renderBaseExpression())\r\n )\r\n .toDOM();\r\n }\r\n\r\n protected getAttribute(): EntityAttr {\r\n const model = this.panel.getContext().getModel();\r\n return model.getAttributeByIdSafe(this.column.expr.value);\r\n }\r\n\r\n protected renderBaseExpression(): HTMLElement {\r\n const baseAttr = this.getAttribute();\r\n const attrCaption = this.panel.getContext().getAttributeTitle(baseAttr);\r\n\r\n if (this.isEditable()) {\r\n return domel('a')\r\n .attr('href', 'javascript:void(0)')\r\n .title(attrCaption)\r\n .text(attrCaption) //TO DO:add localization\r\n .on('click', (ev) => { \r\n ev.stopPropagation();\r\n\r\n this.panel.showEntitiesMenu({\r\n anchor: ev.target, \r\n selectedIds: null, \r\n itemSelectedCallback: this.baseExpressionItemSelectedCallback.bind(this),\r\n itemFilterCallback: item => item.id !== '__AddAll__'\r\n });\r\n\r\n return false;\r\n })\r\n .toDOM();\r\n }\r\n \r\n return domel('span')\r\n .text(attrCaption)\r\n .title(attrCaption)\r\n .toDOM();\r\n\r\n }\r\n\r\n protected baseExpressionItemSelectedCallback(data, item): boolean {\r\n const attrid = data.id;\r\n const context = this.panel.getContext();\r\n var attr = context.getModel().getAttributeById(attrid);\r\n this.updateBaseAttr(attr);\r\n this.column.caption = context.getDefaultColumnCaption(this.column);\r\n\r\n this.fireColumnChanged();\r\n return false;\r\n }\r\n\r\n protected updateBaseAttr(attr : EntityAttr) : void {\r\n this.column.expr.setValue(attr.id, true);\r\n this.column.expr.baseAttrId = attr.id;\r\n this.column.expr.dataType = attr.dataType;\r\n }\r\n\r\n protected getUIS(): boolean {\r\n const arg = this.column.expr.args[0];\r\n if (arg) {\r\n const model = this.panel.getContext().getModel();\r\n return model.checkAttrProperty(arg.value, \"useInSorting\");\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n\r\n protected changeTypeHandler(ev: Event) {\r\n this.keepShowingButtons = true;\r\n this.functionMenu.showMenu({\r\n anchor: ev.target as HTMLElement,\r\n selectedIds: null,\r\n itemSelectedCallback: (data, items) => {\r\n this.processExtraButtonMenuItems(data.id, null);\r\n return false;\r\n },\r\n menuClosedCallback: () => { //called when menu is closed\r\n this.keepShowingButtons = false;\r\n if (!this.isMouseOverBlock) {\r\n this.element.dispatchEvent(createBrowserEvent('mouseleave'));\r\n }\r\n }\r\n });\r\n }\r\n\r\n protected changeTypeToCustomSql() {\r\n const query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.CustomSql);\r\n\r\n const parentElement = this.element.parentElement;\r\n setTimeout(() => {\r\n //focus CustomSQL Edit\r\n const newElement = parentElement.querySelector(`div[data-id='${this.column.id}'] div[class*='${this.cssPrefix}-expr-block'] div[class*='${this.cssPrefix}-colelement'] a`);\r\n if (newElement)\r\n (newElement as HTMLElement).click();\r\n }, 500);\r\n\r\n this.fireColumnChanged();\r\n }\r\n\r\n protected changeTypeToAggr(funcId: string) {\r\n const query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.AggregateFunction, { funcId : funcId });\r\n this.fireColumnChanged();\r\n }\r\n\r\n protected processExtraButtonMenuItems(action: ColumnAction | string, evt: Event): boolean {\r\n if (action === \"CUSTOMSQL\") {\r\n this.changeTypeToCustomSql();\r\n } else {\r\n this.changeTypeToAggr(action as string);\r\n }\r\n return true;\r\n }\r\n\r\n protected getExtraButtonMenuItems(): Array<any> {\r\n const items = [];\r\n const funcs = this.panel.getContext().getModel().getAggrFunctions();\r\n let toInclude = true;\r\n let funcAllowed = true;\r\n\r\n var item = null;\r\n\r\n const attribute = this.getAttribute();\r\n\r\n let funcCaption;\r\n\r\n for(const func of funcs) {\r\n toInclude = func.getAppliedTypesOrDefault().indexOf(attribute.dataType) >= 0;\r\n\r\n if (this.column.expr.func === func.id && !toInclude) {\r\n funcAllowed = false;\r\n }\r\n\r\n if (toInclude) {\r\n funcCaption = this.panel.getContext().getModel().getAggrFunctionCaption(func.id);\r\n item = {\r\n id: func.id,\r\n text: funcCaption\r\n };\r\n\r\n items.push(item);\r\n }\r\n }\r\n\r\n for (let idx = 0; idx < funcs.length; idx++) {\r\n if (!funcs[idx]) continue;\r\n\r\n }\r\n\r\n if (!funcAllowed) {\r\n this.column.expr.func = items[0].id;\r\n }\r\n \r\n //Add \"Custom Expression\" menu\r\n const columnsPanel = this.panel;\r\n if (columnsPanel.areCustomExpressionsAllowed()) {\r\n item = {\r\n id: 'CustomSqlDivider',\r\n text: '---'\r\n };\r\n\r\n items.push(item);\r\n\r\n funcCaption = i18n.getText('CustomExpression');\r\n item = {\r\n id: 'CUSTOMSQL',\r\n text: funcCaption\r\n };\r\n\r\n items.push(item);\r\n }\r\n \r\n return [{\r\n id: '__group',\r\n text: i18n.getText('ColTypeGroup'),\r\n items: items\r\n }]\r\n }\r\n}","import { i18n } from '@easydata/core';\r\n\r\nimport { ExprTag, EntityAttr } from '@easyquery/core';\r\nimport { domel } from '@easydata/ui';\r\n\r\nimport { DisplayFormatParser } from '../../../utils/display_format_parser';;\r\n\r\nimport { AttrColumnRendererCP } from './attr_column_renderer_cp';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nimport { ColumnAction } from './column_renderer_cp';\r\n\r\nexport class AggrFuncColumnRendererCP extends AttrColumnRendererCP {\r\n\r\n private displayFormatParser = new DisplayFormatParser();\r\n \r\n protected getClassesToAdd(): string {\r\n return `${super.getClassesToAdd()} ${this.cssPrefix}-row ${this.cssPrefix}-row-column-aggr`;\r\n }\r\n\r\n protected getAttribute() : EntityAttr {\r\n return this.panel\r\n .getContext()\r\n .getModel()\r\n .getAttributeByIdSafe(this.column.expr.args[0].value);\r\n }\r\n\r\n protected renderExpressionBlock(): HTMLDivElement {\r\n const model = this.panel.getContext().getModel();\r\n \r\n const exprBlockBuilder = \r\n domel(\"div\")\r\n .addClass(`${this.cssPrefix}-expr-block`, `${this.cssPrefix}-expr-block-aggr`)\r\n .addClass(browserUtils.getMobileCssClass());\r\n\r\n const format = model.getAggrFunctionFormat(this.column.expr.func);\r\n if (!format || format === '') return;\r\n\r\n const arrFormat = this.parseDisplayFormat(format);\r\n if (arrFormat.length === 0) return;\r\n\r\n let item = null;\r\n const arrLength = arrFormat.length;\r\n for (let idx = 0; idx < arrLength; idx++) {\r\n item = arrFormat[idx];\r\n\r\n if (item.type === 1) {\r\n if (this.isEditable()) {\r\n const functionLink = \r\n domel('a')\r\n .attr('href', 'javascript:void(0)')\r\n .text(item.text)\r\n .on('click', (ev) => { //touchstart \r\n ev.stopPropagation();\r\n \r\n this.functionMenu.showMenu({\r\n anchor: functionLink.toDOM(),\r\n selectedIds: null,\r\n itemSelectedCallback: (data, items)=> {\r\n if (data.id === \"CUSTOMSQL\") {\r\n this.changeTypeToCustomSql();\r\n \r\n } else {\r\n this.column.expr.func = data.id;\r\n this.column.caption = '';\r\n this.fireColumnChanged();\r\n } \r\n }\r\n });\r\n \r\n });\r\n\r\n exprBlockBuilder\r\n .addChild('div', builder => builder\r\n .addClass(`${this.cssPrefix}-colelement`,`${this.cssPrefix}-aggrfuncelement`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(functionLink.toDOM())\r\n );\r\n } \r\n else {\r\n exprBlockBuilder\r\n .addChild('div', b => b\r\n .addClass(`${this.cssPrefix}-colelement`,`${this.cssPrefix}-aggrfuncelement`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('span', b => b\r\n .text(item.text)\r\n .title(item.text)\r\n )\r\n );\r\n } \r\n }\r\n else if (item.type === 2) {\r\n exprBlockBuilder\r\n .addChild('div', builder => builder\r\n .addClass(`${this.cssPrefix}-colelement`, `${this.cssPrefix}-attrelement`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.renderBaseExpression())\r\n );\r\n }\r\n else if (item.type === 3) {\r\n exprBlockBuilder\r\n .addChild('span', builder => builder\r\n .addClass(`${this.cssPrefix}-colelement`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .text(item.text)\r\n .title(item.text)\r\n );\r\n }\r\n }\r\n\r\n return exprBlockBuilder.toDOM();\r\n }\r\n\r\n protected renderColumnTypeButton() {\r\n const button = super.renderColumnTypeButton();\r\n if (button) {\r\n button.firstElementChild.classList.add('aggregated');\r\n button.firstElementChild.setAttribute('title', i18n.getText('ButtonToSimple'));\r\n }\r\n\r\n return button;\r\n }\r\n\r\n public changeTypeToSimple() {\r\n const query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.EntityAttribute);\r\n this.fireColumnChanged(); \r\n }\r\n\r\n private parseDisplayFormat(format: string): string[] {\r\n if (!format) return [];\r\n\r\n let result = [];\r\n\r\n const parser = this.displayFormatParser;\r\n parser.start(format);\r\n\r\n while (parser.next()) {\r\n const token = parser.getToken();\r\n const tokenText = parser.getTokenText();\r\n\r\n if (token === 'function') {\r\n result.push({ type: 1, text: tokenText });\r\n }\r\n else if (token === 'expression') {\r\n result.push({ type: 2 });\r\n }\r\n else if (token === 'text') {\r\n result.push({ type: 3, text: tokenText });\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n protected updateBaseAttr(attr : EntityAttr) : void {\r\n this.column.expr.args[0].setValue(attr.id, true);\r\n this.column.expr.baseAttrId = attr.id;\r\n }\r\n\r\n protected changeTypeHandler(ev: Event) {\r\n this.changeTypeToSimple();\r\n }\r\n\r\n protected processExtraButtonMenuItems(action: ColumnAction | string, evt: Event) {\r\n this.changeTypeToSimple();\r\n return true;\r\n }\r\n\r\n protected getExtraButtonMenuItems(): Array<any> {\r\n return [{\r\n id: '__group',\r\n text: i18n.getText('ColTypeGroup'),\r\n items: [{\r\n id: 'type',\r\n text: i18n.getText('ColTypeSimple')\r\n }]\r\n }]\r\n }\r\n}","import { i18n, DataType } from '@easydata/core';\r\nimport { ExprTag } from '@easyquery/core';\r\n\r\nimport { domel, eqDragManager } from '@easydata/ui';\r\n\r\nimport { AttrColumnRendererCP } from './attr_column_renderer_cp';\r\n\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nimport { ColumnAction } from './column_renderer_cp';\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\n\r\n\r\n\r\nclass EditableColumnRendererCP extends AttrColumnRendererCP { \r\n protected dataTypeMenu: PopupMenu = null;\r\n\r\n protected renderEnabledButton(): HTMLDivElement {\r\n const elem = super.renderEnabledButton();\r\n const child = elem.children[0] as HTMLElement;\r\n child.title = i18n.getText('CmdToggleEnableCustom');\r\n\r\n return elem;\r\n };\r\n\r\n protected getClassesToAdd(): string {\r\n return `${this.cssPrefix}-row ${this.cssPrefix}-row-column-entattr` + super.getClassesToAdd();\r\n }\r\n\r\n protected renderExpressionBlock(): HTMLDivElement {\r\n const exprBlock = domel(\"div\")\r\n .addClass(`${this.cssPrefix}-expr-block`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .toDOM();\r\n\r\n //Attribute element\r\n let builder = domel('div', exprBlock)\r\n .addClass(`${this.cssPrefix}-colelement`,`${this.cssPrefix}-attrelement`)\r\n .addClass(browserUtils.getMobileCssClass());\r\n\r\n if (this.isEditable()) {\r\n builder\r\n .addChild('a', b => b\r\n .attr('href', 'javascript:void(0)')\r\n .title(this.column.caption)\r\n .text(this.column.caption)\r\n .on('touchstart click', (ev) => {\r\n ev.stopPropagation();\r\n\r\n const element = ev.target as HTMLElement;\r\n const inputEl = element.parentElement.querySelector('input') as HTMLInputElement;\r\n if (inputEl) {\r\n element.style.display = 'none';\r\n inputEl.style.removeProperty('display');\r\n inputEl.style.width = `100%`;\r\n\r\n inputEl.focus();\r\n this.element.setAttribute(eqDragManager.DRAG_DISABLED_ATTR, '');\r\n }\r\n }) //TO DO:add localization and input field\r\n )\r\n .addChild('input', b => b\r\n .hide()\r\n .value(this.getColumnValue())\r\n .on('blur keydown', (ev) => {\r\n let isEndEvent = false;\r\n let save = true;\r\n\r\n if (ev instanceof KeyboardEvent) {\r\n // Enter\r\n if (ev.keyCode === 13) {\r\n isEndEvent = true;\r\n //ESC\r\n } else if (ev.keyCode === 27) {\r\n isEndEvent = true;\r\n save = false;\r\n }\r\n\r\n } \r\n else if (ev instanceof FocusEvent) {\r\n isEndEvent = true;\r\n }\r\n\r\n if (isEndEvent) {\r\n const inputEl = (ev.target as HTMLInputElement);\r\n const aEl = inputEl.parentElement.querySelector('a') as HTMLAnchorElement;\r\n if (aEl) {\r\n aEl.style.removeProperty('display');\r\n inputEl.style.display = 'none';\r\n }\r\n\r\n const colVal = this.getColumnValue();\r\n if (save && colVal !== inputEl.value) {\r\n this.setColumnValue(inputEl.value);\r\n this.fireColumnChanged();\r\n } \r\n else {\r\n inputEl.value = colVal;\r\n }\r\n\r\n this.element.removeAttribute(eqDragManager.DRAG_DISABLED_ATTR);\r\n }\r\n })\r\n ) \r\n } \r\n else {\r\n builder\r\n .addChild('span', b => {\r\n b.text(this.column.caption)\r\n .title(this.column.caption)\r\n });\r\n }\r\n\r\n // Colon element\r\n builder = domel('div', exprBlock)\r\n .addClass(`${this.cssPrefix}-colelement`)\r\n .addChild('span', b => {\r\n b.text(':')\r\n .title(':')\r\n });\r\n\r\n // DataType element\r\n builder = domel('div', exprBlock)\r\n .addClass(`${this.cssPrefix}-colelement`,`${this.cssPrefix}-attrelement`)\r\n .addClass(browserUtils.getMobileCssClass());\r\n\r\n if (this.isEditable()) {\r\n this.createDataTypeMenu();\r\n\r\n builder\r\n .addChild('a', dataTypeLink => dataTypeLink\r\n .attr('href', 'javascript:void(0)')\r\n .title(DataType[this.column.expr.dataType])\r\n .text(DataType[this.column.expr.dataType])\r\n .on('touchstart click', (ev) => {\r\n\r\n ev.stopPropagation();\r\n\r\n this.dataTypeMenu.showMenu({\r\n anchor: dataTypeLink.toDOM(),\r\n selectedIds: null,\r\n itemSelectedCallback: (data, items)=> {\r\n this.column.expr.dataType = data.id;\r\n this.fireColumnChanged();\r\n }\r\n });\r\n })\r\n )\r\n } else {\r\n this.column.expr.dataType\r\n builder\r\n .addChild('span', b => {\r\n b.text(DataType[this.column.expr.dataType])\r\n .title(DataType[this.column.expr.dataType])\r\n });\r\n }\r\n\r\n return exprBlock;\r\n }\r\n\r\n public changeTypeToSimple() {\r\n const query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.EntityAttribute);\r\n this.fireColumnChanged();\r\n }\r\n \r\n protected getColumnValue() : string {\r\n return '';\r\n }\r\n\r\n protected setColumnValue(value : string) : void {\r\n }\r\n\r\n\r\n protected getUIS() {\r\n return true;\r\n }\r\n\r\n protected changeTypeHandler(ev: Event) {\r\n this.changeTypeToSimple();\r\n }\r\n\r\n protected processExtraButtonMenuItems(action: ColumnAction | string, evt?: Event) {\r\n this.changeTypeToSimple();\r\n return true;\r\n }\r\n\r\n protected createFunctionMenu() {\r\n // Nothing TO DO\r\n }\r\n\r\n protected getExtraButtonMenuItems(): Array<any> {\r\n return [{\r\n id: '__group',\r\n text: i18n.getText('ColTypeGroup'),\r\n items: [{\r\n id: 'type',\r\n text: i18n.getText('ColTypeSimple')\r\n }]\r\n }];\r\n }\r\n\r\n protected createDataTypeMenu() {\r\n const items = [];\r\n\r\n for (let typeItem in DataType) {\r\n if (!isNaN(Number(typeItem))) {\r\n const item = {\r\n id: typeItem,\r\n text: DataType[typeItem]\r\n };\r\n\r\n items.push(item);\r\n }\r\n }\r\n\r\n let menuId = this.column.id;\r\n if (menuId) {\r\n menuId += '-DataTypeMenu';\r\n }\r\n\r\n const menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n domWriteItemsId: true\r\n };\r\n\r\n this.dataTypeMenu = new PopupMenu(menuOptions);\r\n }\r\n}\r\n\r\nexport class CustomSqlColumnRendererCP extends EditableColumnRendererCP {\r\n protected get columnEnabled(): boolean {\r\n return this.panel.areCustomExpressionsAllowed() ? this.column.enabled : false;\r\n }\r\n\r\n protected set columnEnabled(value: boolean) {\r\n if (this.panel.areCustomExpressionsAllowed()) {\r\n this.column.enabled = value;\r\n }\r\n else {\r\n this.column.enabled = false;\r\n }\r\n }\r\n\r\n protected renderColumnTypeButton() {\r\n const button = super.renderColumnTypeButton();\r\n if (button) {\r\n button.firstElementChild.classList.add('aggregated');\r\n button.firstElementChild.setAttribute('title', i18n.getText('ButtonToSimple'));\r\n }\r\n\r\n return button;\r\n }\r\n\r\n protected getColumnValue() : string {\r\n return this.column.expr.sql;\r\n }\r\n\r\n protected setColumnValue(value : string) : void {\r\n this.column.expr.sql = value;\r\n }\r\n\r\n protected getDefaultValue() {\r\n return this.column.expr.sql;\r\n }\r\n}\r\n\r\nexport class ConstColumnRendererCP extends EditableColumnRendererCP {\r\n protected renderColumnTypeButton() {\r\n const button = super.renderColumnTypeButton();\r\n if (button) {\r\n button.firstElementChild.classList.add('aggregated');\r\n button.firstElementChild.setAttribute('title', i18n.getText('ButtonToSimple'));\r\n }\r\n\r\n return button;\r\n }\r\n\r\n protected getColumnValue() : string {\r\n return this.column.expr.value;\r\n }\r\n\r\n protected setColumnValue(value : string) : void {\r\n this.column.expr.setValue(value);\r\n }\r\n \r\n protected getDefaultValue() {\r\n return this.column.expr.value;\r\n }\r\n}","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\n\r\nimport {\r\n DataKind, EntityAttr,\r\n EqContext, Query, QueryColumn, \r\n SortDirection, ExprTag, \r\n Widget, WidgetGroup, \r\n QueryChangePart, QueryChangeAction, QueryChangeEventData\r\n} from '@easyquery/core';\r\n\r\nimport { \r\n eqDragManager, DropEffect, \r\n getElementAbsolutePos, domel \r\n} from '@easydata/ui'\r\n\r\nimport { ColumnsPanelOptions } from './widget_options';\r\n\r\nimport { PopupMenu, PopupMenuOptions } from '../utils/popup_menu';\r\n\r\nimport { eqCssPrefix, eqCssMobile} from '../utils/utils';\r\nimport { browserUtils } from '../utils/browser_utils';\r\n\r\nimport { ColumnRendererCP } from './renderers/columnspanel/column_renderer_cp';\r\nimport { AggrFuncColumnRendererCP } from './renderers/columnspanel/aggrfunc_column_renderer_cp';\r\nimport { ConstColumnRendererCP, CustomSqlColumnRendererCP } from './renderers/columnspanel/editable_column_renderer_cp';\r\nimport { AttrColumnRendererCP } from './renderers/columnspanel/attr_column_renderer_cp';\r\n\r\nexport class ColumnsPanel extends Widget {\r\n\r\n public options: ColumnsPanelOptions = {\r\n isSubQuery: false,\r\n activeColumn: null,\r\n showAddRow: true,\r\n showHeader: true,\r\n showColumnTitles: true,\r\n allowAggrColumns: true,\r\n allowDuplicates: true,\r\n allowCustomExpressions: false,\r\n allowSorting: true,\r\n attrElementFormat: '{entity} {attr}',\r\n\r\n titleElementFormat: null, \r\n\r\n buttons: null,\r\n alwaysShowButtons: false,\r\n accentActiveColumn: true,\r\n allowDragDrop: true,\r\n menuOptions: {\r\n showSearchBoxAfter: 30,\r\n searchBoxAutoFocus: true,\r\n activateOnMouseOver: true,\r\n adjustHeight: true,\r\n itemRenderedCallback: null\r\n },\r\n attrPlacement: 0,\r\n sortEntities: false,\r\n columnRenderedCallback: null,\r\n\r\n customExpressionText: 0,\r\n allowHiddenColumns: false,\r\n showAddAllForEntity: false,\r\n showIndicatorOnLoad: true\r\n };\r\n\r\n private headerElement: HTMLDivElement;\r\n private columnsBlock: HTMLDivElement;\r\n private addRowElement: HTMLDivElement;\r\n private progressBlock: HTMLElement;\r\n\r\n private entitiesMenu: PopupMenu;\r\n\r\n public sortMenu: PopupMenu;\r\n public moveMenu: PopupMenu;\r\n\r\n private queryEventCallbackId: string;\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-qc';\r\n }\r\n\r\n constructor(slot: HTMLElement) {\r\n\r\n super(slot);\r\n\r\n this.slot.classList.add(`${this.cssPrefix}-panel`);\r\n\r\n this.group = WidgetGroup.Query;\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'columnsPanel';\r\n }\r\n\r\n public init(context: EqContext, options?: ColumnsPanelOptions) {\r\n super.init(context, options);\r\n\r\n this.setOptions(options);\r\n this.renderProgressBlock();\r\n\r\n const model = context.getModel();\r\n\r\n this.detachQueryObserver();\r\n this.attachQueryObserver(); \r\n\r\n eqDragManager.removeDropContainer(this.slot);\r\n if (this.options.allowDragDrop) {\r\n eqDragManager.registerDropContainer({\r\n element: this.slot,\r\n scopes: [\"entityAttr\", \"entityAttrSort\"],\r\n onDragEnter: (container, ev) => {\r\n \r\n this.slot.classList.add(`${eqCssPrefix}-drophover`);\r\n if (ev.item.scope === \"entityAttrSort\") {\r\n this.showLandingSlot(ev.pageX, ev.pageY);\r\n }\r\n else {\r\n const attrId: string = ev.data.attrId;\r\n if (!model.checkAttrProperty(attrId, \"useInResult\")) {\r\n ev.dropEffect = DropEffect.Forbid; \r\n }\r\n\r\n ev.dragImage.classList.add('eqjs-sortable-helper');\r\n }\r\n },\r\n onDragOver: (container, ev) => {\r\n const attrId: string = ev.data.attrId;\r\n if (ev.item.scope === \"entityAttrSort\" || \r\n model.checkAttrProperty(attrId, \"useInResult\")) {\r\n this.showLandingSlot(ev.pageX, ev.pageY);\r\n }\r\n },\r\n onDragLeave: (container, ev) => {\r\n if (ev.item.scope === \"entityAttrSort\") {\r\n ev.dropEffect = DropEffect.Forbid;\r\n } \r\n else {\r\n ev.dragImage.classList.remove('eqjs-sortable-helper')\r\n ev.dragImage.style.removeProperty('width');\r\n }\r\n this.slot.classList.remove(`${eqCssPrefix}-drophover`);\r\n this.hideLandingSlot();\r\n },\r\n onDrop: (container, ev) => {\r\n if (ev.item.scope == \"entityAttrSort\") {\r\n const query = this.getQuery();\r\n const columns = query.getColumns();\r\n const index = columns.indexOf(ev.data.column);\r\n \r\n this.moveColumnCore(index, this.landingIndex);\r\n }\r\n else {\r\n const attrId: string = ev.data.attrId;\r\n this.addNewColumn(attrId, this.landingIndex);\r\n }\r\n }\r\n });\r\n } \r\n }\r\n\r\n protected renderBaseElements() {\r\n let minusHeight = 0;\r\n \r\n if (this.options.showHeader) {\r\n\r\n const headerBuilder = \r\n domel('div', this.slot)\r\n .hide()\r\n .addClass(`${this.cssPrefix}-header`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', builder => builder\r\n .addClass(`${this.cssPrefix}-header-expression`)\r\n .text(i18n.getText('HeaderExpression'))\r\n )\r\n \r\n if (this.options.showColumnTitles !== false) {\r\n headerBuilder\r\n .addChild('div', builder => builder\r\n .addClass(`${this.cssPrefix}-header-title`)\r\n .text(i18n.getText('HeaderTitle'))\r\n )\r\n }\r\n \r\n this.headerElement = headerBuilder.toDOM();\r\n\r\n minusHeight += this.headerElement.offsetHeight;\r\n\r\n }\r\n\r\n this.columnsBlock = \r\n domel('div', this.slot)\r\n .addClass(`${this.cssPrefix}-columns`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .toDOM();\r\n\r\n if (this.options.showAddRow) {\r\n this.addRowElement = \r\n domel('div', this.slot)\r\n .addClass(`${eqCssPrefix}-addrow`, `${this.cssPrefix}-addrow`, `${eqCssPrefix}-addrow-empty`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('a', builder => builder\r\n .attr('href', 'javascript:void(0)')\r\n .text(i18n.getText('CmdClickToAddColumn'))\r\n .on('click', (e) => {\r\n e.preventDefault();\r\n\r\n this.showEntitiesMenu({\r\n anchor: e.target, \r\n selectedIds: null, \r\n itemSelectedCallback: (data, items) => {\r\n if (data.id === '__AddAll__' && data.extra && Array.isArray(data.extra.ids)) {\r\n data.extra.ids.forEach(attrId => this.addNewColumn(attrId));\r\n }\r\n else {\r\n const attrid = data.id;\r\n this.addNewColumn(attrid);\r\n }\r\n return false;\r\n }\r\n });\r\n })\r\n )\r\n .toDOM();\r\n\r\n minusHeight += this.addRowElement.offsetHeight;\r\n }\r\n \r\n this.columnsBlock.style.maxHeight = `${this.slot.offsetHeight - minusHeight - 25}px`;\r\n\r\n }\r\n\r\n protected destroyCore() {\r\n eqDragManager.removeDropContainer(this.slot);\r\n this.detachQueryObserver();\r\n\r\n this.slot.innerHTML = '';\r\n }\r\n\r\n private attachQueryObserver() {\r\n const query = this.getQuery();\r\n\r\n this.queryEventCallbackId = query.addChangedCallback(event => {\r\n //if something has changed, and that change is related to columns\r\n const edata = event.data as QueryChangeEventData;\r\n if (!edata || (edata.part != QueryChangePart.Columns \r\n && edata.part != QueryChangePart.Aggregation\r\n && edata.part != QueryChangePart.All)) {\r\n return;\r\n }\r\n\r\n const focusedBefore = document.activeElement;\r\n const isFocusInside = this.slot.contains(focusedBefore) || focusedBefore == document.body;\r\n\r\n switch (edata.action) {\r\n case QueryChangeAction.Modify: {\r\n \r\n const columns = edata.changee as QueryColumn | QueryColumn[];\r\n\r\n const modifyColumn = (column: QueryColumn) => {\r\n const colEl = this.columnsBlock.querySelector(`div[data-id='${column.id}']`);\r\n\r\n if (colEl) {\r\n const renderer = this.getColumnRenderer(column, colEl as HTMLDivElement);\r\n if (renderer) {\r\n const newEl = renderer.render();\r\n\r\n if (isFocusInside) {\r\n const focusElem = newEl.querySelector('a') || newEl.querySelector('.eqjs-column-button');\r\n if (focusElem) {\r\n focusElem.focus();\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n if (Array.isArray(columns)) {\r\n columns.forEach((col) => modifyColumn(col));\r\n }\r\n else {\r\n modifyColumn(columns);\r\n }\r\n\r\n this.agjustHeaderVisibility();\r\n\r\n break;\r\n }\r\n case QueryChangeAction.Add: {\r\n const columns = edata.changee as QueryColumn | QueryColumn[];\r\n\r\n const addColumn = (column: QueryColumn) => {\r\n const index = query.getColumns().indexOf(column);\r\n const newEl = this.addColumnElement(column, index);\r\n \r\n if (isFocusInside) {\r\n const focusElem = newEl.querySelector('a');\r\n if (focusElem) {\r\n try {\r\n focusElem.focus();\r\n }\r\n catch {\r\n //do nothing\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (Array.isArray(columns)) {\r\n columns.forEach((col) => addColumn(col));\r\n }\r\n else {\r\n addColumn(columns);\r\n }\r\n \r\n this.agjustHeaderVisibility();\r\n break;\r\n }\r\n case QueryChangeAction.Delete: {\r\n const columns = edata.changee as QueryColumn | QueryColumn[];\r\n\r\n const deleteColumn = (column: QueryColumn) => {\r\n const colEl = this.columnsBlock.querySelector(`div[data-id='${column.id}']`);\r\n if (colEl) {\r\n const next = colEl.nextSibling;\r\n const prev = colEl.previousSibling;\r\n\r\n this.columnsBlock.removeChild(colEl);\r\n\r\n if (isFocusInside) {\r\n const focusCond = next || prev || this.addRowElement;\r\n const focusElem =(focusCond as HTMLElement).querySelector('a') || (focusCond as HTMLElement).querySelector('.eqjs-column-button');\r\n if (focusElem) {\r\n focusElem.focus();\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.agjustHeaderVisibility();\r\n\r\n if (Array.isArray(columns)) {\r\n columns.forEach((col) => deleteColumn(col));\r\n }\r\n else {\r\n deleteColumn(columns);\r\n }\r\n\r\n break;\r\n }\r\n default:\r\n this.refresh();\r\n break;\r\n }\r\n });\r\n }\r\n\r\n private detachQueryObserver() {\r\n if (this.queryEventCallbackId) {\r\n const query = this.getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n }\r\n\r\n private getQuery(): Query {\r\n return this.getContext().getQuery();\r\n }\r\n\r\n private landingSlot: HTMLDivElement \r\n = domel('div')\r\n .addClass(`${this.cssPrefix}-col-landing-slot`)\r\n .addChildElement(\r\n domel('div')\r\n .toDOM())\r\n .toDOM();\r\n\r\n private landingIndex: number = -1;\r\n\r\n private showLandingSlot(pageX: number, pageY: number) {\r\n\r\n const rowElems = this.columnsBlock.querySelectorAll(`[class*=${this.cssPrefix}-row]`) as NodeListOf<HTMLElement>;\r\n const rows: HTMLElement[] = [];\r\n\r\n for(let i = 0; i < rowElems.length; i++) {\r\n\r\n const rowElem = rowElems[i];\r\n if (rowElem.style.display === 'none')\r\n continue;\r\n\r\n rows.push(rowElem)\r\n }\r\n\r\n if (rows.length === 0) {\r\n this.landingIndex = 0;\r\n this.columnsBlock.appendChild(this.landingSlot);\r\n return;\r\n }\r\n\r\n const landingPos = getElementAbsolutePos(this.landingSlot);\r\n if (pageY >= landingPos.y && pageY <= landingPos.y + this.landingSlot.offsetHeight) {\r\n return;\r\n }\r\n\r\n const firstRow = rows[0];\r\n const rowHeight = firstRow.offsetHeight;\r\n const absPos = getElementAbsolutePos(firstRow);\r\n\r\n let newLandingIndex = (pageY > absPos.y + rowHeight / 2) ? Math.round((pageY - absPos.y + rowHeight / 2) / rowHeight) : 0;\r\n if (newLandingIndex > rows.length) {\r\n newLandingIndex = rows.length;\r\n }\r\n\r\n if (newLandingIndex != this.landingIndex) {\r\n this.landingIndex = newLandingIndex;\r\n\r\n if (this.landingIndex < rows.length) {\r\n this.columnsBlock.insertBefore(this.landingSlot, rows[this.landingIndex]);\r\n }\r\n else {\r\n this.columnsBlock.appendChild(this.landingSlot);\r\n }\r\n\r\n this.landingSlot.scrollIntoView({block: \"center\", behavior: \"smooth\"}); \r\n }\r\n }\r\n\r\n private hideLandingSlot() {\r\n this.landingIndex = -1;\r\n setTimeout(() => {\r\n if (this.landingSlot.parentElement) {\r\n this.landingSlot.parentElement.removeChild(this.landingSlot);\r\n }\r\n }, 10);\r\n }\r\n\r\n private setOptions(options?: ColumnsPanelOptions) {\r\n dataUtils.assignDeep(this.options, options);\r\n \r\n this.context.options.allowCustomExpressions = options.allowCustomExpressions;\r\n\r\n if (options.attrElementFormat) {\r\n this.context.options.attributeFormat = options.attrElementFormat;\r\n }\r\n\r\n if (options.titleElementFormat) {\r\n this.context.options.columnTitleFormat = options.titleElementFormat;\r\n }\r\n\r\n if (browserUtils.isMobileMode()) {\r\n this.options.buttons = [\"menu\"];\r\n this.options.showHeader = false;\r\n }\r\n }\r\n\r\n protected onProcessStartCore() {\r\n if (this.options.showIndicatorOnLoad) {\r\n if (!this.progressBlock.parentNode)\r\n this.slot.appendChild(this.progressBlock);\r\n }\r\n }\r\n\r\n protected onProcessEndCore() {\r\n if (this.options.showIndicatorOnLoad) {\r\n if (this.progressBlock.parentNode)\r\n this.slot.removeChild(this.progressBlock);\r\n }\r\n }\r\n\r\n protected refreshCore() {\r\n this.clear();\r\n this.render();\r\n }\r\n\r\n private clear() {\r\n this.slot.innerHTML = \"\";\r\n }\r\n\r\n private render() {\r\n try {\r\n this.renderBaseElements();\r\n this.createEntitiesMenu();\r\n\r\n this.createColumnMenus();\r\n \r\n this.agjustHeaderVisibility();\r\n\r\n domel(this.slot)\r\n .removeClass(eqCssMobile)\r\n .addClass(browserUtils.getMobileCssClass());\r\n\r\n\r\n const query = this.context.getQuery();\r\n const columns = query.getColumns();\r\n for(let column of columns) {\r\n this.columnsBlock.appendChild(this.renderColumn(column));\r\n }\r\n }\r\n catch (err) {\r\n let error = err as any;\r\n this.context.throwError({\r\n action: \"ColumnsPanel rendering\",\r\n text: error.message,\r\n sourceError: error\r\n });\r\n }\r\n }\r\n\r\n private agjustHeaderVisibility() {\r\n if (this.headerElement) {\r\n const query = this.context.getQuery();\r\n const columns = query.getColumns();\r\n\r\n this.headerElement.style.display = (columns.length) ? '' : 'none';\r\n }\r\n }\r\n\r\n private renderColumn(column: QueryColumn): HTMLDivElement | null{\r\n const renderer = this.getColumnRenderer(column);\r\n if (renderer)\r\n return renderer.render(); \r\n \r\n return null;\r\n }\r\n\r\n public toggleColumnPicked(column: QueryColumn) {\r\n let el: HTMLElement;\r\n let isActive: boolean;\r\n if (column) {\r\n el = this.columnsBlock.querySelector(`div[data-id=${column.id}]`);\r\n if (el) {\r\n isActive = el.classList.contains('active');\r\n }\r\n }\r\n\r\n //clear 'active' in all rows\r\n const rows = this.columnsBlock.querySelectorAll(`.${this.cssPrefix}-row`);\r\n for(let i = 0; i < rows.length; i++) {\r\n const row = rows[i] as HTMLElement;\r\n domel(row)\r\n .removeClass('active')\r\n \r\n if (!this.options.alwaysShowButtons) {\r\n domel(row)\r\n .data(\"show-buttons\", null)\r\n }\r\n }\r\n\r\n if (el && !isActive) {\r\n domel(el)\r\n .addClass('active')\r\n .data(\"show-buttons\", \"\")\r\n }\r\n }\r\n\r\n public addNewColumn(attrs: string, index?: number): QueryColumn\r\n public addNewColumn(attrs: string[], index?: number): QueryColumn[]\r\n public addNewColumn(attrs: string | string[], index?: number): QueryColumn | QueryColumn[] {\r\n const model = this.getContext().getModel();\r\n const query = this.getQuery();\r\n\r\n if (Array.isArray(attrs)) {\r\n let col : QueryColumn = null;\r\n let cols : QueryColumn[] = [];\r\n for (let i = 0; i < attrs.length; i++) {\r\n col = query.addColumn({\r\n attributeId: attrs[i],\r\n index: index\r\n }, true)\r\n if (col) {\r\n cols.push(col);\r\n }\r\n }\r\n query.fireChangedEvent({\r\n part: QueryChangePart.Columns,\r\n action: QueryChangeAction.Add,\r\n changee: cols,\r\n source: this\r\n });\r\n return cols;\r\n }\r\n else {\r\n const col = query.addColumn({\r\n attributeId: attrs,\r\n index: index\r\n });\r\n \r\n return col;\r\n }\r\n }\r\n\r\n //adds one column to the panel on the specified position\r\n private addColumnElement(column: QueryColumn, index: number): HTMLDivElement {\r\n const rows = this.columnsBlock.querySelectorAll(`[class*=${this.cssPrefix}-row]`);\r\n\r\n const newColBlock = this.renderColumn(column);\r\n if (rows.length > 0) {\r\n if (index < rows.length) {\r\n this.columnsBlock.insertBefore(newColBlock, rows[index]);\r\n }\r\n else {\r\n this.columnsBlock.appendChild(newColBlock);\r\n this.scrollToBottom();\r\n }\r\n }\r\n else {\r\n this.columnsBlock.appendChild(newColBlock);\r\n this.scrollToBottom();\r\n }\r\n\r\n if (this.options.columnRenderedCallback) {\r\n this.options.columnRenderedCallback(newColBlock);\r\n }\r\n\r\n return newColBlock;\r\n }\r\n\r\n private scrollToBottom() {\r\n this.columnsBlock.scrollTop = this.columnsBlock.scrollHeight - this.columnsBlock.clientHeight;\r\n }\r\n\r\n private checkColumnsArray(cols: QueryColumn[]): QueryColumn[] {\r\n let i = 0, len = cols.length;\r\n const result = [];\r\n for (let i = 0; i < len; i++) {\r\n if (this.checkColumn(cols[i]))\r\n result.push(cols[i]);\r\n }\r\n return result;\r\n }\r\n\r\n private checkColumn(col: QueryColumn) {\r\n if (!this.options.allowDuplicates) {\r\n const query = this.getQuery();\r\n const columns = query.getColumns();\r\n \r\n for (let i = 0; i < columns.length; i++) {\r\n if ((col.expr.tag === ExprTag.EntityAttribute && columns[i].expr.tag === ExprTag.EntityAttribute\r\n || col.expr.tag === ExprTag.ParentEntityAttribute && columns[i].expr.tag === ExprTag.ParentEntityAttribute)\r\n && col.expr.value === columns[i].expr.value) {\r\n return null;\r\n }\r\n }\r\n }\r\n return col;\r\n }\r\n\r\n public getColumnsBlock(): HTMLElement {\r\n return this.columnsBlock;\r\n }\r\n\r\n\r\n private getColumnRenderer(column: QueryColumn, slot?: HTMLDivElement): ColumnRendererCP | null {\r\n switch(column.expr.tag) {\r\n case ExprTag.Constant:\r\n return new ConstColumnRendererCP(this, column, slot);\r\n case ExprTag.AggregateFunction:\r\n return new AggrFuncColumnRendererCP(this, column, slot);\r\n case ExprTag.CustomSql:\r\n return new CustomSqlColumnRendererCP(this, column, slot);\r\n default:\r\n return new AttrColumnRendererCP(this, column, slot);\r\n } \r\n\r\n return null;\r\n }\r\n\r\n public areCustomExpressionsAllowed(): boolean {\r\n const query = this.getQuery();\r\n return query.isEx() && this.getContext().options.allowCustomExpressions;\r\n }\r\n\r\n\r\n private addAllColumnsToEntitiesList(list: any[]) {\r\n const attrIds = list.filter(item => !item.isEntity).map(item => item.id);\r\n\r\n if (attrIds.length > 0) {\r\n list.unshift({\r\n id: '__AddAll__', \r\n text: i18n.getText('AddAllForEntityText'), \r\n extra: { \r\n ids: attrIds\r\n }\r\n })\r\n }\r\n\r\n list.forEach(item => {\r\n if (item.items) {\r\n this.addAllColumnsToEntitiesList(item.items);\r\n }\r\n })\r\n }\r\n\r\n private createEntitiesMenu() {\r\n const model = this.getContext().getModel();\r\n if (!model || model.isEmpty()) return null;\r\n\r\n let menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-EntitiesMenu';\r\n }\r\n\r\n const entitiesList = model.getEntitiesTree({ addUIC: false, addUIR: true, addUIS: false, attrPlacement: this.options.attrPlacement, sortEntities: this.options.sortEntities });\r\n\r\n // add [Add all columns] items\r\n if (this.options.showAddAllForEntity) {\r\n this.addAllColumnsToEntitiesList(entitiesList);\r\n }\r\n\r\n const options: PopupMenuOptions = { \r\n id: menuId,\r\n items: entitiesList, \r\n adjustHeight: this.options.adjustEntitiesMenuHeight, \r\n domWriteItemsId: this.options.domWriteItemsId \r\n };\r\n\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.entitiesMenu = new PopupMenu(options);\r\n }\r\n\r\n public getSortMenuList() {\r\n return [\r\n { id: 'None', text: i18n.getText('CmdNotSorted') },\r\n { id: 'Ascending', text: i18n.getText('CmdAscending') },\r\n { id: 'Descending', text: i18n.getText('CmdDescending') },\r\n { id: '---', text: '---' }\r\n ];\r\n }\r\n\r\n public getMoveMenuList() {\r\n return [\r\n { id: 'MoveTop', text: i18n.getText('CmdMoveToFirst') },\r\n { id: 'MoveUp', text: i18n.getText('CmdMoveToPrev') },\r\n { id: 'MoveDown', text: i18n.getText('CmdMoveToNext') },\r\n { id: 'MoveBottom', text: i18n.getText('CmdMoveToLast') }\r\n ];\r\n }\r\n\r\n private createSortMenu() {\r\n const model = this.getContext().getModel();\r\n\r\n if (!model || model.isEmpty()) return null;\r\n\r\n let menuId = this.slot.id\r\n if (menuId) {\r\n menuId += '-SortMenu';\r\n }\r\n\r\n const items = this.getSortMenuList().concat(this.moveMenu.getItems());\r\n \r\n const menuOptions: any = { \r\n id: menuId, \r\n \"items\": items, \r\n domWriteItemsId: this.options.domWriteItemsId, \r\n showSelected: true \r\n };\r\n\r\n dataUtils.assign(menuOptions, this.options.menuOptions);\r\n\r\n menuOptions.searchBoxAlwaysShown = false;\r\n\r\n this.sortMenu = new PopupMenu(menuOptions);\r\n }\r\n\r\n private createMoveMenu() {\r\n const model = this.getContext().getModel();\r\n if (!model || model.isEmpty()) return null;\r\n\r\n let menuId = this.slot.id\r\n if (menuId) {\r\n menuId += '-MoveMenu';\r\n }\r\n\r\n const items = dataUtils.createArrayFrom(this.getMoveMenuList());\r\n\r\n if (this.options.allowHiddenColumns) {\r\n items.push({ id: '---', text: '---' });\r\n items.push({ id: 'IsHidden', text: i18n.getText('CmdHiddenColumn') });\r\n }\r\n\r\n const menuOptions:any = { \r\n \"items\": items, \r\n id: menuId, \r\n domWriteItemsId: this.options.domWriteItemsId, \r\n showSelected: true \r\n };\r\n\r\n dataUtils.assign(menuOptions, this.options.menuOptions);\r\n\r\n this.moveMenu = new PopupMenu(menuOptions);\r\n\r\n menuOptions.searchBoxAlwaysShown = false;\r\n }\r\n\r\n public showEntitiesMenu(menuOptions) {\r\n this.entitiesMenu.showMenu(menuOptions);\r\n }\r\n\r\n public moveColumn(column: QueryColumn, direction: string) {\r\n const query = this.getQuery();\r\n const columns = query.getColumns();\r\n const index = columns.indexOf(column);\r\n\r\n if (index >= 0) {\r\n switch (direction) {\r\n case 'MoveTop':\r\n if (index == 0) {\r\n return;\r\n }\r\n this.moveColumnCore(index, 0); \r\n break;\r\n case 'MoveUp':\r\n if (index == 0) {\r\n return;\r\n }\r\n this.moveColumnCore(index, index-1); \r\n break;\r\n case 'MoveDown':\r\n if (index == columns.length-1) {\r\n return;\r\n }\r\n this.moveColumnCore(index, index+1); \r\n break;\r\n case 'MoveBottom':\r\n if (index == columns.length-1) {\r\n return;\r\n }\r\n this.moveColumnCore(index, columns.length-1); \r\n break;\r\n };\r\n }\r\n }\r\n\r\n private moveColumnCore(index1: number, index2: number) {\r\n const query = this.getQuery();\r\n if (!query) return;\r\n\r\n const rows = this.columnsBlock.querySelectorAll(`[class*=${this.cssPrefix}-row]`);\r\n const colToMove = rows[index1];\r\n\r\n if (index2 == 0) {\r\n this.columnsBlock.insertBefore(colToMove, this.columnsBlock[0]);\r\n }\r\n else if (index2 > 0 && index2 < rows.length - 1) {\r\n if (index1 < index2) {\r\n this.columnsBlock.insertBefore(colToMove, rows[index2 + 1]);\r\n }\r\n else {\r\n this.columnsBlock.insertBefore(colToMove, rows[index2]);\r\n }\r\n }\r\n else {\r\n this.columnsBlock.appendChild(colToMove);\r\n }\r\n\r\n query.moveColumn(index1, index2);\r\n\r\n query.fireColumnsChangedEvent();\r\n }\r\n\r\n private createColumnMenus() {\r\n this.createMoveMenu();\r\n\r\n if (this.options.allowSorting) {\r\n this.createSortMenu();\r\n } \r\n }\r\n\r\n private renderProgressBlock() {\r\n this.progressBlock = document.createElement('div');\r\n this.progressBlock.classList.add(`${eqCssPrefix}-progress-win8`);\r\n this.progressBlock.classList.add(browserUtils.getMobileCssClass());\r\n 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>';\r\n }\r\n\r\n}","import { i18n } from '@easydata/core';\r\n\r\nimport { \r\n QueryChangeAction, EntityAttr, \r\n SortDirection, QueryColumn, ExprTag \r\n} from '@easyquery/core';\r\n\r\nimport { \r\n eqDragManager, DropEffect, \r\n createBrowserEvent, domel \r\n} from '@easydata/ui';\r\n\r\nimport { eqCssPrefix } from '../../../utils/utils';\r\nimport { browserUtils } from '../../../utils/browser_utils'; \r\nimport { MenuItem, PopupMenu } from '../../../utils/popup_menu';\r\nimport { ColumnsBar } from '../../columns_bar';\r\n\r\nexport abstract class ColumnRendererCB {\r\n protected column: QueryColumn;\r\n protected bar: ColumnsBar;\r\n protected functionMenu: PopupMenu = null;\r\n protected formatsMenu: PopupMenu = null;\r\n\r\n protected element: HTMLDivElement;\r\n\r\n protected isMouseOverBlock = false;\r\n \r\n protected keepShowingButtons = false;\r\n\r\n constructor(panel: ColumnsBar, column: QueryColumn, slot?: HTMLDivElement) {\r\n this.bar = panel;\r\n this.column = column;\r\n \r\n this.element = slot;\r\n }\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-cb';\r\n }\r\n\r\n public render(): HTMLDivElement {\r\n const builder = domel('div');\r\n builder.data('id', this.column.id);\r\n\r\n if (this.element) {\r\n\r\n //to remove all event listeners\r\n this.element.parentNode\r\n .replaceChild(builder.toDOM(), this.element);\r\n }\r\n\r\n this.element = builder.toDOM();\r\n\r\n if (this.bar.options.allowDragDrop) {\r\n eqDragManager.registerDraggableItem({\r\n element: this.element,\r\n scope: \"entityAttrSort\",\r\n beforeDragStart: () => this.element.dispatchEvent(createBrowserEvent('mouseleave')),\r\n onDragStart: (ev) => {\r\n this.hideButtons();\r\n this.element.style.display = 'none';\r\n ev.dropEffect = DropEffect.Allow;\r\n }, \r\n onDragEnd: (ev) => {\r\n if (!ev.data.finishedSuccessfully) {\r\n this.element.removeAttribute('style');\r\n }\r\n },\r\n data: { column: this.column }\r\n }); \r\n }\r\n \r\n if (!this.column.isReadOnly()) {\r\n this.createFunctionMenu();\r\n this.createFormatsMenu();\r\n }\r\n\r\n builder\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.renderCaptionBlock())\r\n .addChildElement(this.renderSortingImage());\r\n\r\n if (!browserUtils.isMobileMode()) {\r\n builder\r\n .addChildElement(this.renderButtonsBlock())\r\n }\r\n \r\n //start event listeners\r\n builder\r\n .on('mouseenter', this.onMouseEnter.bind(this))\r\n .on('mouseleave', this.onMouseLeave.bind(this))\r\n //end event listeners\r\n\r\n if (this.bar.options.accentActiveColumn || browserUtils.isMobileMode()) {\r\n builder\r\n .on('touchstart click', this.onMouseClick.bind(this));\r\n }\r\n\r\n return this.element;\r\n }\r\n\r\n public fireColumnChanged() {\r\n this.column.fireChangedEvent();\r\n }\r\n\r\n public refresh() {\r\n this.render();\r\n }\r\n\r\n protected isEditable(): boolean {\r\n return this.column.enabled && !this.column.isReadOnly();\r\n }\r\n\r\n private tapedTwice = false;\r\n\r\n protected renderButtonsBlock(): HTMLDivElement {\r\n return domel('div', this.element)\r\n .addClass(`${eqCssPrefix}-column-buttonsBlock`, `${this.cssPrefix}-buttonsBlock`)\r\n .addChildElement(this.renderSortingButton())\r\n .addChildElement(this.renderColumnTypeButton())\r\n .addChildElement(this.renderColumnFormatButton())\r\n .addChildElement(this.renderDeleteButton())\r\n .toDOM();\r\n }\r\n\r\n protected renderCaptionBlock(): HTMLDivElement {\r\n const caption = this.column.caption;\r\n if (!this.isEditable()) {\r\n return domel('div')\r\n .addClass(`${this.cssPrefix}-colelement`, `${this.cssPrefix}-captionelement`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', b => b\r\n .title(caption)\r\n .text(caption)\r\n .attr('tabIndex', '0')\r\n )\r\n .toDOM()\r\n }\r\n\r\n const tapHandler = (ev: TouchEvent) => {\r\n if(!this.tapedTwice) {\r\n this.tapedTwice = true;\r\n setTimeout( () => { this.tapedTwice = false; }, 300 );\r\n }\r\n }\r\n\r\n let isFocused = false;\r\n domel(this.element).on('touchstart dblclick', ev => {\r\n if (ev instanceof TouchEvent && !this.tapedTwice) {\r\n tapHandler(ev);\r\n return true;\r\n }\r\n\r\n ev.stopPropagation();\r\n\r\n isFocused = this.element.querySelector('a') == document.activeElement;\r\n\r\n const inputEl = this.element.querySelector(`.${this.cssPrefix}-captionelement input`) as HTMLInputElement;\r\n const aEl = this.element.querySelector(`.${this.cssPrefix}-captionelement a`) as HTMLAnchorElement;\r\n if (inputEl) { \r\n inputEl.style.width = `${this.element.clientWidth}px`;\r\n aEl.style.display = 'none';\r\n inputEl.style.removeProperty('display');\r\n inputEl.focus();\r\n this.element.setAttribute(eqDragManager.DRAG_DISABLED_ATTR, '');\r\n }\r\n\r\n return false;\r\n }); //TO DO:add localization and input field);\r\n\r\n return domel('div')\r\n .addClass(`${this.cssPrefix}-colelement`, `${this.cssPrefix}-captionelement`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('a', builder => builder\r\n .attr('href', 'javascript:void(0)')\r\n .title(this.column.caption)\r\n .text(caption)\r\n .on('keydown', e => {\r\n const evt = e as KeyboardEvent;\r\n const isCtrlEnter = (evt.ctrlKey || evt.metaKey) && (evt.keyCode == 13 || evt.keyCode == 10)\r\n\r\n if (isCtrlEnter && this.isColumnActive()) {\r\n const clickEvent = document.createEvent ('MouseEvents');\r\n clickEvent.initEvent ('dblclick', true, true);\r\n this.element.dispatchEvent (clickEvent);\r\n evt.stopPropagation();\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n })\r\n )\r\n .addChild('input', builder => builder\r\n .hide()\r\n .value(this.column.caption)\r\n .on('blur keydown', (ev) => { \r\n let isEndEvent = false;\r\n let save = true;\r\n\r\n if (ev instanceof KeyboardEvent) {\r\n // Enter\r\n if (ev.keyCode === 13) {\r\n isEndEvent = true;\r\n //ESC\r\n } else if (ev.keyCode === 27) {\r\n isEndEvent = true;\r\n save = false;\r\n }\r\n \r\n } else if (ev instanceof FocusEvent) {\r\n isEndEvent = true;\r\n }\r\n\r\n if (isEndEvent) {\r\n\r\n const inputEl = (ev.target as HTMLInputElement);\r\n const aEl = inputEl.parentElement.querySelector('a') as HTMLAnchorElement;\r\n if (aEl) {\r\n aEl.style.removeProperty('display');\r\n inputEl.style.display = 'none';\r\n }\r\n if (save && this.column.caption !== inputEl.value) {\r\n this.column.caption = inputEl.value;\r\n \r\n this.fireColumnChanged();\r\n } else {\r\n inputEl.value = this.column.caption;\r\n }\r\n\r\n this.element.removeAttribute(eqDragManager.DRAG_DISABLED_ATTR);\r\n \r\n if (isFocused) {\r\n this.element.querySelector('a').focus();\r\n }\r\n }\r\n \r\n })\r\n )\r\n .toDOM();\r\n }\r\n\r\n protected renderSortingImage(): HTMLDivElement {\r\n const sortButtonCssClass = `${eqCssPrefix}-column-sortbutton`;\r\n let sortButtonDirectionCssClass = sortButtonCssClass;\r\n switch (this.column.sorting) {\r\n case SortDirection.Ascending:\r\n sortButtonDirectionCssClass = `${sortButtonCssClass}-asc`;\r\n break;\r\n case SortDirection.Descending:\r\n sortButtonDirectionCssClass = `${sortButtonCssClass}-desc`;\r\n break;\r\n }\r\n\r\n if (this.column.sorting == SortDirection.None) {\r\n return null\r\n }\r\n else {\r\n return domel('div')\r\n .addClass(`${this.cssPrefix}-colelement`, `${this.cssPrefix}-sortimage-placeholder`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', builder => builder\r\n .addClass(`${this.cssPrefix}-img-sorting`, sortButtonDirectionCssClass)\r\n .title(i18n.getText('ButtonSorting'))\r\n )\r\n\r\n .toDOM();\r\n }\r\n }\r\n\r\n public buttonSortingClickHandler(ev: Event, anchor: HTMLDivElement) {\r\n ev.stopPropagation();\r\n\r\n this.keepShowingButtons = true;\r\n const menu = this.getUIS() ? this.bar.sortMenu || this.bar.moveMenu : this.bar.moveMenu;\r\n menu.showMenu({\r\n anchor: anchor,\r\n selectedIds: null,\r\n itemSelectedCallback: (data, items) => {\r\n\r\n const strToSortDirection = (str: string) => {\r\n if (str == 'None') {\r\n return SortDirection.None;\r\n }\r\n else if (str == \"Ascending\") {\r\n return SortDirection.Ascending;\r\n }\r\n else if (str == \"Descending\") {\r\n return SortDirection.Descending;\r\n }\r\n };\r\n\r\n if (data.id == 'None' || data.id == \"Ascending\" || data.id == \"Descending\") {\r\n const query = this.bar.getQuery();\r\n this.column.sorting = strToSortDirection(data.id);\r\n this.column._sortIndex = query.getColumnSortIndex(this.column);\r\n\r\n this.fireColumnChanged();\r\n }\r\n else {\r\n this.bar.moveColumn(this.column, data.id);\r\n }\r\n },\r\n menuClosedCallback: () => { //called when menu is closed\r\n this.keepShowingButtons = false;\r\n if (!this.isMouseOverBlock) {\r\n this.leaveButtonBlock();\r\n }\r\n }\r\n });\r\n\r\n return false;\r\n }\r\n\r\n protected renderSortingButton(): HTMLDivElement {\r\n\r\n if (!this.isEditable()) {\r\n return null;\r\n }\r\n\r\n const builder = domel('div')\r\n .addClass(`${eqCssPrefix}-column-button`, `${eqCssPrefix}-column-sortbutton`, `${eqCssPrefix}-column-sortbutton-none`)\r\n .title(i18n.getText('ButtonSorting'))\r\n .attr('tabIndex', '0')\r\n .on('touchstart click', (ev) => this.buttonSortingClickHandler(ev, builder.toDOM()))\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}});\r\n\r\n return builder.toDOM();\r\n }\r\n\r\n public buttonDeleteClickHandler(ev: Event) {\r\n ev.stopPropagation();\r\n const query = this.bar.getQuery();\r\n query.removeColumn(this.column);\r\n query.fireColumnsChangedEvent(QueryChangeAction.Delete, this.column);\r\n return false;\r\n }\r\n\r\n protected renderDeleteButton(): HTMLDivElement {\r\n if (this.column.isReadOnly()) {\r\n return null;\r\n }\r\n\r\n return domel('div')\r\n .addClass(`${eqCssPrefix}-column-button`, `${eqCssPrefix}-column-button-delete`)\r\n .title(i18n.getText('CmdDelete'))\r\n .attr('tabIndex', '0')\r\n .on('touchstart click', (ev) => this.buttonDeleteClickHandler(ev))\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}})\r\n .toDOM();\r\n }\r\n protected getClassesToAdd(): string {\r\n let result = \"\";\r\n\r\n result += this.column.enabled ? '' : ` ${this.cssPrefix}-disabled`;\r\n if (this.column.enabled) {\r\n result += this.column.isReadOnly() ? ` ${this.cssPrefix}-readonly` : '';\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public buttonTypeClickHandler(ev: Event) {\r\n ev.stopPropagation();\r\n\r\n this.keepShowingButtons = true;\r\n this.changeColumnTypeHandler(ev);\r\n return false;\r\n }\r\n\r\n public buttonFormatClickHandler(ev: Event) {\r\n ev.stopPropagation();\r\n\r\n this.keepShowingButtons = true;\r\n this.changeFormatHandler(ev);\r\n return false;\r\n }\r\n\r\n public formatButtonIsShown(): boolean {\r\n return this.bar.options.allowDisplayFormatChange !== false && \r\n this.bar\r\n .getContext()\r\n .getModel()\r\n .getDisplayFormatsForType(this.column.getDataType()).length > 0;\r\n }\r\n\r\n protected changeFormatHandler(ev: Event) {\r\n const formats = this.bar\r\n .getContext()\r\n .getModel()\r\n .getDisplayFormatsForType(this.column.getDataType());\r\n\r\n let itemId = '{0:__default}';\r\n if (formats.filter(f => f.format == this.column.displayFormat).length > 0) {\r\n itemId = this.column.displayFormat;\r\n }\r\n\r\n this.formatsMenu.showMenu({\r\n anchor: ev.target as HTMLElement,\r\n selectedIds: itemId,\r\n itemSelectedCallback: (data, items) => {\r\n\r\n if (data.id != itemId) {\r\n if (data.id == '{0:__default}') {\r\n this.column.displayFormat = '';\r\n }\r\n else {\r\n this.column.displayFormat = data.id;\r\n }\r\n\r\n this.column.fireChangedEvent();\r\n }\r\n\r\n return false;\r\n },\r\n menuClosedCallback: () => { //called when menu is closed\r\n this.keepShowingButtons = false;\r\n if (!this.isMouseOverBlock) {\r\n this.element.dispatchEvent(createBrowserEvent('mouseleave'));\r\n }\r\n }\r\n });\r\n }\r\n\r\n protected renderColumnTypeButton(): HTMLDivElement {\r\n if (!this.isEditable() || this.bar.options.allowAggrColumns === false) {\r\n return null;\r\n }\r\n\r\n return domel('div')\r\n .addClass(`${eqCssPrefix}-column-button`, `${eqCssPrefix}-column-button-type`)\r\n .title(i18n.getText('ButtonToAggr'))\r\n .attr('tabIndex', '0')\r\n .on('touchstart click', (ev) => this.buttonTypeClickHandler(ev))\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}})\r\n .toDOM();\r\n }\r\n\r\n protected renderColumnFormatButton(): HTMLDivElement {\r\n if (!this.isEditable() || !this.formatButtonIsShown()) {\r\n return null;\r\n }\r\n\r\n return domel('div')\r\n .addClass(`${eqCssPrefix}-column-button`, `${eqCssPrefix}-column-button-format`)\r\n .title(i18n.getText('ButtonFormat'))\r\n .attr('tabIndex', '0')\r\n .on('touchstart click', (ev) => this.buttonFormatClickHandler(ev))\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click() } })\r\n .toDOM();\r\n }\r\n\r\n protected abstract changeColumnTypeHandler(ev: Event); \r\n\r\n protected getUIS() {\r\n return this.bar\r\n .getContext().getModel()\r\n .checkAttrProperty(this.column.expr.value, \"useInSorting\");\r\n }\r\n\r\n private onMouseClick(ev: Event) {\r\n this.bar.toggleColumnPicked(this.column);\r\n this.adjustButtonsVisibility();\r\n }\r\n\r\n private onMouseEnter(e: Event) {\r\n if (browserUtils.isMobileMode()) return;\r\n\r\n this.isMouseOverBlock = true;\r\n this.enterButtonBlock()\r\n e.stopPropagation();\r\n\r\n return false;\r\n }\r\n\r\n private onMouseLeave(e: Event) {\r\n if (browserUtils.isMobileMode()) return;\r\n\r\n this.isMouseOverBlock = false;\r\n this.leaveButtonBlock();\r\n e.stopPropagation();\r\n\r\n return false;\r\n }\r\n\r\n protected isColumnActive(): boolean {\r\n return this.element.classList.contains(\"active\");\r\n }\r\n\r\n public onShowButtonsMobile: () => void;\r\n public onHideButtonsMobile: () => void;\r\n\r\n protected hideButtons() {\r\n if (browserUtils.isMobileMode()) {\r\n if (this.onHideButtonsMobile) {\r\n this.onHideButtonsMobile()\r\n }\r\n }\r\n else {\r\n domel(this.element).data(\"show-buttons\", null);\r\n }\r\n }\r\n\r\n protected showButtons() {\r\n if (browserUtils.isMobileMode()) {\r\n if (this.onShowButtonsMobile) {\r\n this.onShowButtonsMobile()\r\n }\r\n }\r\n else {\r\n domel(this.element).data(\"show-buttons\", \"\");\r\n }\r\n }\r\n\r\n protected adjustButtonsVisibility() {\r\n if (this.bar.options.alwaysShowButtons \r\n || ((this.bar.options.accentActiveColumn || browserUtils.isMobileMode()) \r\n && this.isColumnActive())\r\n ) {\r\n \r\n this.showButtons();\r\n }\r\n else {\r\n this.hideButtons();\r\n }\r\n }\r\n\r\n protected enterButtonBlock() {\r\n this.showButtons();\r\n }\r\n\r\n protected leaveButtonBlock() {\r\n if (this.bar.options.alwaysShowButtons != true && (!this.isColumnActive() || this.bar.options.accentActiveColumn != true)) {\r\n this.hideButtons();\r\n }\r\n }\r\n\r\n protected createFunctionMenu() {\r\n const items = [];\r\n const funcs = this.bar.getContext().getModel().getAggrFunctions();\r\n let funcAllowed = true;\r\n\r\n let item = null;\r\n\r\n const colDataType = this.column.getDataType();\r\n\r\n let funcCaption;\r\n\r\n for (const func of funcs) {\r\n if (!func) continue;\r\n\r\n const toInclude = func.getAppliedTypesOrDefault().indexOf(colDataType) >= 0;\r\n\r\n if (this.column.expr.func === func.id && !toInclude) {\r\n funcAllowed = false;\r\n }\r\n\r\n if (toInclude) {\r\n funcCaption = this.bar.getContext().getModel()\r\n .getAggrFunctionCaption(func.id);\r\n\r\n item = {\r\n id: func.id,\r\n text: funcCaption\r\n };\r\n\r\n items.push(item);\r\n }\r\n }\r\n\r\n\r\n if (!funcAllowed) {\r\n this.column.expr.func = items[0].id;\r\n }\r\n \r\n //Add \"Custom Expression\" menu\r\n const columnsPanel = this.bar;\r\n if (columnsPanel.areCustomExpressionsAllowed()) {\r\n item = {\r\n id: 'CustomSqlDivider',\r\n text: '---'\r\n };\r\n\r\n items.push(item);\r\n\r\n funcCaption = i18n.getText('CustomExpression');\r\n item = {\r\n id: 'CUSTOMSQL',\r\n text: funcCaption\r\n };\r\n\r\n items.push(item);\r\n }\r\n \r\n\r\n let menuId = this.element.id;\r\n if (menuId) {\r\n menuId += '-FunctionsMenu';\r\n }\r\n\r\n const menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n domWriteItemsId: true //this.panel.options.domWriteItemsId\r\n };\r\n \r\n this.functionMenu = new PopupMenu(menuOptions);\r\n }\r\n\r\n protected createFormatsMenu() {\r\n if (this.bar.options.allowDisplayFormatChange == false) return;\r\n\r\n let menuId = this.column.id;\r\n if (menuId) {\r\n menuId += '-FormatsMenu';\r\n }\r\n\r\n const items = this.getFormatsMenuItems();\r\n const menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n showSelected: true,\r\n domWriteItemsId: true //this.panel.options.domWriteItemsId\r\n };\r\n\r\n this.formatsMenu = new PopupMenu(menuOptions);\r\n }\r\n\r\n private getFormatsMenuItems(): MenuItem[] {\r\n\r\n const formats = this.bar.getContext().getModel()\r\n .getDisplayFormatsForType(this.column.getDataType());\r\n\r\n return [{ id: '{0:__default}', text: \"Default\" }]\r\n .concat(formats.map(format => ({ id: format.format, text: i18n.getText(\"DisplayFormats\", format.name) || format.name })));\r\n }\r\n}","\r\nimport { EntityAttr, ExprTag } from '@easyquery/core';\r\nimport { createBrowserEvent } from '@easydata/ui';\r\n\r\nimport { ColumnRendererCB } from './column_renderer_cb';\r\n\r\nexport class AttrColumnRendererCB extends ColumnRendererCB {\r\n protected getClassesToAdd(): string {\r\n return `${super.getClassesToAdd()} ${this.cssPrefix}-row ${this.cssPrefix}-row-column-entattr`;\r\n } \r\n \r\n protected baseExpressionItemSelectedCallback(data, item): boolean {\r\n const attrid = data.id;\r\n const context = this.bar.getContext();\r\n var attr = context.getModel().getAttributeById(attrid);\r\n this.updateBaseAttr(attr);\r\n this.column.caption = context.getDefaultColumnCaption(this.column);\r\n\r\n this.fireColumnChanged();\r\n return false;\r\n }\r\n\r\n protected updateBaseAttr(attr : EntityAttr) : void {\r\n this.column.expr.setValue(attr.id, true);\r\n this.column.expr.baseAttrId = attr.id;\r\n this.column.expr.dataType = attr.dataType;\r\n }\r\n\r\n protected getUIS(): boolean {\r\n const arg = this.column.expr.args[0];\r\n if (arg) {\r\n const model = this.bar.getContext().getModel();\r\n return model.checkAttrProperty(arg.value, \"useInSorting\");\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n \r\n protected changeTypeToCustomSql() {\r\n const query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.CustomSql);\r\n this.fireColumnChanged();\r\n }\r\n\r\n protected changeTypeToAggr(funcId: string) {\r\n const query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.AggregateFunction, { funcId: funcId});\r\n this.fireColumnChanged();\r\n }\r\n\r\n protected changeColumnTypeHandler(ev: Event) {\r\n this.functionMenu.showMenu({\r\n anchor: ev.target as HTMLElement,\r\n selectedIds: null,\r\n itemSelectedCallback: (data, items) => {\r\n\r\n if (data.id == \"CUSTOMSQL\") {\r\n this.changeTypeToCustomSql();\r\n }\r\n else {\r\n this.changeTypeToAggr(data.id);\r\n }\r\n\r\n return false;\r\n },\r\n menuClosedCallback: () => { //called when menu is closed\r\n this.keepShowingButtons = false;\r\n if (!this.isMouseOverBlock) {\r\n this.element.dispatchEvent(createBrowserEvent('mouseleave'));\r\n }\r\n }\r\n });\r\n }\r\n}","import { i18n } from '@easydata/core';\r\nimport { ExprTag, EntityAttr } from '@easyquery/core';\r\n\r\nimport { AttrColumnRendererCB } from './attr_column_renderer_cb';\r\n\r\nexport class AggrFuncColumnRendererCB extends AttrColumnRendererCB { \r\n protected getClassesToAdd(): string {\r\n return `${super.getClassesToAdd()} ${this.cssPrefix}-row ${this.cssPrefix}-row-column-aggr`;\r\n }\r\n\r\n protected renderColumnTypeButton() {\r\n const button = super.renderColumnTypeButton();\r\n if (button) {\r\n button.classList.add('aggregated');\r\n button.title = i18n.getText('ButtonToSimple');\r\n }\r\n return button;\r\n }\r\n\r\n protected updateBaseAttr(attr : EntityAttr) : void {\r\n this.column.expr.args[0].setValue(attr.id, true);\r\n this.column.expr.baseAttrId = attr.id;\r\n }\r\n \r\n public changeTypeToSimple() {\r\n const query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.EntityAttribute);\r\n this.fireColumnChanged(); \r\n }\r\n\r\n protected changeColumnTypeHandler(ev: Event) {\r\n this.changeTypeToSimple();\r\n }\r\n}","\r\nimport { i18n, ExprTag } from '@easyquery/core';\r\n\r\nimport { ColumnRendererCB } from './column_renderer_cb';\r\n\r\nexport class EditableColumnRendererCB extends ColumnRendererCB {\r\n protected getClassesToAdd(): string {\r\n return `${this.cssPrefix}-row ${this.cssPrefix}-row-column-entattr` + super.getClassesToAdd();\r\n }\r\n\r\n protected renderColumnTypeButton() {\r\n const button = super.renderColumnTypeButton();\r\n if (button) {\r\n button.classList.add('aggregated');\r\n button.title = i18n.getText('ButtonToSimple');\r\n }\r\n return button;\r\n }\r\n \r\n public changeTypeToSimple() {\r\n const query = this.column.getQuery();\r\n query.changeColumnType(this.column, ExprTag.EntityAttribute);\r\n this.fireColumnChanged();\r\n }\r\n \r\n protected getColumnValue() : string {\r\n return '';\r\n }\r\n\r\n protected setColumnValue(value : string) : void {\r\n }\r\n\r\n protected getUIS() {\r\n return true;\r\n }\r\n\r\n protected changeColumnTypeHandler(ev: Event) {\r\n this.changeTypeToSimple();\r\n }\r\n}\r\n\r\nexport class CustomSqlColumnRendererCB extends EditableColumnRendererCB {\r\n protected get columnEnabled(): boolean {\r\n return this.bar.areCustomExpressionsAllowed() ? this.column.enabled : false;\r\n }\r\n\r\n protected set columnEnabled(value: boolean) {\r\n if (this.bar.areCustomExpressionsAllowed()) {\r\n this.column.enabled = value;\r\n }\r\n else {\r\n this.column.enabled = false;\r\n }\r\n }\r\n\r\n protected getColumnValue() : string {\r\n return this.column.expr.sql;\r\n }\r\n\r\n protected setColumnValue(value : string) : void {\r\n this.column.expr.sql = value;\r\n }\r\n\r\n protected getDefaultValue() {\r\n return this.column.expr.sql;\r\n }\r\n}\r\n\r\nexport class ConstColumnRendererCB extends EditableColumnRendererCB {\r\n protected getColumnValue() : string {\r\n return this.column.expr.value;\r\n }\r\n\r\n protected setColumnValue(value : string) : void {\r\n this.column.expr.setValue(value);\r\n }\r\n \r\n protected getDefaultValue() {\r\n return this.column.expr.value;\r\n }\r\n}","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\n\r\nimport {\r\n DataKind, ExprTag, EntityAttr, EqContext, \r\n Query, QueryColumn, SortDirection,\r\n QueryChangePart, QueryChangeAction,\r\n Widget,WidgetGroup, QueryChangeEventData\r\n} from '@easyquery/core';\r\n\r\nimport { \r\n eqDragManager, DropEffect, \r\n getElementAbsolutePos, domel\r\n } from '@easydata/ui';\r\n\r\nimport { PopupMenu, PopupMenuOptions } from '../utils/popup_menu';\r\nimport { eqCssPrefix} from '../utils/utils';\r\nimport { browserUtils } from '../utils/browser_utils';\r\n\r\nimport { ColumnsBarOptions } from './widget_options';\r\nimport { ColumnRendererCB } from './renderers/columnsbar/column_renderer_cb';\r\nimport { AggrFuncColumnRendererCB } from './renderers/columnsbar/aggrfunc_column_renderer_cb';\r\nimport { AttrColumnRendererCB } from './renderers/columnsbar/attr_column_renderer_cb';\r\nimport { ConstColumnRendererCB, CustomSqlColumnRendererCB } from './renderers/columnsbar/editable_column_renderer_cb';\r\n\r\nexport class ColumnsBar extends Widget {\r\n\r\n private static globalCounter: number = 0;\r\n\r\n public options: ColumnsBarOptions = {\r\n isSubQuery: false,\r\n activeColumn: null,\r\n showAddRow: true,\r\n showHeader: true,\r\n showColumnTitles: true,\r\n allowAggrColumns: true,\r\n allowDuplicates: true,\r\n allowCustomExpressions: false,\r\n allowSorting: true,\r\n alwaysShowButtons: false,\r\n accentActiveColumn: true,\r\n allowDragDrop: true,\r\n menuOptions: {\r\n showSearchBoxAfter: 30,\r\n searchBoxAutoFocus: true,\r\n activateOnMouseOver: true,\r\n adjustHeight: true,\r\n itemRenderedCallback: null\r\n },\r\n attrPlacement: 0,\r\n sortEntities: false,\r\n columnRenderedCallback: null,\r\n\r\n customExpressionText: 0, \r\n };\r\n\r\n private columnsBlock: HTMLDivElement;\r\n private addRowButton: HTMLDivElement;\r\n\r\n private columnButtonsBlockMobile: HTMLDivElement;\r\n private columnButtonsBlockMobileArrow: HTMLElement;\r\n private buttonsBlockSortingButton: HTMLDivElement;\r\n private buttonsBlockTypeButton: HTMLDivElement;\r\n private buttonsBlockFormatButton: HTMLDivElement;\r\n private buttonsBlockDeleteButton: HTMLDivElement;\r\n\r\n private entitiesMenu: PopupMenu;\r\n\r\n public sortMenu: PopupMenu;\r\n public moveMenu: PopupMenu;\r\n\r\n private queryEventCallbackId?: string;\r\n\r\n protected get cssPrefix(): string {\r\n return \"eqjs-cb\";\r\n }\r\n\r\n\r\n private customQuery?: Query;\r\n\r\n constructor(slot: HTMLElement, customQuery?: Query) {\r\n\r\n super(slot);\r\n\r\n domel(this.slot)\r\n .addClass(`${this.cssPrefix}-panel`)\r\n .addClass(browserUtils.getMobileCssClass());\r\n\r\n this.group = WidgetGroup.Query;\r\n\r\n this.customQuery = customQuery;\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'columnsBar';\r\n }\r\n\r\n public init(context: EqContext, options?: ColumnsBarOptions) {\r\n super.init(context, options);\r\n\r\n this.setOptions(options);\r\n\r\n if (options.attrElementFormat) {\r\n this.context.options.attributeFormat = options.attrElementFormat;\r\n }\r\n\r\n if (options.titleElementFormat) {\r\n this.context.options.columnTitleFormat = options.titleElementFormat;\r\n }\r\n\r\n this.detachQueryObserver();\r\n this.attachQueryObserver();\r\n \r\n eqDragManager.removeDropContainer(this.slot);\r\n if (this.options.allowDragDrop) {\r\n eqDragManager.registerDropContainer({\r\n element: this.slot,\r\n scopes: [\"entityAttrSort\"],\r\n onDragEnter: (container, ev) => {\r\n this.showLandingSlot(ev.pageX, ev.pageY);\r\n },\r\n onDragOver: (container, ev) => {\r\n this.showLandingSlot(ev.pageX, ev.pageY);\r\n },\r\n onDragLeave: (container, ev) => {\r\n ev.dropEffect = DropEffect.Forbid;\r\n this.hideLandingSlot();\r\n },\r\n onDrop: (container, ev) => {\r\n if (this.landingIndex >= 0) {\r\n const query = this.getQuery();\r\n const columns = query.getColumns();\r\n const index = columns.indexOf(ev.data.column);\r\n\r\n this.moveColumnCore(index, this.landingIndex);\r\n }\r\n else {\r\n ev.item.element.removeAttribute('style');\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n private attachQueryObserver() {\r\n const query = this.getQuery();\r\n\r\n this.queryEventCallbackId = query.addChangedCallback(event => {\r\n //if something has changed, and that change is related to columns\r\n const edata = event.data as QueryChangeEventData;\r\n if (!edata || (edata.part != QueryChangePart.Columns \r\n && edata.part != QueryChangePart.Aggregation \r\n && edata.part != QueryChangePart.All)) {\r\n return;\r\n }\r\n\r\n const focusedBefore = document.activeElement;\r\n const isFocusInside = this.slot.contains(focusedBefore) || focusedBefore == document.body;\r\n\r\n switch (edata.action) {\r\n case QueryChangeAction.Modify: {\r\n \r\n const columns = edata.changee as QueryColumn | QueryColumn[];\r\n\r\n const modifyColumn = (column: QueryColumn) => {\r\n\r\n const colEl = this.columnsBlock.querySelector(`div[data-id='${column.id}']`);\r\n\r\n if (colEl) {\r\n const newEl = this.renderColumn(column, colEl as HTMLDivElement);\r\n\r\n if (isFocusInside) {\r\n const focusElem = newEl.querySelector('a');\r\n if (focusElem) {\r\n focusElem.focus();\r\n }\r\n }\r\n\r\n }\r\n }\r\n \r\n if (Array.isArray(columns)) {\r\n columns.forEach((col) => modifyColumn(col));\r\n }\r\n else {\r\n modifyColumn(columns);\r\n }\r\n\r\n break;\r\n }\r\n case QueryChangeAction.Add: {\r\n const columns = edata.changee as QueryColumn | QueryColumn[];\r\n\r\n const addColumn = (column: QueryColumn) => {\r\n const index = query.getColumns().indexOf(column);\r\n this.addColumnElement(column, index);\r\n }\r\n\r\n if (Array.isArray(columns)) {\r\n columns.forEach((col) => addColumn(col));\r\n }\r\n else {\r\n addColumn(columns);\r\n }\r\n \r\n break;\r\n }\r\n case QueryChangeAction.Delete: {\r\n const columns = edata.changee as QueryColumn | QueryColumn[];\r\n const deleteColumn = (column: QueryColumn) => {\r\n const colEl = this.columnsBlock.querySelector(`div[data-id='${column.id}']`);\r\n if (colEl) {\r\n const next = colEl.nextSibling;\r\n const prev = colEl.previousSibling;\r\n\r\n this.columnsBlock.removeChild(colEl);\r\n\r\n if (isFocusInside) {\r\n const focusCond = next || prev || this.addRowButton;\r\n const focusElem =(focusCond as HTMLElement).querySelector('a');\r\n if (focusElem) {\r\n focusElem.focus();\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (Array.isArray(columns)) {\r\n columns.forEach((col) => deleteColumn(col));\r\n }\r\n else {\r\n deleteColumn(columns);\r\n }\r\n \r\n break;\r\n }\r\n default:\r\n this.refresh();\r\n break;\r\n }\r\n });\r\n }\r\n\r\n public getQuery() : Query {\r\n return this.customQuery \r\n ? this.customQuery \r\n : this.getContext().getQuery();\r\n }\r\n\r\n protected destroyCore() {\r\n eqDragManager.removeDropContainer(this.slot);\r\n this.detachQueryObserver();\r\n\r\n this.slot.innerHTML = '';\r\n }\r\n\r\n private detachQueryObserver() {\r\n if (this.queryEventCallbackId) {\r\n const query = this.getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n }\r\n\r\n private setOptions(options?: ColumnsBarOptions) {\r\n this.options = dataUtils.assignDeep(this.options, options);\r\n\r\n this.getContext().options.allowCustomExpressions = options.allowCustomExpressions;\r\n }\r\n\r\n private landingSlot: HTMLDivElement \r\n = domel('div')\r\n .addClass(`${eqCssPrefix}-highlight`)\r\n .toDOM();\r\n\r\n private landingIndex: number = -1;\r\n\r\n public showLandingSlot(pageX: number, pageY: number) {\r\n\r\n const elements = this.columnsBlock.querySelectorAll(`[class*=${this.cssPrefix}-row]`) as NodeListOf<HTMLElement>;\r\n const columnSlots: HTMLElement[] = [];\r\n for(let i = 0; i < elements.length; i++) {\r\n if (elements[i].style.display !== 'none') {\r\n columnSlots.push(elements[i]);\r\n }\r\n }\r\n\r\n if (columnSlots.length === 0) {\r\n this.landingIndex = 0;\r\n return;\r\n }\r\n\r\n const landingPos = getElementAbsolutePos(this.landingSlot);\r\n if (pageX >= landingPos.x && pageX <= landingPos.x + this.landingSlot.offsetWidth\r\n && pageY >= landingPos.y && pageY <= landingPos.y + this.landingSlot.offsetHeight ) {\r\n return;\r\n }\r\n\r\n let newLandingIndex = this.landingIndex;\r\n for(let i = 0; i < columnSlots.length; i++) {\r\n const colSlot = columnSlots[i];\r\n\r\n const absPos = getElementAbsolutePos(colSlot);\r\n const colWidth = colSlot.offsetWidth;\r\n const colHeight = colSlot.offsetHeight;\r\n\r\n const paddingWidth = 0.2 * colWidth;\r\n const paddingHeight = 2;\r\n\r\n if (pageX >= absPos.x + paddingWidth && pageX <= absPos.x + colWidth - paddingWidth\r\n && pageY >= absPos.y + paddingHeight && pageY <= absPos.y + colHeight - paddingHeight) {\r\n\r\n if (pageX > landingPos.x)\r\n newLandingIndex = i + 1;\r\n else \r\n newLandingIndex = i;\r\n \r\n break;\r\n }\r\n }\r\n\r\n if (newLandingIndex != this.landingIndex || this.landingSlot.parentElement) {\r\n this.landingIndex = newLandingIndex;\r\n\r\n if (this.landingIndex <= 0) {\r\n this.columnsBlock.insertBefore(this.landingSlot, columnSlots[0]);\r\n }\r\n if (this.landingIndex < columnSlots.length) {\r\n this.columnsBlock.insertBefore(this.landingSlot, columnSlots[this.landingIndex]);\r\n }\r\n else {\r\n this.columnsBlock.appendChild(this.landingSlot);\r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n public hideLandingSlot() {\r\n this.landingIndex = -1;\r\n if (this.landingSlot.parentElement) {\r\n this.landingSlot.parentElement.removeChild(this.landingSlot);\r\n }\r\n }\r\n\r\n protected onProcessStartCore() {\r\n\r\n }\r\n\r\n protected onProcessEndCore() {\r\n\r\n }\r\n\r\n protected refreshCore() {\r\n this.clear();\r\n this.render();\r\n }\r\n\r\n private clear() {\r\n // if (this.addRowButton) {\r\n // this.addRowButton.innerHTML = \"\";\r\n // this.addRowButton.className = \"\";\r\n // }\r\n // this.columnsBlock.innerHTML = \"\";\r\n\r\n this.slot.innerHTML = '';\r\n }\r\n\r\n private renderAddRowButton() {\r\n domel(this.addRowButton)\r\n .addClass(`${eqCssPrefix}-addrow`, `${this.cssPrefix}-addrow`, `${eqCssPrefix}-addrow-empty`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .title(i18n.getText('CmdClickToAddColumn'))\r\n .addChild('a', builder => builder\r\n .attr('href', 'javascript:void(0)')\r\n .on('click', (e) => {\r\n e.preventDefault();\r\n \r\n this.showEntitiesMenu({\r\n anchor: e.target, \r\n selectedIds: null, \r\n itemSelectedCallback: (data, items) => {\r\n const attrid = data.id;\r\n this.addNewColumn(attrid);\r\n return false;\r\n }\r\n });\r\n })\r\n )\r\n\r\n if (browserUtils.isMobileMode()) {\r\n domel(this.columnsBlock)\r\n .addChildElement(this.addRowButton);\r\n }\r\n }\r\n\r\n private render() {\r\n this.createEntitiesMenu();\r\n\r\n if (this.options.allowSorting) {\r\n this.createSortMenu();\r\n } \r\n \r\n this.createMoveMenu();\r\n\r\n\r\n this.columnsBlock = \r\n domel('div')\r\n .addClass(`${this.cssPrefix}-columns`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .toDOM();\r\n \r\n if (this.options.showAddRow) {\r\n this.addRowButton = \r\n domel('div')\r\n .toDOM();\r\n \r\n if (browserUtils.isMobileMode()) {\r\n domel(this.columnsBlock)\r\n .addChildElement(this.addRowButton);\r\n }\r\n else {\r\n domel(this.slot)\r\n .addChildElement(this.addRowButton);\r\n }\r\n\r\n this.renderAddRowButton();\r\n }\r\n\r\n domel(this.slot)\r\n .addChildElement(this.columnsBlock)\r\n .addChildElement(this.renderColumnButtonsBlockMobile());\r\n\r\n const query = this.getQuery();\r\n const columns = query.getColumns();\r\n \r\n columns.forEach((column, index) => {\r\n const slot = this.renderColumn(column);\r\n this.columnsBlock.appendChild(slot);\r\n });\r\n }\r\n\r\n private currentActiveColumn: QueryColumn;\r\n private currentColumnRenderer: ColumnRendererCB;\r\n \r\n private renderColumnButtonsBlockMobile() {\r\n this.columnButtonsBlockMobileArrow = domel('i').toDOM();\r\n\r\n this.columnButtonsBlockMobile = domel('div')\r\n .addClass(`${this.cssPrefix}-column-buttonsBlock`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.columnButtonsBlockMobileArrow)\r\n .hide()\r\n .toDOM();\r\n\r\n this.buttonsBlockSortingButton = domel('div', this.columnButtonsBlockMobile)\r\n .addClass(`${this.cssPrefix}-column-button`, `${this.cssPrefix}-column-sortbutton-none`)\r\n .toDOM();\r\n domel(this.buttonsBlockSortingButton)\r\n .on('touchstart click', (ev) => {\r\n ev.stopPropagation();\r\n this.currentColumnRenderer.buttonSortingClickHandler.call(this.currentColumnRenderer, ev, this.buttonsBlockSortingButton);\r\n this.toggleColumnPicked(null);\r\n this.hideColumnButtonsMobile();\r\n\r\n return false;\r\n });\r\n\r\n this.buttonsBlockTypeButton = domel('div', this.columnButtonsBlockMobile)\r\n .addClass(`${this.cssPrefix}-column-button`, `${this.cssPrefix}-column-button-type`)\r\n .on('touchstart click', (ev) => {\r\n ev.stopPropagation();\r\n this.currentColumnRenderer.buttonTypeClickHandler.call(this.currentColumnRenderer, ev);\r\n this.toggleColumnPicked(null);\r\n this.hideColumnButtonsMobile();\r\n\r\n return false;\r\n })\r\n .toDOM()\r\n\r\n this.buttonsBlockFormatButton = domel('div', this.columnButtonsBlockMobile)\r\n .addClass(`${this.cssPrefix}-column-button`, `${this.cssPrefix}-column-button-format`)\r\n .on('touchstart click', (ev) => {\r\n ev.stopPropagation();\r\n this.currentColumnRenderer.buttonFormatClickHandler.call(this.currentColumnRenderer, ev);\r\n this.toggleColumnPicked(null);\r\n this.hideColumnButtonsMobile();\r\n\r\n return false;\r\n })\r\n .toDOM()\r\n \r\n this.buttonsBlockDeleteButton = domel('div', this.columnButtonsBlockMobile)\r\n .addClass(`${this.cssPrefix}-column-button`, `${this.cssPrefix}-column-button-delete`)\r\n .on('touchstart click', (ev) => {\r\n ev.stopPropagation();\r\n\r\n this.currentColumnRenderer.buttonDeleteClickHandler.call(this.currentColumnRenderer, ev);\r\n this.toggleColumnPicked(null);\r\n this.hideColumnButtonsMobile();\r\n\r\n return false;\r\n })\r\n .toDOM()\r\n\r\n\r\n domel('div', this.columnButtonsBlockMobile)\r\n .addClass(`${this.cssPrefix}-column-button-close-block`)\r\n .on('touchstart click', () => {\r\n this.toggleColumnPicked(null);\r\n this.hideColumnButtonsMobile();\r\n })\r\n\r\n return this.columnButtonsBlockMobile;\r\n }\r\n\r\n private showColumnButtonsMobile(column: QueryColumn, columnRenderer: ColumnRendererCB, columnElement: HTMLDivElement) {\r\n this.currentActiveColumn = column;\r\n this.currentColumnRenderer = columnRenderer;\r\n\r\n //calculate coordinates\r\n const rect = columnElement.getBoundingClientRect();\r\n const top = columnElement.offsetTop;\r\n const left = columnElement.offsetLeft;\r\n \r\n domel(this.columnButtonsBlockMobileArrow)\r\n .setStyle('left', (left + rect.width/2).toString() + 'px');\r\n\r\n if (rect.top > 100) {\r\n domel(this.columnButtonsBlockMobile)\r\n .removeClass('show-below')\r\n .setStyle('top', (top - rect.height).toString() + 'px');\r\n }\r\n else {\r\n domel(this.columnButtonsBlockMobile)\r\n .addClass('show-below')\r\n .setStyle('top', (top + rect.height).toString() + 'px')\r\n }\r\n\r\n\r\n //show/hide separate buttons\r\n if (column.enabled && !column.isReadOnly()) {\r\n domel(this.buttonsBlockSortingButton).show();\r\n domel(this.buttonsBlockTypeButton).show();\r\n if (columnRenderer.formatButtonIsShown()) {\r\n domel(this.buttonsBlockFormatButton).show();\r\n }\r\n else {\r\n domel(this.buttonsBlockFormatButton).hide();\r\n }\r\n }\r\n else {\r\n domel(this.buttonsBlockSortingButton).hide();\r\n domel(this.buttonsBlockTypeButton).hide();\r\n }\r\n\r\n //show\r\n if (column.isReadOnly()) {\r\n domel(this.columnButtonsBlockMobile).hide();\r\n }\r\n else {\r\n domel(this.columnButtonsBlockMobile).show();\r\n }\r\n }\r\n\r\n private hideColumnButtonsMobile() {\r\n domel(this.columnButtonsBlockMobile).hide();\r\n }\r\n\r\n private renderColumn(column: QueryColumn, elem?: HTMLDivElement): HTMLDivElement | null{\r\n const renderer = this.getColumnRenderer(column, elem);\r\n if (renderer) {\r\n const columnSlot = renderer.render();\r\n renderer.onShowButtonsMobile = () => {\r\n this.showColumnButtonsMobile(column, renderer, columnSlot);\r\n } \r\n\r\n renderer.onHideButtonsMobile = () => {\r\n this.hideColumnButtonsMobile();\r\n } \r\n\r\n return columnSlot;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n \r\n private getColumnRenderer(column: QueryColumn, slot?: HTMLDivElement): ColumnRendererCB | null {\r\n switch (column.expr.tag) {\r\n case ExprTag.Constant:\r\n return new ConstColumnRendererCB(this, column, slot);\r\n case ExprTag.AggregateFunction:\r\n return new AggrFuncColumnRendererCB(this, column, slot);\r\n case ExprTag.CustomSql:\r\n return new CustomSqlColumnRendererCB(this, column, slot);\r\n default:\r\n return new AttrColumnRendererCB(this, column, slot);\r\n } \r\n\r\n return null;\r\n }\r\n\r\n public addNewColumn(attrs: string, index?: number): QueryColumn\r\n public addNewColumn(attrs: string[], index?: number): QueryColumn[]\r\n public addNewColumn(attrs: string | string[], index?: number): QueryColumn | QueryColumn[] {\r\n const model = this.getContext().getModel();\r\n const query = this.getQuery();\r\n\r\n if (Array.isArray(attrs)) {\r\n let col : QueryColumn = null;\r\n let cols : QueryColumn[] = [];\r\n for (let i = 0; i < attrs.length; i++) {\r\n col = query.addColumn({\r\n attributeId: attrs[i],\r\n index: index\r\n }, true)\r\n if (col) {\r\n cols.push(col);\r\n }\r\n }\r\n\r\n return cols;\r\n }\r\n else {\r\n const col = query.addColumn({\r\n attributeId: attrs,\r\n index: index\r\n });\r\n\r\n return col;\r\n }\r\n }\r\n\r\n public toggleColumnPicked(column: QueryColumn) {\r\n let el: HTMLElement;\r\n let isActive: boolean;\r\n if (column) {\r\n el = this.columnsBlock.querySelector(`div[data-id=${column.id}]`);\r\n if (el) {\r\n isActive = el.classList.contains('active');\r\n }\r\n }\r\n\r\n //clear 'active' in all rows\r\n const rows = this.columnsBlock.querySelectorAll(`.${this.cssPrefix}-row`);\r\n for(let i = 0; i < rows.length; i++) {\r\n const row = rows[i] as HTMLElement;\r\n domel(row)\r\n .removeClass('active')\r\n .data(\"show-buttons\", null)\r\n }\r\n\r\n if (el && !isActive) {\r\n domel(el)\r\n .addClass('active')\r\n .data(\"show-buttons\", \"\")\r\n }\r\n }\r\n\r\n //adds one column to the bar on the specified position\r\n private addColumnElement(column: QueryColumn, index: number) {\r\n const rows = this.columnsBlock.querySelectorAll(`[class*=${this.cssPrefix}-row]`);\r\n\r\n const newColBlock = this.renderColumn(column);\r\n if (rows.length > 0) {\r\n if (index < rows.length - 1) {\r\n this.columnsBlock.insertBefore(newColBlock, rows[index]);\r\n }\r\n else {\r\n this.columnsBlock.appendChild(newColBlock);\r\n }\r\n }\r\n else {\r\n this.columnsBlock.appendChild(newColBlock);\r\n }\r\n\r\n if (this.options.columnRenderedCallback) {\r\n this.options.columnRenderedCallback(newColBlock);\r\n }\r\n }\r\n\r\n private checkColumnsArray(cols: QueryColumn[]): QueryColumn[] {\r\n let i = 0, len = cols.length;\r\n const result = [];\r\n for (let i = 0; i < len; i++) {\r\n if (this.checkColumn(cols[i]))\r\n result.push(cols[i]);\r\n }\r\n return result;\r\n }\r\n\r\n private checkColumn(col: QueryColumn) {\r\n if (!this.options.allowDuplicates) {\r\n const query = this.getQuery();\r\n const columns = query.getColumns();\r\n \r\n const colJson = JSON.stringify(col.expr);\r\n for (let i = 0; i < columns.length; i++) {\r\n const qcolJson = JSON.stringify(columns[i].expr);\r\n if (qcolJson === colJson) {\r\n return null;\r\n }\r\n }\r\n }\r\n return col;\r\n }\r\n\r\n public getColumnsBlock(): HTMLElement {\r\n return this.columnsBlock;\r\n }\r\n\r\n public showEntitiesMenu(menuOptions) {\r\n this.entitiesMenu && this.entitiesMenu.showMenu(menuOptions);\r\n }\r\n\r\n private createEntitiesMenu() {\r\n const model = this.getContext().getModel();\r\n if (!model || model.isEmpty()) return null;\r\n\r\n let menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-EntitiesMenu';\r\n }\r\n\r\n const entitiesList = model.getEntitiesTree({ addUIC: false, addUIR: true, addUIS: false, attrPlacement: this.options.attrPlacement, sortEntities: this.options.sortEntities });\r\n const options: PopupMenuOptions = { items: entitiesList, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId }\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.entitiesMenu = new PopupMenu(options);\r\n }\r\n\r\n private sortMenuList = [\r\n { id: 'None', text: i18n.getText('CmdNotSorted') },\r\n { id: 'Ascending', text: i18n.getText('CmdAscending') },\r\n { id: 'Descending', text: i18n.getText('CmdDescending') },\r\n { id: '---', text: '---' }\r\n ];\r\n\r\n private moveMenuList = [\r\n { id: 'MoveTop', text: i18n.getText('CmdMoveToFirst') },\r\n { id: 'MoveUp', text: i18n.getText('CmdMoveToPrev') },\r\n { id: 'MoveDown', text: i18n.getText('CmdMoveToNext') },\r\n { id: 'MoveBottom', text: i18n.getText('CmdMoveToLast') }\r\n ];\r\n\r\n\r\n private createSortMenu() {\r\n const model = this.getContext().getModel();\r\n if (!model || model.isEmpty()) return null;\r\n\r\n let menuId = this.slot.id\r\n if (menuId) {\r\n menuId += '-SortMenu';\r\n }\r\n\r\n const items = this.sortMenuList.concat(this.moveMenuList);\r\n const menuOptions: any = { \"items\": items, id: menuId, domWriteItemsId: this.options.domWriteItemsId };\r\n\r\n dataUtils.assign(menuOptions, this.options.menuOptions);\r\n\r\n menuOptions.searchBoxAlwaysShown = false;\r\n\r\n this.sortMenu = new PopupMenu(menuOptions);\r\n }\r\n\r\n private createMoveMenu() {\r\n const model = this.getContext().getModel();\r\n if (!model || model.isEmpty()) return null;\r\n\r\n let menuId = this.slot.id\r\n if (menuId) {\r\n menuId += '-MoveMenu';\r\n }\r\n\r\n const items = this.moveMenuList;\r\n const menuOptions:any = { \"items\": items, id: menuId, domWriteItemsId: this.options.domWriteItemsId };\r\n\r\n dataUtils.assign(menuOptions, this.options.menuOptions);\r\n\r\n this.moveMenu = new PopupMenu(menuOptions);\r\n\r\n menuOptions.searchBoxAlwaysShown = false;\r\n }\r\n\r\n public moveColumn(column: QueryColumn, direction: string) {\r\n const query = this.getQuery();\r\n const columns = query.getColumns();\r\n const index = columns.indexOf(column);\r\n\r\n if (index >= 0) {\r\n switch (direction) {\r\n case 'MoveTop':\r\n if (index == 0) {\r\n return;\r\n }\r\n this.moveColumnCore(index, 0); \r\n break;\r\n case 'MoveUp':\r\n if (index == 0) {\r\n return;\r\n }\r\n this.moveColumnCore(index, index-1); \r\n break;\r\n case 'MoveDown':\r\n if (index == columns.length-1) {\r\n return;\r\n }\r\n this.moveColumnCore(index, index+1); \r\n break;\r\n case 'MoveBottom':\r\n if (index == columns.length-1) {\r\n return;\r\n }\r\n this.moveColumnCore(index, columns.length-1); \r\n break;\r\n };\r\n }\r\n }\r\n\r\n private moveColumnCore(index1: number, index2: number) {\r\n const query = this.getQuery();\r\n if (!query) return;\r\n\r\n const rows = this.columnsBlock.querySelectorAll(`[class*=${this.cssPrefix}-row]`);\r\n const colToMove = rows[index1];\r\n \r\n if (index2 <= 0) {\r\n this.columnsBlock.insertBefore(colToMove, this.columnsBlock[0]);\r\n }\r\n else if (index2 < rows.length) {\r\n this.columnsBlock.insertBefore(colToMove, rows[index2]);\r\n }\r\n else {\r\n this.columnsBlock.appendChild(colToMove);\r\n }\r\n\r\n query.moveColumn(index1, index2);\r\n query.fireColumnsChangedEvent(QueryChangeAction.All);\r\n }\r\n\r\n public areCustomExpressionsAllowed(): boolean {\r\n const query = this.getQuery();\r\n return query.isEx() && this.getContext().options.allowCustomExpressions;\r\n }\r\n\r\n}","import { i18n } from '@easydata/core';\r\nimport { \r\n QueryChangeAction, EntityAttr, \r\n SortDirection, QueryColumn\r\n} from '@easyquery/core';\r\n\r\nimport { eqDragManager, DropEffect,\r\n createBrowserEvent, domel } from '@easydata/ui';\r\n\r\nimport { eqCssPrefix } from '../../../utils/utils';\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\nimport { SortingBar } from '../../sorting_bar';\r\n\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\n\r\nexport class ColumnRendererSB {\r\n protected column: QueryColumn;\r\n protected bar: SortingBar;\r\n protected functionMenu: PopupMenu = null;\r\n\r\n protected element: HTMLDivElement;\r\n\r\n protected isMouseOverBlock = false;\r\n \r\n protected keepShowingButtons = false;\r\n\r\n constructor(bar: SortingBar, column: QueryColumn, slot?: HTMLDivElement) {\r\n this.bar = bar;\r\n this.column = column;\r\n \r\n this.element = slot;\r\n }\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-sb';\r\n }\r\n\r\n public render(): HTMLDivElement {\r\n const builder = domel('div');\r\n builder.data('id', this.column.id);\r\n\r\n if (this.element) {\r\n //to remove all event listeners\r\n this.element.parentNode\r\n .replaceChild(builder.toDOM(), this.element);\r\n }\r\n\r\n this.element = builder.toDOM();\r\n\r\n if (this.bar.options.allowDragDrop) {\r\n eqDragManager.registerDraggableItem({\r\n element: this.element,\r\n scope: \"entityAttrSortSB\",\r\n beforeDragStart: () => this.element.dispatchEvent(createBrowserEvent('mouseleave')),\r\n onDragStart: (ev) => {\r\n this.element.style.display = 'none';\r\n ev.dropEffect = DropEffect.Allow;\r\n }, \r\n onDragEnd: (ev) => {\r\n if (!ev.data.finishedSuccessfully) {\r\n this.element.removeAttribute('style');\r\n }\r\n },\r\n data: { column: this.column }\r\n });\r\n }\r\n\r\n builder\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n\r\n .addChildElement(this.renderCaptionBlock())\r\n\r\n if (this.isEditable()) {\r\n builder\r\n .addChildElement(this.renderSortingButton());\r\n }\r\n\r\n return this.element;\r\n }\r\n\r\n public fireColumnChanged() {\r\n this.column.fireChangedEvent();\r\n }\r\n\r\n public refresh() {\r\n this.render();\r\n }\r\n\r\n protected getAttribute(): EntityAttr {\r\n const model = this.bar.getContext().getModel();\r\n return model.getAttributeById(this.column.expr.value);\r\n }\r\n\r\n protected isEditable(): boolean {\r\n return this.column.enabled && !this.column.isReadOnly();\r\n }\r\n\r\n protected renderCaptionBlock(): HTMLDivElement {\r\n function getArrow(sd: SortDirection) {\r\n switch(sd) {\r\n case SortDirection.Ascending:\r\n return ' ↑';\r\n case SortDirection.Descending:\r\n return ' ↓';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n let text = this.column.caption;\r\n if (!this.isEditable()) {\r\n text += getArrow(this.column.sorting);\r\n }\r\n\r\n return domel('div')\r\n .addClass(`${this.cssPrefix}-colelement`, `${this.cssPrefix}-captionelement`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', b => b\r\n .title(this.column.caption)\r\n .text(text)\r\n )\r\n .toDOM();\r\n }\r\n\r\n protected renderSortingButton(): HTMLDivElement {\r\n const sortButtonCssClass = `${eqCssPrefix}-column-sortbutton`;\r\n let sortButtonDirectionCssClass = sortButtonCssClass;\r\n switch (this.column.sorting) {\r\n case SortDirection.None:\r\n sortButtonDirectionCssClass = `${sortButtonCssClass}-none`;\r\n break;\r\n case SortDirection.Ascending:\r\n sortButtonDirectionCssClass = `${sortButtonCssClass}-asc`;\r\n break;\r\n case SortDirection.Descending:\r\n sortButtonDirectionCssClass = `${sortButtonCssClass}-desc`;\r\n break;\r\n }\r\n\r\n const builder = domel('div')\r\n .addClass(`${this.cssPrefix}-colelement`, `${this.cssPrefix}-sortimage-placeholder`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', builder => builder\r\n .addClass(`${this.cssPrefix}-img-sorting`, sortButtonDirectionCssClass)\r\n .title(i18n.getText('ButtonSorting'))\r\n )\r\n .on('touchstart click', (ev) => this.buttonSortingClickHandler(ev, builder.toDOM()));\r\n\r\n return builder.toDOM();\r\n }\r\n\r\n public buttonSortingClickHandler(ev: Event, anchor: HTMLDivElement) {\r\n ev.stopPropagation();\r\n\r\n this.keepShowingButtons = true;\r\n const menu = this.bar.sortMenu;\r\n menu.showMenu({\r\n anchor: anchor,\r\n selectedIds: null,\r\n itemSelectedCallback: (data, items) => {\r\n\r\n const strToSortDirection = (str: string) => {\r\n if (str == 'None') {\r\n return SortDirection.None;\r\n }\r\n else if (str == \"Ascending\") {\r\n return SortDirection.Ascending;\r\n }\r\n else if (str == \"Descending\") {\r\n return SortDirection.Descending;\r\n }\r\n };\r\n\r\n if (data.id == 'None' || data.id == \"Ascending\" || data.id == \"Descending\") {\r\n\r\n const query = this.bar.getContext().getQuery();\r\n\r\n if (this.column.isJustSorted() && data.id == 'None') {\r\n query.removeColumn(this.column);\r\n query.fireColumnsChangedEvent(QueryChangeAction.Delete, this.column, true);\r\n }\r\n else {\r\n this.column.sorting = strToSortDirection(data.id);\r\n this.column._sortIndex = query.getColumnSortIndex(this.column);\r\n this.fireColumnChanged();\r\n }\r\n \r\n }\r\n else {\r\n this.bar.moveColumn(this.column, data.id);\r\n }\r\n },\r\n menuClosedCallback: () => { \r\n this.keepShowingButtons = false;\r\n }\r\n });\r\n\r\n return false;\r\n }\r\n\r\n protected getClassesToAdd(): string {\r\n return `${this.cssPrefix}-row ${this.cssPrefix}-row-column-entattr`;\r\n }\r\n\r\n protected getUIS() {\r\n return this.bar\r\n .getContext().getModel()\r\n .checkAttrProperty(this.column.expr.value, \"useInSorting\");\r\n }\r\n}","import { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { \r\n Widget, WidgetGroup, \r\n EqContext, Query, DataModel, QueryChangeAction, \r\n QueryChangeEventData, QueryChangePart, \r\n QueryColumn, SortDirection, ExprTag, EntityAttr \r\n} from '@easyquery/core';\r\n\r\nimport { \r\n eqDragManager, DropEffect, \r\n getElementAbsolutePos, domel\r\n } from '@easydata/ui';\r\n\r\nimport { eqCssPrefix } from '../utils/utils';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { PopupMenuOptions, PopupMenu } from '../utils/popup_menu';\r\n\r\nimport { SortingBarOptions } from './widget_options';\r\nimport { ColumnRendererSB } from './renderers/sortingbar/column_renderer_sb';\r\n\r\nexport class SortingBar extends Widget {\r\n\r\n protected get cssPrefix(): string {\r\n return \"eqjs-sb\";\r\n }\r\n\r\n public options: SortingBarOptions = {\r\n showAddRow: true,\r\n allowDragDrop: true,\r\n menuOptions: {\r\n showSearchBoxAfter: 30,\r\n searchBoxAutoFocus: true,\r\n activateOnMouseOver: true,\r\n adjustHeight: true,\r\n itemRenderedCallback: null\r\n },\r\n };\r\n\r\n private queryEventCallbackId?: string;\r\n\r\n private columnsBlock: HTMLDivElement;\r\n\r\n private addRowButton: HTMLDivElement;\r\n\r\n public sortMenu: PopupMenu;\r\n private entitiesMenu: PopupMenu;\r\n\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n domel(this.slot)\r\n .addClass(`${this.cssPrefix}-panel`)\r\n .addClass(browserUtils.getMobileCssClass());\r\n\r\n this.group = WidgetGroup.Query;\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'sortingBar';\r\n }\r\n\r\n public init(context: EqContext, options?: SortingBarOptions) {\r\n super.init(context, options);\r\n\r\n this.setOptions(options);\r\n\r\n if (options.attrElementFormat) {\r\n this.context.options.attributeFormat = options.attrElementFormat;\r\n }\r\n\r\n if (options.titleElementFormat) {\r\n this.context.options.columnTitleFormat = options.titleElementFormat;\r\n }\r\n\r\n this.destroyCore();\r\n this.attachQueryObserver();\r\n\r\n eqDragManager.removeDropContainer(this.slot);\r\n if (this.options.allowDragDrop) {\r\n eqDragManager.registerDropContainer({\r\n element: this.slot,\r\n scopes: [\"entityAttrSortSB\"],\r\n onDragEnter: (container, ev) => {\r\n this.showLandingSlot(ev.pageX, ev.pageY);\r\n },\r\n onDragOver: (container, ev) => {\r\n this.showLandingSlot(ev.pageX, ev.pageY);\r\n },\r\n onDragLeave: (container, ev) => {\r\n ev.dropEffect = DropEffect.Forbid;\r\n this.hideLandingSlot();\r\n },\r\n onDrop: (container, ev) => {\r\n if (this.landingIndex >= 0) {\r\n const query = this.getQuery();\r\n query.setColumnSortIndex(ev.data.column, this.landingIndex);\r\n }\r\n else {\r\n ev.item.element.removeAttribute('style');\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n private setOptions(options?: SortingBarOptions) {\r\n dataUtils.assignDeep(this.options, options);\r\n }\r\n\r\n private attachQueryObserver() {\r\n const query = this.getQuery();\r\n\r\n this.queryEventCallbackId = query.addChangedCallback(event => {\r\n //if something has changed, and that change is related to columns\r\n const edata = event.data as QueryChangeEventData;\r\n if (!edata || (edata.part != QueryChangePart.SortingColumns \r\n && edata.part != QueryChangePart.Columns && edata.part != QueryChangePart.All)) {\r\n return;\r\n }\r\n\r\n this.refresh();\r\n });\r\n }\r\n\r\n private detachQueryObserver() {\r\n if (this.queryEventCallbackId) {\r\n const query = this.getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n }\r\n\r\n protected getQuery() : Query {\r\n return this.getContext().getQuery();\r\n }\r\n\r\n protected getModel() : DataModel {\r\n return this.getContext().getModel();\r\n }\r\n\r\n protected destroyCore() {\r\n this.detachQueryObserver();\r\n this.clear();\r\n }\r\n\r\n protected refreshCore() {\r\n this.clear();\r\n this.render();\r\n }\r\n\r\n private renderAddRowButton() {\r\n domel(this.addRowButton)\r\n .addClass(`${eqCssPrefix}-addrow`, `${this.cssPrefix}-addrow`, `${eqCssPrefix}-addrow-empty`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .title(i18n.getText('CmdClickToAddColumn'))\r\n .addChild('a', builder => builder\r\n .attr('href', 'javascript:void(0)')\r\n .on('click', (e) => {\r\n e.preventDefault();\r\n \r\n this.showEntitiesMenu({\r\n anchor: e.target, \r\n selectedIds: null, \r\n itemSelectedCallback: (data, items) => {\r\n const attrid = data.id;\r\n this.addNewColumn(attrid);\r\n return false;\r\n }\r\n });\r\n })\r\n )\r\n\r\n if (browserUtils.isMobileMode()) {\r\n domel(this.columnsBlock)\r\n .addChildElement(this.addRowButton);\r\n }\r\n }\r\n\r\n public showEntitiesMenu(menuOptions) {\r\n this.entitiesMenu.showMenu(menuOptions);\r\n }\r\n\r\n private createEntitiesMenu() {\r\n const model = this.getModel();\r\n if (!model || model.isEmpty()) return null;\r\n\r\n let menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-EntitiesMenu';\r\n }\r\n\r\n const entitiesList = model.getEntitiesTree({ addUIC: false, addUIR: false, addUIS: true });\r\n const options: PopupMenuOptions = { items: entitiesList, \r\n adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId }\r\n \r\n this.entitiesMenu = new PopupMenu(options);\r\n }\r\n\r\n private sortMenuList = [\r\n { id: 'None', text: i18n.getText('CmdNotSorted') },\r\n { id: 'Ascending', text: i18n.getText('CmdAscending') },\r\n { id: 'Descending', text: i18n.getText('CmdDescending') },\r\n { id: '---', text: '---' },\r\n { id: 'MoveTop', text: i18n.getText('CmdMoveToFirst') },\r\n { id: 'MoveUp', text: i18n.getText('CmdMoveToPrev') },\r\n { id: 'MoveDown', text: i18n.getText('CmdMoveToNext') },\r\n { id: 'MoveBottom', text: i18n.getText('CmdMoveToLast') }\r\n ];\r\n\r\n private createSortMenu() {\r\n const model = this.getModel();\r\n if (!model || model.isEmpty()) return null;\r\n\r\n let menuId = this.slot.id\r\n if (menuId) {\r\n menuId += '-SortMenu';\r\n }\r\n\r\n const items = this.sortMenuList;\r\n const menuOptions: any = { \"items\": items, id: menuId };\r\n\r\n menuOptions.searchBoxAlwaysShown = false;\r\n\r\n this.sortMenu = new PopupMenu(menuOptions);\r\n }\r\n private render() {\r\n this.createEntitiesMenu();\r\n this.createSortMenu();\r\n\r\n this.columnsBlock = \r\n domel('div')\r\n .addClass(`${this.cssPrefix}-columns`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .toDOM();\r\n\r\n if (this.options.showAddRow) {\r\n this.addRowButton = \r\n domel('div')\r\n .toDOM();\r\n \r\n if (browserUtils.isMobileMode()) {\r\n domel(this.columnsBlock)\r\n .addChildElement(this.addRowButton);\r\n }\r\n else {\r\n domel(this.slot)\r\n .addChildElement(this.addRowButton);\r\n }\r\n\r\n this.renderAddRowButton();\r\n }\r\n\r\n domel(this.slot)\r\n .addChildElement(this.columnsBlock);\r\n\r\n const query = this.getQuery();\r\n const columns = query.getSortedColumns(); // .getColumns().concat(query.getJustSortedColumns());\r\n \r\n columns.forEach((column, index) => {\r\n const slot = this.renderColumn(column);\r\n this.columnsBlock.appendChild(slot);\r\n });\r\n }\r\n\r\n public addNewColumn(attrId: string): QueryColumn {\r\n const model = this.getModel();\r\n const query = this.getQuery();\r\n\r\n const col = query.addColumn({\r\n attributeId: attrId,\r\n justsorted: true,\r\n sorting: SortDirection.Ascending\r\n });\r\n\r\n query.fireChangedEvent({\r\n part: QueryChangePart.SortingColumns,\r\n action: QueryChangeAction.Add,\r\n changee: col,\r\n source: this\r\n });\r\n \r\n return col;\r\n }\r\n\r\n private renderColumn(column: QueryColumn, elem?: HTMLDivElement): HTMLDivElement | null{\r\n const renderer = new ColumnRendererSB(this, column, elem);\r\n if (renderer) {\r\n const columnSlot = renderer.render();\r\n return columnSlot;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private clear() {\r\n this.slot.innerHTML = '';\r\n }\r\n\r\n public moveColumn(column: QueryColumn, direction: string) {\r\n const query = this.getQuery();\r\n const columns = query.getSortedColumns();\r\n const index = query.getColumnSortIndex(column);\r\n\r\n if (index >= 0) {\r\n switch (direction) {\r\n case 'MoveTop':\r\n query.setColumnSortIndex(column, 0);\r\n break;\r\n case 'MoveUp':\r\n query.setColumnSortIndex(column, index > 0 ? index - 1 : 0);\r\n break;\r\n case 'MoveDown':\r\n query.setColumnSortIndex(column, index < columns.length - 1 ? index + 1 : columns.length - 1);\r\n break;\r\n case 'MoveBottom':\r\n query.setColumnSortIndex(column, columns.length - 1);\r\n break;\r\n };\r\n }\r\n }\r\n\r\n private landingSlot: HTMLDivElement \r\n = domel('div')\r\n .addClass(`${eqCssPrefix}-highlight`)\r\n .toDOM();\r\n\r\n private landingIndex: number = -1;\r\n\r\n public showLandingSlot(pageX: number, pageY: number) {\r\n\r\n const elements = this.columnsBlock.querySelectorAll(`[class*=${this.cssPrefix}-row]`) as NodeListOf<HTMLElement>;\r\n const columnSlots: HTMLElement[] = [];\r\n for(let i = 0; i < elements.length; i++) {\r\n if (elements[i].style.display !== 'none') {\r\n columnSlots.push(elements[i]);\r\n }\r\n }\r\n\r\n if (columnSlots.length === 0) {\r\n this.landingIndex = 0;\r\n return;\r\n }\r\n\r\n const landingPos = getElementAbsolutePos(this.landingSlot);\r\n if (pageX >= landingPos.x && pageX <= landingPos.x + this.landingSlot.offsetWidth\r\n && pageY >= landingPos.y && pageY <= landingPos.y + this.landingSlot.offsetHeight ) {\r\n return;\r\n }\r\n\r\n let newLandingIndex = this.landingIndex;\r\n for(let i = 0; i < columnSlots.length; i++) {\r\n const colSlot = columnSlots[i];\r\n\r\n const absPos = getElementAbsolutePos(colSlot);\r\n const colWidth = colSlot.offsetWidth;\r\n const colHeight = colSlot.offsetHeight;\r\n\r\n const paddingWidth = 0.2 * colWidth;\r\n const paddingHeight = 2;\r\n\r\n if (pageX >= absPos.x + paddingWidth && pageX <= absPos.x + colWidth - paddingWidth\r\n && pageY >= absPos.y + paddingHeight && pageY <= absPos.y + colHeight - paddingHeight) {\r\n\r\n if (pageX > landingPos.x)\r\n newLandingIndex = i + 1;\r\n else \r\n newLandingIndex = i;\r\n \r\n break;\r\n }\r\n }\r\n\r\n if (newLandingIndex != this.landingIndex || this.landingSlot.parentElement) {\r\n this.landingIndex = newLandingIndex;\r\n\r\n if (this.landingIndex <= 0) {\r\n this.columnsBlock.insertBefore(this.landingSlot, columnSlots[0]);\r\n }\r\n if (this.landingIndex < columnSlots.length) {\r\n this.columnsBlock.insertBefore(this.landingSlot, columnSlots[this.landingIndex]);\r\n }\r\n else {\r\n this.columnsBlock.appendChild(this.landingSlot);\r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n public hideLandingSlot() {\r\n this.landingIndex = -1;\r\n if (this.landingSlot.parentElement) {\r\n this.landingSlot.parentElement.removeChild(this.landingSlot);\r\n }\r\n }\r\n\r\n}","/**\r\n * Represents parts of Query Panel which can be editable \r\n */\r\nexport enum QPEditablePart {\r\n None = 0,\r\n Value = 1 << 0,\r\n Attribute = 1 << 1,\r\n Operator = 1 << 2,\r\n Addition = 1 << 3,\r\n Removal = 1 << 4,\r\n All = ~(~0 << 8),\r\n NoAddition = ~Addition,\r\n NoRemoval = ~Removal,\r\n FixedConditionList = Operator | Value\r\n}","import { domel } from '@easydata/ui';\r\n\r\nimport { QueryPanel } from '../../query_panel';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\n\r\nexport class TextRenderer {\r\n protected panel: QueryPanel;\r\n protected text: string;\r\n protected element: HTMLDivElement;\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-qp';\r\n }\r\n\r\n constructor(panel: QueryPanel, text: string, slot?: HTMLDivElement) {\r\n this.panel = panel;\r\n this.text = text;\r\n this.element = slot || domel('div').toDOM();\r\n }\r\n\r\n public refresh() {\r\n this.render();\r\n }\r\n\r\n public render(): HTMLDivElement {\r\n domel(this.element)\r\n .html('')\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('span', builder => builder\r\n .text(this.text)\r\n .title(this.text)\r\n )\r\n .toDOM();\r\n\r\n return this.element;\r\n }\r\n\r\n protected getClassesToAdd(): string {\r\n return `${this.cssPrefix}-condelement`;\r\n }\r\n\r\n}","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\n\r\nimport {\r\n Condition,\r\n EntityAttr,\r\n SimpleConditionDescriptor,\r\n equtils,\r\n QueryChangeAction\r\n} from '@easyquery/core';\r\n\r\nimport { createBrowserEvent, domel } from '@easydata/ui';\r\n\r\nimport { QueryPanel } from '../../query_panel';\r\nimport { TextRenderer } from './text_renderer';\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\n\r\nexport enum ConditionAction {\r\n AddCondition = 0, \r\n AddGroup = 1, \r\n Enable = 2,\r\n Delete = 4, \r\n Menu = 5,\r\n Parameterized = 6,\r\n InJoin = 7\r\n}\r\n\r\nexport abstract class ConditionRenderer {\r\n protected condition: Condition;\r\n protected panel: QueryPanel;\r\n protected element: HTMLDivElement;\r\n\r\n constructor(panel: QueryPanel, condition: Condition, slot?: HTMLDivElement) {\r\n this.panel = panel;\r\n this.condition = condition;\r\n this.element = slot || domel('div').toDOM();\r\n }\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-qp';\r\n }\r\n\r\n public refresh() {\r\n this.render();\r\n }\r\n\r\n protected clear() {\r\n if (this.element) {\r\n this.element.className = '';\r\n this.element.removeAttribute('data-id');\r\n this.element.removeAttribute('style');\r\n domel(this.element)\r\n .html('');\r\n }\r\n }\r\n\r\n public render(autoAppear?: boolean): HTMLDivElement {\r\n this.clear();\r\n\r\n //this.preRender();\r\n this.coreRender(autoAppear);\r\n\r\n if (this.panel.options.onConditionRendered) {\r\n this.panel.options.onConditionRendered(this.condition, this.element);\r\n }\r\n\r\n return this.element;\r\n }\r\n\r\n protected abstract coreRender(autoAppear?: boolean): void;\r\n\r\n protected abstract getClassesToAdd(): string;\r\n\r\n protected isEditable(): boolean {\r\n return this.condition.enabled && !this.condition.isReadOnly();\r\n }\r\n}\r\n\r\nexport class SimpleConditionRenderer extends ConditionRenderer {\r\n protected buttonsBlock: HTMLDivElement;\r\n protected isMouseOverBlock: boolean;\r\n protected keepShowingButtons: boolean;\r\n protected baseAttr: EntityAttr;\r\n\r\n protected getClassesToAdd(): string {\r\n let result = `${this.cssPrefix}-row ${this.cssPrefix}-row-condition`;\r\n result += this.condition.isInJoin() ? ` ${this.cssPrefix}-condition-injoin` : '';\r\n result += this.condition.isParameterized() ? ` ${this.cssPrefix}-condition-parameterized` : '';\r\n\r\n if (!browserUtils.isMobileMode()) {\r\n const level = this.condition.getLevel();\r\n\r\n if (level > 0)\r\n result += ` ${this.cssPrefix}-level-${level}`;\r\n }\r\n\r\n\r\n result += this.condition.enabled ? '' : ` ${this.cssPrefix}-disabled`;\r\n if (this.condition.enabled) {\r\n result += this.condition.isReadOnly() ? ` ${this.cssPrefix}-readonly` : '';\r\n }\r\n \r\n return result;\r\n }\r\n\r\n protected coreRender(autoAppear?: boolean): void {\r\n const model = this.panel.getContext().getModel();\r\n const operator = model.getOperatorById(this.condition.getOperatorId());\r\n\r\n const arrFormat = equtils.parseOperatorFormat(operator);\r\n\r\n let item = null;\r\n const arrLength = arrFormat.length;\r\n\r\n const builder = domel('div');\r\n if (this.element && this.element.parentNode) {\r\n this.element.parentNode\r\n .replaceChild(builder.toDOM(), this.element);\r\n }\r\n this.element = builder.toDOM();\r\n builder\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .data('id', this.condition.id)\r\n .data('condrow', '')\r\n .addChildElement(this.renderCheckbox())\r\n .addChildElement(this.renderConjunction());\r\n \r\n let mayAppear = autoAppear;\r\n\r\n const minLength = operator == model.nullOperator \r\n ? Math.min(arrLength, this.condition.expressions.length + 1)\r\n : arrLength;\r\n for (let idx = 0; idx < minLength; idx++) {\r\n item = arrFormat[idx];\r\n\r\n if (item.type === 'operator') {\r\n const renderer = this.panel.getOperatorRenderer(this.condition, item.text);\r\n if (renderer) {\r\n builder.addChildElement(renderer.render());\r\n }\r\n }\r\n else if (item.type === 'expression') {\r\n const toAppear = mayAppear && (item.index > 0);\r\n const exprRenderer = this.panel.getExpressionRenderer(this.condition.expressions[item.index]);\r\n if (exprRenderer) {\r\n const el = exprRenderer.render(toAppear);\r\n builder.addChildElement(el);\r\n setTimeout(() => {\r\n exprRenderer.adjustWidth();\r\n }, 100);\r\n }\r\n mayAppear = mayAppear && !toAppear;\r\n }\r\n else if (item.type === 'text') {\r\n builder.addChildElement(new TextRenderer(this.panel, item.text).render());\r\n }\r\n }\r\n\r\n if (this.panel.options.accentActiveCondition || browserUtils.isMobileMode()) {\r\n builder.on('click', ev => {\r\n ev.stopPropagation();\r\n this.panel.toggleConditionPicked(this.condition);\r\n this.adjustButtonsVisibility();\r\n if (!browserUtils.isMobileMode()) {\r\n this.element.dispatchEvent(createBrowserEvent(\"mouseenter\"));\r\n }\r\n\r\n return false;\r\n })\r\n }\r\n\r\n builder\r\n .addChildElement(this.renderButtonsBlock());\r\n\r\n if (!browserUtils.isMobileMode()) {\r\n builder\r\n .on('mouseenter', event => {\r\n this.isMouseOverBlock = true;\r\n this.enterButtonBlock();\r\n event.stopPropagation();\r\n return false;\r\n })\r\n .on('mouseleave', event => {\r\n this.isMouseOverBlock = false;\r\n if (!this.keepShowingButtons && domel(this.buttonsBlock).isVisible()) {\r\n this.leaveButtonBlock();\r\n }\r\n\r\n event.stopPropagation();\r\n return false;\r\n })\r\n }\r\n }\r\n\r\n protected setConditionParameterized(value: boolean) {\r\n this.condition.setParameterized(value);\r\n this.condition.fireChangedEvent();\r\n }\r\n\r\n protected setConditionInJoin(value: boolean) {\r\n this.condition.setInJoin(value);\r\n this.condition.fireChangedEvent();\r\n }\r\n\r\n protected getConditionMenu(): PopupMenu {\r\n return this.panel.getConditionMenu();\r\n }\r\n\r\n protected renderConjunction(): HTMLElement {\r\n const parent = this.condition.getParent();\r\n if (!parent) return null;\r\n\r\n const isFirstConditionInGroup = dataUtils.findItemIndexById(parent.getConditions(), this.condition.id) == 0;\r\n \r\n if (this.panel.options.showConjunctions && !isFirstConditionInGroup) {\r\n const linkTypeStr = equtils.linkTypeToStr(this.condition.getParent().linkType);\r\n const conjuctionText = i18n.getText(\"Conj\" + linkTypeStr);\r\n return domel(\"span\")\r\n .text(conjuctionText)\r\n .title(conjuctionText)\r\n .addClass(`${this.cssPrefix}-condelement ${this.cssPrefix}-condition-conjuction`)\r\n .toDOM();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n protected renderCheckbox(): HTMLElement {\r\n if (this.panel.options.showCheckboxes && !this.condition.isReadOnly()) {\r\n return domel(\"div\")\r\n .title(i18n.getText('CmdToggleEnable'))\r\n .attr('tabIndex', '0')\r\n .addClass(`${this.cssPrefix}-condelement ${this.cssPrefix}-condition-checkbox`)\r\n .addClass(`${ this.condition.enabled ? 'enabled' : '' }`)\r\n .on('click', () => {\r\n this.condition.enabled = !this.condition.enabled;\r\n this.condition.fireChangedEvent();\r\n return false;\r\n })\r\n .on('keypress', evt => { if ([13, 32].includes((evt as KeyboardEvent).keyCode) ) { (evt.target as HTMLElement).click()}})\r\n .toDOM();\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n protected isConditionActive(): boolean {\r\n return this.element.classList.contains(\"active\");\r\n }\r\n\r\n protected hideButtons() {\r\n domel(this.element).data(\"show-buttons\", null);\r\n }\r\n\r\n protected showButtons() {\r\n domel(this.element).data(\"show-buttons\", \"\");\r\n }\r\n\r\n protected adjustButtonsVisibility() {\r\n if (this.panel.options.alwaysShowButtonsInConditions \r\n || (this.panel.options.accentActiveCondition && this.isConditionActive())) {\r\n this.showButtons();\r\n }\r\n }\r\n\r\n protected enterButtonBlock() {\r\n this.showButtons();\r\n }\r\n\r\n protected leaveButtonBlock() {\r\n if (!this.panel.options.alwaysShowButtonsInConditions \r\n && (!this.isConditionActive() || !this.panel.options.accentActiveCondition)) {\r\n this.hideButtons();\r\n }\r\n }\r\n\r\n\r\n private conditionMenuHandler(action: ConditionAction, evt: Event) {\r\n switch (action) {\r\n case ConditionAction.AddCondition:\r\n if (!this.condition.isGroup()) return;\r\n\r\n const entMenu = this.panel.getEntitiesMenu();\r\n if (entMenu) {\r\n entMenu.showMenu({\r\n anchor: evt.target as HTMLElement, \r\n itemSelectedCallback: item => { \r\n const query = this.panel.getQuery();\r\n \r\n const descr: SimpleConditionDescriptor = {\r\n parent: this.condition,\r\n attributeId: item.id\r\n }\r\n \r\n const cond = query.addSimpleCondition(descr);\r\n \r\n if (cond) {\r\n query.fireConditionsChangedEvent(QueryChangeAction.Add, cond);\r\n }\r\n \r\n return false;\r\n }\r\n });\r\n }\r\n break;\r\n case ConditionAction.AddGroup:\r\n if (!this.condition.isGroup()) return;\r\n\r\n const query = this.panel.getQuery();\r\n const descr: SimpleConditionDescriptor = {\r\n parent: this.condition\r\n }\r\n \r\n const group = this.panel.getQuery().addConditionGroup(descr);\r\n \r\n if (group) {\r\n query.fireConditionsChangedEvent(QueryChangeAction.Add, group);\r\n }\r\n break;\r\n case ConditionAction.Enable:\r\n this.condition.enabled = !this.condition.enabled;\r\n this.condition.fireChangedEvent();\r\n break;\r\n case ConditionAction.Delete:\r\n const parent = this.condition.getParent();\r\n if (!parent) return;\r\n \r\n const conditions = parent.getConditions();\r\n const idx = conditions.indexOf(this.condition);\r\n if (idx >= 0) {\r\n conditions.splice(idx, 1);\r\n this.condition.getQuery().fireConditionsChangedEvent(QueryChangeAction.Delete, this.condition);\r\n }\r\n break;\r\n case ConditionAction.Menu:\r\n const condMenu = this.getConditionMenu();\r\n this.keepShowingButtons = true;\r\n condMenu.showMenu({\r\n anchor: evt.target as HTMLElement,\r\n selectedIds: this.getConditionMenuSelectedItems(),\r\n itemSelectedCallback: (item) => {\r\n let action: ConditionAction;\r\n switch(item.id) {\r\n case \"enable\":\r\n action = ConditionAction.Enable;\r\n break;\r\n case \"delete\":\r\n action = ConditionAction.Delete;\r\n break;\r\n case \"param\":\r\n action = ConditionAction.Parameterized;\r\n break;\r\n case \"inJoin\":\r\n action = ConditionAction.InJoin;\r\n break;\r\n case \"addCondition\":\r\n action = ConditionAction.AddCondition;\r\n break;\r\n case \"addGroup\":\r\n action = ConditionAction.AddGroup;\r\n break;\r\n }\r\n this.conditionMenuHandler(action, evt);\r\n },\r\n itemFilterCallback: (item) => {\r\n let result = this.condition.enabled || item.id === \"enable\" || item.id === \"delete\";\r\n if (item.id === \"enable\") {\r\n const parent = this.condition.getParent();\r\n result = result && parent && parent.enabled;\r\n }\r\n else if (item.id === \"delete\") {\r\n result = result && ((this.panel.options.editableParts & QPEditablePart.Removal) === QPEditablePart.Removal)\r\n }\r\n else if (item.id === \"addGroup\" || item.id === \"addCondition\") {\r\n result = result && ((this.panel.options.editableParts & QPEditablePart.Addition) === QPEditablePart.Addition)\r\n }\r\n \r\n return result;\r\n },\r\n menuClosedCallback: () => { //called when menu is closed\r\n this.keepShowingButtons = false;\r\n if (!this.isMouseOverBlock)\r\n this.leaveButtonBlock();\r\n }\r\n });\r\n\r\n break;\r\n case ConditionAction.Parameterized:\r\n this.condition.setParameterized(!this.condition.isParameterized());\r\n this.condition.fireChangedEvent();\r\n break;\r\n case ConditionAction.InJoin:\r\n this.condition.setInJoin(!this.condition.isInJoin());\r\n this.condition.fireChangedEvent();\r\n break;\r\n }\r\n\r\n evt.stopPropagation();\r\n return false;\r\n } \r\n\r\n protected getConditionMenuSelectedItems(): Array<string> {\r\n let arrSelected = [];\r\n if (this.condition.enabled) {\r\n arrSelected.push(\"enable\");\r\n };\r\n\r\n if (this.condition.isParameterized()) {\r\n arrSelected.push(\"param\");\r\n };\r\n\r\n if (this.condition.isInJoin()) {\r\n arrSelected.push(\"inJoin\");\r\n };\r\n\r\n return arrSelected;\r\n }\r\n\r\n protected renderButtonsBlock(): HTMLElement {\r\n const onButtonMouseEnter = (evt: Event) => {\r\n domel(evt.target as HTMLElement)\r\n .addClass(`${this.cssPrefix}-condition-button-active`)\r\n }\r\n\r\n const onButtonMouseLeave = (evt: Event) => {\r\n domel(evt.target as HTMLElement)\r\n .removeClass(`${this.cssPrefix}-condition-button-active`)\r\n }\r\n\r\n const builder = domel(\"div\")\r\n .addClass(`${this.cssPrefix}-condition-buttonsBlock`)\r\n .addClass(browserUtils.getMobileCssClass());\r\n\r\n this.buttonsBlock = builder.toDOM();\r\n\r\n if (this.condition.isReadOnly()) {\r\n return this.buttonsBlock;\r\n }\r\n\r\n const buttonsToShow = this.getButtonsToShow();\r\n\r\n if (buttonsToShow.indexOf(\"addCondition\") >= 0 && this.condition.enabled \r\n && ((this.panel.options.editableParts & QPEditablePart.Addition) == QPEditablePart.Addition)) {\r\n builder.addChild(\"div\", b => {\r\n b.addClass(`${this.cssPrefix}-button-placeholder`)\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild(\"div\", b => {\r\n b.addClass(`${this.cssPrefix}-condition-button ${this.cssPrefix}-condition-button-addCondition`)\r\n .attr('tabIndex', '0')\r\n .data(\"button\", \"\")\r\n .title(i18n.getText('CmdAddCondition'))\r\n .on('click', evt => this.conditionMenuHandler(ConditionAction.AddCondition, evt))\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}})\r\n .on('mouseenter', onButtonMouseEnter)\r\n .on('mouseleave', onButtonMouseLeave)\r\n })\r\n })\r\n };\r\n\r\n const showAddGroupBtn = buttonsToShow.indexOf(\"addGroup\") >= 0 || buttonsToShow.indexOf(\"addPredicate\") >= 0;\r\n if (showAddGroupBtn && this.condition.enabled\r\n && ((this.panel.options.editableParts & QPEditablePart.Addition) == QPEditablePart.Addition)) {\r\n builder.addChild(\"div\", b => {\r\n b.addClass(`${this.cssPrefix}-button-placeholder`)\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild(\"div\", b => {\r\n b.addClass(`${this.cssPrefix}-condition-button ${this.cssPrefix}-condition-button-addPredicate`)\r\n .attr('tabIndex', '0')\r\n .data(\"button\", \"\")\r\n .title(i18n.getText('CmdAddCondGroup'))\r\n .on('click', evt => this.conditionMenuHandler(ConditionAction.AddGroup, evt))\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}})\r\n .on('mouseenter', onButtonMouseEnter)\r\n .on('mouseleave', onButtonMouseLeave)\r\n })\r\n })\r\n };\r\n\r\n if (this.getButtonsToShow().indexOf(\"enable\") >= 0 && this.condition.getParent() && this.condition.getParent().enabled) {\r\n builder.addChild(\"div\", b => {\r\n b.addClass(`${this.cssPrefix}-button-placeholder`)\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild(\"div\", b => {\r\n b.addClass(`${this.cssPrefix}-condition-button ${this.cssPrefix}-condition-button-enable`)\r\n .attr('tabIndex', '0')\r\n .data(\"button\", \"\")\r\n .title(i18n.getText('CmdToggleEnable'))\r\n .addClass(this.condition.enabled ? 'enabled' : '')\r\n .on('click', evt => this.conditionMenuHandler(ConditionAction.Enable, evt))\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}})\r\n .on('mouseenter', onButtonMouseEnter)\r\n .on('mouseleave', onButtonMouseLeave)\r\n })\r\n })\r\n };\r\n\r\n if (this.getButtonsToShow().indexOf(\"delete\") >= 0 && this.condition.getParent()\r\n && ((this.panel.options.editableParts & QPEditablePart.Removal) == QPEditablePart.Removal)) {\r\n builder.addChild(\"div\", b => {\r\n b.addClass(`${this.cssPrefix}-button-placeholder`)\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild(\"div\", b => {\r\n b.addClass(`${this.cssPrefix}-condition-button ${this.cssPrefix}-condition-button-delete`)\r\n .attr('tabIndex', '0')\r\n .data(\"button\", \"\")\r\n .title(i18n.getText('CmdDelete'))\r\n .on('click', evt => this.conditionMenuHandler(ConditionAction.Delete, evt))\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}})\r\n .on('mouseenter', onButtonMouseEnter)\r\n .on('mouseleave', onButtonMouseLeave)\r\n })\r\n })\r\n };\r\n\r\n if (this.getButtonsToShow().indexOf(\"menu\") >= 0) {\r\n builder.addChild(\"div\", b => {\r\n b.addClass(`${this.cssPrefix}-button-placeholder`)\r\n .data(\"btnplaceholder\", \"\")\r\n .addChild(\"div\", b => {\r\n b.addClass(`${this.cssPrefix}-condition-button ${this.cssPrefix}-condition-button-menu`)\r\n .attr('tabIndex', '0')\r\n .data(\"button\", \"\")\r\n .title(i18n.getText('ButtonMenu'))\r\n .on('click', evt => this.conditionMenuHandler(ConditionAction.Menu, evt))\r\n\r\n if (!browserUtils.isMobileMode()) {\r\n b\r\n .on('keypress', evt => { if ((evt as KeyboardEvent).keyCode == 13) { (evt.target as HTMLElement).click()}})\r\n .on('mouseenter', onButtonMouseEnter)\r\n .on('mouseleave', onButtonMouseLeave)\r\n }\r\n })\r\n })\r\n };\r\n\r\n this.adjustButtonsVisibility();\r\n\r\n return this.buttonsBlock;\r\n }\r\n\r\n protected getButtonsToShow(): Array<string> {\r\n return this.panel.options.buttons && this.panel.options.buttons.condition && Array.isArray(this.panel.options.buttons.condition) ? this.panel.options.buttons.condition : [\"enable\", \"delete\"];\r\n }\r\n\r\n}\r\n","import { PopupMenu } from './popup_menu';\r\n\r\nimport { \r\n DomElementBuilder\r\n} from '@easydata/ui';\r\n\r\n\r\nexport class DomDropDownElementBuilder extends DomElementBuilder<HTMLAnchorElement> {\r\n protected _onGetMenu: () => PopupMenu;\r\n protected _onItemSelected: (id: string) => void;\r\n\r\n constructor(parent?: HTMLElement) {\r\n super('a', parent);\r\n\r\n this.attr('href', 'javascript:void(0)');\r\n this.on('click', ev => {\r\n ev.preventDefault();\r\n this.appear();\r\n return false;\r\n })\r\n }\r\n\r\n public onGetMenu(onGetMenu: () => PopupMenu){\r\n this._onGetMenu = onGetMenu;\r\n return this;\r\n }\r\n\r\n public onItemSelected(onItemSelected: (id: string) => void) {\r\n this._onItemSelected = onItemSelected;\r\n return this;\r\n }\r\n\r\n private appear(): void {\r\n const menu = this._onGetMenu ? this._onGetMenu() : null;\r\n if (menu) {\r\n menu.showMenu({\r\n anchor: this.element, \r\n itemSelectedCallback: item => { \r\n if (this._onItemSelected) {\r\n this._onItemSelected(item.id);\r\n }\r\n return false;\r\n }\r\n })\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function dropdown(parent?: HTMLElement) {\r\n return new DomDropDownElementBuilder(parent);\r\n}\r\n","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\n\r\nimport { Condition, eqconsts, equtils } from '@easyquery/core';\r\n\r\nimport { createBrowserEvent, DomElementBuilder, domel } from '@easydata/ui';\r\n\r\nimport { QueryPanel } from '../../query_panel';\r\nimport { ConditionRenderer, SimpleConditionRenderer } from './condition_renderer';\r\n\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nimport { dropdown } from '../../../utils/dropdown';\r\n\r\nexport class ConditionGroupRenderer extends ConditionRenderer {\r\n private isRoot: boolean;\r\n\r\n constructor(panel: QueryPanel, condition: Condition, slot?: HTMLDivElement) {\r\n super(panel, condition, slot);\r\n this.isRoot = !condition.getParent();\r\n }\r\n\r\n protected getClassesToAdd(): string {\r\n let result = `${this.cssPrefix}-group`;\r\n if (this.isRoot) {\r\n result += ` ${this.cssPrefix}-group-root`;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n protected coreRender(autoAppear?: boolean): void {\r\n domel(this.element)\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.renderGroupRow())\r\n .addChildElement(this.renderConditions(autoAppear))\r\n .data('id', this.condition.id)\r\n .data('group', '');\r\n }\r\n\r\n protected renderGroupRow(): HTMLDivElement {\r\n if (this.isRoot && !this.panel.options.showRootRow) {\r\n return null;\r\n }\r\n else {\r\n return new ConditionGroupRowRenderer(this.panel, this.condition).render()\r\n }\r\n }\r\n\r\n protected renderConditions(autoAppear?: boolean): HTMLDivElement {\r\n const builder = domel('div');\r\n\r\n builder\r\n .addClass(`${this.cssPrefix}-conditions`)\r\n .addClass(`${browserUtils.getMobileCssClass()}`)\r\n .data('conditions', '')\r\n\r\n if (this.isRoot) {\r\n builder.addClass(`${this.cssPrefix}-conditions-root`);\r\n }\r\n\r\n this.condition.getConditions().forEach((condition, index, array) => {\r\n const renderer = this.panel.getConditionRenderer(condition);\r\n if (renderer) {\r\n builder.addChildElement(renderer.render(autoAppear && index == array.length - 1));\r\n }\r\n })\r\n\r\n return builder.toDOM();\r\n }\r\n}\r\n\r\nexport class ConditionGroupRowRenderer extends SimpleConditionRenderer {\r\n private isRoot: boolean;\r\n\r\n constructor(panel: QueryPanel, condition: Condition, slot?: HTMLDivElement) {\r\n super(panel, condition, slot);\r\n this.isRoot = !this.condition.getParent();\r\n }\r\n\r\n protected getButtonsToShow(): Array<string> {\r\n return this.panel.options.buttons && this.panel.options.buttons.group && Array.isArray(this.panel.options.buttons.group) ? this.panel.options.buttons.group : [\"addCondition\", \"addGroup\", \"enable\", \"delete\"];\r\n }\r\n\r\n protected getClassesToAdd(): string {\r\n let result: string;\r\n if (this.isRoot) {\r\n result = `${this.cssPrefix}-row ${this.cssPrefix}-row-group ${this.cssPrefix}-row-group-root`;\r\n } \r\n else {\r\n result = `${this.cssPrefix}-row ${this.cssPrefix}-row-group`;\r\n\r\n const level = this.condition.getLevel();\r\n if (level > 0)\r\n result += ` ${this.cssPrefix}-level-${level}`;\r\n\r\n result += this.condition.enabled ? '' : ` ${this.cssPrefix}-disabled`;\r\n if (this.condition.enabled) {\r\n result += this.condition.isReadOnly() ? ` ${this.cssPrefix}-readonly` : '';\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n protected coreRender(autoAppear?: boolean): void {\r\n const builder = domel(this.element)\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .data('group-row', '')\r\n .addChildElement(this.renderCheckbox())\r\n .addChildElement(this.renderConjunction());\r\n\r\n const level = this.condition.getLevel();\r\n\r\n if (level > 0)\r\n builder.addClass(`${this.cssPrefix}-level-${level}`);\r\n \r\n this.buildGroupElements(builder, this.getGroupTitle());\r\n\r\n if (this.panel.options.accentActiveCondition) {\r\n builder.on('click', ev => {\r\n this.panel.toggleConditionPicked(this.condition);\r\n this.adjustButtonsVisibility();\r\n if (!browserUtils.isMobileMode()) {\r\n builder.toDOM().dispatchEvent(createBrowserEvent(\"mouseenter\"));\r\n }\r\n })\r\n }\r\n\r\n builder\r\n .addChildElement(this.renderButtonsBlock());\r\n \r\n if (!browserUtils.isMobileMode()) {\r\n builder\r\n .on('mouseenter', event => {\r\n this.isMouseOverBlock = true;\r\n this.enterButtonBlock();\r\n event.stopPropagation();\r\n return false;\r\n })\r\n .on('mouseleave', event => {\r\n this.isMouseOverBlock = false;\r\n if (!this.keepShowingButtons && domel(this.buttonsBlock).isVisible()) {\r\n this.leaveButtonBlock();\r\n }\r\n\r\n event.stopPropagation();\r\n return false;\r\n })\r\n }\r\n }\r\n\r\n\r\n protected getGroupTitle() : string {\r\n let result: string;\r\n if (this.isRoot && !browserUtils.isMobileMode()) {\r\n result = i18n.getText('RootConditionGroupTitle');\r\n if (!result) {\r\n //to support old text key\r\n result = i18n.getText('RootPredicateTitle');\r\n }\r\n }\r\n else {\r\n result = i18n.getText('ConditionGroupTitle');\r\n if (!result) {\r\n //to support old text key\r\n result = i18n.getText('PredicateTitle');\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private buildGroupElements(builder: DomElementBuilder<HTMLDivElement>, groupTitle : string) : void {\r\n const pos = groupTitle.indexOf('{lt}');\r\n \r\n if (pos < 0) { \r\n //invalid format\r\n builder.addText(i18n.getText('ErrIncorrectGroupTitleFormat'));\r\n builder.addClass(`${this.cssPrefix}-error`);\r\n }\r\n else {\r\n if (pos > 0) {\r\n builder.addChild('span', b => {\r\n b.addClass(`${this.cssPrefix}-grelement`)\r\n .addText(groupTitle.substring(0, pos));\r\n });\r\n }\r\n\r\n const linkTypeStr = equtils.linkTypeToStr(this.condition.linkType);\r\n let curType: eqconsts.ConstValue | null \r\n = dataUtils.findItemById(eqconsts.predicateLinkTypeList, linkTypeStr);\r\n if (!curType) {\r\n curType = eqconsts.predicateLinkTypeList[0];\r\n }\r\n\r\n if (this.isEditable()) {\r\n dropdown(builder.toDOM())\r\n .onGetMenu(() => this.getLinkTypeMenu())\r\n .onItemSelected(id => {\r\n this.condition.linkType = equtils.strToLinkType(id);\r\n this.condition.fireChangedEvent();\r\n })\r\n .addText(i18n.getText(curType.key))\r\n .title(i18n.getText(curType.key))\r\n .addClass(`${this.cssPrefix}-grelement`);\r\n }\r\n else {\r\n builder.addChild('span', b => {\r\n b.text(i18n.getText(curType.key))\r\n .title(i18n.getText(curType.key))\r\n .addClass(`${this.cssPrefix}-grelement`);\r\n })\r\n }\r\n\r\n builder.addChild('span', b => {\r\n b.addClass(`${this.cssPrefix}-grelement`)\r\n .addText(groupTitle.substring(pos + 4));\r\n });\r\n }\r\n }\r\n\r\n\r\n protected getConditionMenu(): PopupMenu {\r\n return this.panel.getConditionGroupMenu(this.condition.getParent() == null);\r\n }\r\n\r\n protected getLinkTypeMenu(): PopupMenu {\r\n return this.panel.getLinkTypeMenu();\r\n }\r\n\r\n protected renderConjunction(): HTMLElement {\r\n return this.isRoot? null : super.renderConjunction();\r\n }\r\n\r\n protected renderCheckbox(): HTMLElement {\r\n return this.isRoot? null : super.renderCheckbox();\r\n }\r\n\r\n protected leaveButtonBlock() {\r\n if (!this.panel.options.alwaysShowButtonsInGroups \r\n && (!this.isConditionActive() || !this.panel.options.accentActiveCondition)) \r\n {\r\n this.hideButtons();\r\n }\r\n }\r\n\r\n protected adjustButtonsVisibility() {\r\n if (this.panel.options.alwaysShowButtonsInGroups \r\n || (this.panel.options.accentActiveCondition && this.isConditionActive()))\r\n {\r\n this.showButtons();\r\n }\r\n }\r\n}\r\n","import { domel } from '@easydata/ui';\r\n\r\nimport { browserUtils } from '../../utils/browser_utils';\r\n\r\nexport abstract class BaseElementRenderer {\r\n protected element: HTMLDivElement;\r\n\r\n protected labelElement: HTMLElement;\r\n\r\n constructor(slot?: HTMLDivElement) {\r\n this.element = slot || domel('div').toDOM();\r\n }\r\n\r\n public refresh() {\r\n this.render();\r\n }\r\n\r\n public render(isEditMode: boolean = false): HTMLDivElement {\r\n this.labelElement = this.renderLabelElement();\r\n domel(this.element)\r\n .html('')\r\n .addClass(this.getClassesToAdd())\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChildElement(this.labelElement);\r\n\r\n if (this.isEditable()) {\r\n this.renderEditor();\r\n if (isEditMode) {\r\n setTimeout(() => this.showEditor(), 50);\r\n }\r\n }\r\n\r\n return this.element;\r\n }\r\n\r\n protected isEditable(): boolean {\r\n return true;\r\n }\r\n\r\n protected renderLabelElement(): HTMLElement {\r\n const displayedText = this.getLabelText();\r\n\r\n if (this.isEditable()) {\r\n return domel('a')\r\n .attr('href', 'javascript:void(0)')\r\n .title(displayedText)\r\n .text(displayedText)\r\n .on('click', (ev) => { //touchstart \r\n ev.preventDefault();\r\n this.showEditor();\r\n return false;\r\n })\r\n .toDOM();\r\n }\r\n else {\r\n return domel('span')\r\n .title(displayedText)\r\n .text(displayedText)\r\n .toDOM();\r\n }\r\n }\r\n\r\n protected abstract renderEditor(): void;\r\n\r\n protected getClassesToAdd(): string {\r\n return '';\r\n }\r\n\r\n protected getLabelText(): string {\r\n return this.getEmptyText();\r\n }\r\n\r\n protected getEmptyText(): string {\r\n return '<empty>';\r\n }\r\n\r\n protected abstract showEditor(): void;\r\n\r\n protected abstract closeEditor(): void;\r\n}\r\n\r\n","import { i18n } from '@easydata/core';\r\n\r\nimport {\r\n Expression,\r\n EqValueEditor,\r\n EqContext,\r\n ConditionPart\r\n} from '@easyquery/core'\r\n\r\nimport { QueryPanel } from '../../query_panel';\r\nimport { BaseElementRenderer } from '../base_element_renderer';\r\n\r\nexport abstract class ExpressionRenderer extends BaseElementRenderer {\r\n protected panel: QueryPanel;\r\n protected expression: Expression;\r\n protected valueEditor: EqValueEditor;\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-qp';\r\n }\r\n\r\n constructor(panel: QueryPanel, expression: Expression, valueEditor: EqValueEditor, slot?: HTMLDivElement) {\r\n super(slot);\r\n\r\n this.panel = panel;\r\n this.expression = expression;\r\n this.valueEditor = valueEditor;\r\n }\r\n\r\n public render(isEditMode: boolean = false): HTMLDivElement {\r\n super.render(isEditMode);\r\n\r\n if (this.panel.options.onExpressionRendered) {\r\n this.panel.options.onExpressionRendered(this.expression, this.element);\r\n }\r\n\r\n return this.element;\r\n }\r\n\r\n protected getContext() : EqContext {\r\n return this.panel.getContext();\r\n }\r\n\r\n protected isReadOnly() : boolean {\r\n const parent = this.expression.getParent();\r\n return !parent.enabled || parent.isReadOnly();\r\n }\r\n\r\n protected isEditable(): boolean {\r\n return !this.isReadOnly();\r\n }\r\n\r\n protected getClassesToAdd(): string {\r\n return `${this.cssPrefix}-condelement ${this.cssPrefix}-valueelement`;\r\n }\r\n\r\n protected getLabelText(): string {\r\n let result = !this.expression.isEmpty()\r\n ? this.expression.value\r\n : this.getEmptyText();\r\n return result;\r\n }\r\n\r\n protected getEmptyText(): string {\r\n return this.panel.options.emptyTextValue || i18n.getText('MsgEmptyScalarValue'); //'[enter value]';\r\n }\r\n\r\n protected setValue(value: string, silent?: boolean): void {\r\n this.expression.setValue(value);\r\n\r\n if (!silent) {\r\n this.expression.getParent().fireChangedEvent(ConditionPart.Value);\r\n }\r\n }\r\n\r\n protected getValue(): string {\r\n return this.expression.value;\r\n }\r\n\r\n protected validateInput(value: string): ValidationResult {\r\n return { success : true, value: value };\r\n }\r\n\r\n protected showValidationError(message: string, target?: EventTarget) : void {\r\n this.getContext().throwError({\r\n action: \"ui.validation\",\r\n \"text\": message\r\n });\r\n }\r\n\r\n protected isEmptyValue() {\r\n let v = this.getValue();\r\n return (typeof(v) === \"undefined\" || v === null || !v);\r\n }\r\n\r\n public adjustWidth(): void {\r\n }\r\n}\r\n\r\nexport interface ValidationResult {\r\n success : boolean;\r\n message? : string;\r\n value : string;\r\n}\r\n\r\n","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { DataKind } from '@easyquery/core';\r\n\r\nimport { DomInputElementBuilder, domel } from '@easydata/ui'; \r\n\r\nimport { ExpressionRenderer, ValidationResult } from './expression_renderer';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\n\r\nexport class InputExpressionRenderer extends ExpressionRenderer {\r\n private inputElement: HTMLInputElement;\r\n private inputBuilder: DomInputElementBuilder;\r\n private dontProcessBlur: boolean;\r\n\r\n protected renderEditor(): void {\r\n this.inputBuilder = domel(\"input\")\r\n .hide()\r\n .addClass(`${this.cssPrefix}-ve-editbox`)\r\n .type('text')\r\n .on('blur', (ev) => {\r\n if (this.inputBuilder.isVisible() && !this.dontProcessBlur) {\r\n const validationResult = this.validateInput(this.inputElement.value);\r\n if (validationResult.success) {\r\n this.setValue(this.inputElement.value);\r\n this.closeEditor();\r\n }\r\n else {\r\n this.dontProcessBlur = true;\r\n this.inputElement.focus();\r\n setTimeout(() => { this.dontProcessBlur = false }, 200);\r\n this.showValidationError(validationResult.message, ev.target);\r\n }\r\n ev.stopPropagation();\r\n return false;\r\n }\r\n })\r\n .on('keydown', (ev) => {\r\n if ((ev as KeyboardEvent).keyCode === 27) { // ESC is pressed\r\n this.closeEditor();\r\n ev.stopPropagation();\r\n return false;\r\n }\r\n else if ((ev as KeyboardEvent).keyCode === 13) { // Enter is pressed\r\n if (this.inputBuilder.isVisible()) {\r\n this.dontProcessBlur = true;\r\n const validationResult = this.validateInput(this.inputElement.value);\r\n if (validationResult.success) {\r\n this.setValue(this.inputElement.value);\r\n this.closeEditor();\r\n this.dontProcessBlur = false;\r\n }\r\n else {\r\n this.inputElement.focus();\r\n this.showValidationError(validationResult.message, ev.target);\r\n setTimeout(() => { this.dontProcessBlur = false }, 200);\r\n }\r\n ev.stopPropagation();\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n this.inputElement = this.inputBuilder.toDOM();\r\n\r\n domel(this.element)\r\n .addChildElement(this.inputElement);\r\n }\r\n\r\n protected showEditor(): void {\r\n const MIN_WIDTH = 200;\r\n\r\n if (!browserUtils.isMobileMode()) {\r\n let left = this.element.offsetLeft;\r\n let width = this.element.offsetWidth > MIN_WIDTH ? this.element.offsetWidth : MIN_WIDTH;\r\n let maxWidth = this.element.parentElement.clientWidth - left - 55;\r\n\r\n this.inputBuilder\r\n .removeStyle('left')\r\n .removeStyle('right');\r\n if (maxWidth < MIN_WIDTH) {\r\n this.inputBuilder\r\n .setStyle('right', '55px')\r\n .setStyle('width', `${MIN_WIDTH}px`);\r\n }\r\n else if (maxWidth < width) {\r\n this.inputBuilder\r\n .setStyle('left', `${left}px`)\r\n .setStyle('width', `${maxWidth}px`);\r\n }\r\n else {\r\n this.inputBuilder\r\n .setStyle('left', `${left}px`)\r\n .setStyle('width', `${width}px`);\r\n }\r\n }\r\n\r\n domel(this.labelElement).hide();\r\n this.inputBuilder\r\n .value(this.getValue())\r\n .show();\r\n this.inputElement.focus();\r\n }\r\n\r\n protected closeEditor(): void {\r\n this.inputBuilder.hide();\r\n domel(this.labelElement).show();\r\n this.labelElement.focus();\r\n }\r\n\r\n protected validateInput(inputValue : string) : ValidationResult {\r\n this.inputBuilder.removeClass(\"eqjs-invalid\");\r\n \r\n const result = {\r\n success: true,\r\n value: inputValue\r\n };\r\n\r\n if (this.expression.kind == DataKind.List) {\r\n this.validateListInput(inputValue, result);\r\n }\r\n else {\r\n this.validateScalarInput(inputValue, result);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n protected validateListInput(inputValue: string, result: ValidationResult) : void {\r\n let inputValues = inputValue.split(/\\s*,\\s*/);\r\n for (let val of inputValues) {\r\n this.validateScalarInput(val, result);\r\n if (!result.success) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n protected validateScalarInput(inputValue: string, result: ValidationResult) : void {\r\n if (!inputValue)\r\n return;\r\n \r\n if (dataUtils.isNumericType(this.expression.dataType)) {\r\n let parsedVal = +inputValue;\r\n if (isNaN(parsedVal)) {\r\n result.success = false;\r\n result.message = '\"' + inputValue + '\" ' + i18n.getText('ErrNotNumber');\r\n }\r\n if (dataUtils.isIntType(this.expression.dataType) && parsedVal != parseInt(inputValue, 10)) {\r\n result.success = false;\r\n result.message = '\"' + inputValue + '\" ' + i18n.getText('ErrIncorrectInteger');\r\n }\r\n }\r\n }\r\n\r\n protected showValidationError(message: string, target?: EventTarget) : void {\r\n super.showValidationError(message, target);\r\n\r\n this.inputBuilder.addClass(\"eqjs-invalid\");\r\n }\r\n\r\n protected isEditable(): boolean {\r\n return super.isEditable() \r\n && ((this.panel.options.editableParts & QPEditablePart.Value) === QPEditablePart.Value)\r\n }\r\n\r\n}\r\n","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\n\r\nimport { \r\n eqconsts, DataKind, ConditionPart,\r\n} from '@easyquery/core';\r\n\r\nimport { domel } from '@easydata/ui';\r\n\r\nimport { ExpressionRenderer } from './expression_renderer';\r\nimport { \r\n PopupMenu, \r\n PopupMenuOptions, \r\n MenuItem \r\n} from '../../../utils/popup_menu';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\n\r\n\r\nexport class ListExpressionRenderer extends ExpressionRenderer {\r\n\r\n protected menu: PopupMenu | null;\r\n protected menuItemsList: MenuItem[] = [];\r\n\r\nprotected showWhenReady = false;\r\n\r\n protected isEditable(): boolean {\r\n return !this.isReadOnly()\r\n && ((this.panel.options.editableParts & QPEditablePart.Value) === QPEditablePart.Value)\r\n }\r\n \r\n protected setValue(value: string | string[], silent = false): boolean {\r\n const newValue = this.adjustNewValue(value);\r\n if (value !== this.expression.value) {\r\n const text = this.getValueText(value);\r\n this.expression.setContent(newValue, text);\r\n\r\n if (!silent) {\r\n this.expression.getParent().fireChangedEvent(ConditionPart.Value);\r\n }\r\n }\r\n \r\n return true;\r\n }\r\n\r\n protected getValueText(value: string | string[]): string {\r\n let result = \"\";\r\n\r\n if (Array.isArray(value)) {\r\n for(let item of this.menuItemsList) {\r\n if (value.indexOf(item.id) >= 0) {\r\n result += item.text + ',';\r\n }\r\n }\r\n } else {\r\n for(let item of this.menuItemsList) {\r\n if (item.id === value) {\r\n result += item.text + ',';\r\n }\r\n }\r\n }\r\n\r\n if (result) {\r\n result = result.substring(0, result.length - 1);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n protected getEmptyText(): string {\r\n return this.panel.options.emptyTextList || i18n.getText('MsgEmptyListValue'); \r\n }\r\n\r\n protected getListName(): string {\r\n return this.valueEditor.name;\r\n }\r\n\r\n protected renderEditor(): void {\r\n this.fillMenuItemsList(() => {\r\n this.renderMenuBlock();\r\n });\r\n }\r\n\r\n protected getLabelText(): string {\r\n if (!this.expression.isEmpty()) {\r\n return this.expression.getText();\r\n }\r\n else {\r\n return this.getEmptyText();\r\n }\r\n }\r\n\r\n protected showLoader() {\r\n //NOTHING TO DO\r\n }\r\n\r\n protected hideLoader() {\r\n //NOTHING TO DO\r\n }\r\n\r\n protected showEditor() : void {\r\n if (this.menu) {\r\n this.menu.showMenu({\r\n anchor: this.labelElement, \r\n selectedIds: this.getValuesAsArray(),\r\n itemSelectedCallback: (item, selectedItems) => { \r\n if (!this.menu.options.multiselect) {\r\n this.setValue(item.id);\r\n }\r\n else if (selectedItems) {\r\n let selectedIds = [];\r\n let selLength = selectedItems.length;\r\n for (let i = 0; i < selLength; i++)\r\n selectedIds.push(selectedItems[i].id);\r\n\r\n this.setValue(selectedIds);\r\n } \r\n\r\n return false;\r\n }\r\n });\r\n } else {\r\n this.showWhenReady = true;\r\n this.showLoader();\r\n }\r\n } \r\n \r\n protected closeEditor() : void {\r\n this.menu.hideMenu();\r\n }\r\n\r\n protected renderMenuBlock() : void { \r\n let multiSelect = false;\r\n if (this.expression) {\r\n multiSelect = this.expression.kind === DataKind.List;\r\n }\r\n\r\n const queryPanel = this.panel;\r\n\r\n const options: PopupMenuOptions = {\r\n items: this.menuItemsList,\r\n multiselect: multiSelect,\r\n container: queryPanel ? queryPanel.options.menuContainer : null,\r\n showSelected: true,\r\n showItemIds: queryPanel ? queryPanel.options.showIdsForListItems : false\r\n };\r\n\r\n if (queryPanel) {\r\n dataUtils.assignDeep(options, queryPanel.options.menuOptions);\r\n };\r\n\r\n let menuId = this.element.id;\r\n if (menuId) {\r\n options.id = menuId + '-EditorMenu';\r\n }\r\n\r\n if (queryPanel) {\r\n options.domWriteItemsId = queryPanel.options.domWriteItemsId;\r\n };\r\n\r\n options.buttons = {\r\n submit : i18n.getText('ButtonApply'),\r\n cancel : i18n.getText('ButtonCancel') \r\n }\r\n\r\n this.menu = new PopupMenu(options);\r\n }\r\n\r\n protected getValuesAsArray(): string[] {\r\n if (this.expression.kind !== DataKind.List) {\r\n return [this.expression.value];\r\n }\r\n else {\r\n if (this.expression.value) {\r\n //splits value by ',' \r\n const res = this.expression.value.match(/\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"|[^,]+/g);\r\n return res \r\n ? res.map(a => {\r\n if (a.charAt(0) == '\"' && a.charAt(a.length - 1) == '\"') {\r\n a = a.substring(1, a.length - 1);\r\n return a.replace(/\\\"/g, '\"');\r\n }\r\n else {\r\n return a;\r\n }\r\n })\r\n : [];\r\n }\r\n else \r\n return [];\r\n }\r\n }\r\n\r\n protected adjustNewValue(newValue: string | string[]): string { \r\n if (Array.isArray(newValue)) {\r\n return newValue.map((a) => {\r\n if (a.indexOf(',') >= 0) {\r\n a = a.replace(/\"/g, '\\\"');\r\n return '\"' + a + '\"';\r\n }\r\n else {\r\n return a;\r\n }\r\n }).join(',');\r\n }\r\n else {\r\n return newValue;\r\n }\r\n }\r\n\r\n protected fillMenuItemsList(onComplete?) {\r\n this.menuItemsList = this.valueEditor.values;\r\n\r\n if (onComplete) {\r\n onComplete();\r\n }\r\n }\r\n\r\n protected takeDefaultValue() {\r\n if (!this.menuItemsList) return;\r\n let itemLen = this.menuItemsList.length;\r\n let defValue = this.valueEditor.defValue;\r\n for (let i = 0; i < itemLen; i++) {\r\n let item = this.menuItemsList[i] as any;\r\n if (item.isDefault || defValue == item.id) {\r\n this.setValue(item.id, true);\r\n break; \r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class CustomListExpressionRenderer extends ListExpressionRenderer {\r\n loaderElement: HTMLElement | null;\r\n\r\n private isLoading = false;\r\n\r\n private onClickTemp = null;\r\n\r\n protected renderEditor() {\r\n if (this.isLoading) return;\r\n\r\n this.isLoading = true;\r\n this.fillMenuItemsList(() => {\r\n this.isLoading = false;\r\n\r\n if (this.isEmptyValue()) {\r\n this.takeDefaultValue();\r\n }\r\n\r\n if (!this.expression.isEmpty() && this.expression._isDefaultValue) {\r\n const text = this.getValueText(this.expression.value);\r\n this.expression.setContent(this.expression.value, text);\r\n this.expression.getParent().fireChangedEvent();\r\n }\r\n\r\n this.renderMenuBlock();\r\n\r\n if (this.showWhenReady) {\r\n this.showWhenReady = false;\r\n this.hideLoader();\r\n this.showEditor();\r\n }\r\n });\r\n }\r\n\r\n protected showLoader() {\r\n this.labelElement.style.display = 'none';\r\n if (!this.loaderElement) {\r\n this.loaderElement = domel('div', this.element)\r\n .addClass(`${this.cssPrefix}-ve-loader`)\r\n .toDOM()\r\n }\r\n\r\n this.loaderElement.style.display = 'block';\r\n }\r\n\r\n protected hideLoader() {\r\n this.loaderElement.style.display = 'none';\r\n this.labelElement.removeAttribute('style');\r\n }\r\n\r\n protected fillMenuItemsList(onComplete) {\r\n const listName = this.getListName();\r\n const listRequestHandler = this.panel.getContext().getListRequestHandler();\r\n\r\n if (eqconsts.constLists[listName]) {\r\n this.menuItemsList = eqconsts.constLists[listName];\r\n if (onComplete) {\r\n onComplete();\r\n }\r\n }\r\n else if (listRequestHandler) {\r\n listRequestHandler({\r\n listName: listName,\r\n editorId: this.valueEditor.id,\r\n editorParams: this.valueEditor.extraParams,\r\n value: this.getValue()\r\n },\r\n (list) => { \r\n this.menuItemsList = list; \r\n if (onComplete) {\r\n onComplete();\r\n }\r\n }\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport class SqlListExpressionRenderer extends CustomListExpressionRenderer {\r\n protected fillMenuItemsList(onComplete?) {\r\n const context = this.panel.getContext();\r\n const editor = this.valueEditor;\r\n const listRequestHandler = context.getListRequestHandler();\r\n if (listRequestHandler) {\r\n let requestData = { \r\n listName: \"SQL\", \r\n editorId: this.valueEditor.id,\r\n editorParams: this.valueEditor.extraParams,\r\n value: this.getValue()\r\n };\r\n\r\n //requestData.sql = editor.sql;\r\n listRequestHandler(requestData, (list) => {\r\n this.menuItemsList = list; \r\n if (onComplete) {\r\n onComplete();\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","import { i18n } from '@easydata/core';\r\n\r\nimport { \r\n Expression,\r\n ConditionPart,\r\n} from '@easyquery/core';\r\n\r\nimport { domel } from '@easydata/ui';\r\n\r\nimport { ListExpressionRenderer } from './list_expression_renderer';\r\nimport { QueryPanel } from '../../query_panel'\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\nimport { browserUtils } from '../../../utils/browser_utils';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\n\r\nexport class AttributeExpressionRenderer extends ListExpressionRenderer {\r\n\r\n constructor(panel: QueryPanel, expression: Expression, entitiesMenu: PopupMenu, slot?: HTMLDivElement) {\r\n super(panel, expression, null, slot);\r\n\r\n this.menu = entitiesMenu;\r\n }\r\n\r\n protected renderEditor(): void {\r\n //create menu\r\n }\r\n\r\n protected getLabelText(): string {\r\n const model = this.panel.getContext().getModel();\r\n const attrId = this.expression.value;\r\n const attrObj = attrId ? model.getAttributeByIdSafe(attrId) : null;\r\n const attrFormat = this.panel.options.attrElementFormat;\r\n return attrObj ? model.getAttributeText(attrObj, attrFormat) : this.getEmptyText();\r\n }\r\n\r\n protected setValue(value: string | string[], silent = false): boolean {\r\n silent = silent && value !== this.expression.value;\r\n\r\n const result = super.setValue(value, true);\r\n if (!silent) {\r\n this.expression.getParent().fireChangedEvent(ConditionPart.EntityAttr | ConditionPart.Operator);\r\n }\r\n \r\n return result;\r\n }\r\n\r\n protected isEditable(): boolean {\r\n return !this.isReadOnly()\r\n && ((this.panel.options.editableParts & QPEditablePart.Attribute) === QPEditablePart.Attribute)\r\n }\r\n\r\n protected getEmptyText(): string {\r\n return this.panel.options.emptyTextAttribute || i18n.getText('MsgEmptyAttrValue'); \r\n }\r\n\r\n protected getClassesToAdd(): string {\r\n return `${this.cssPrefix}-condelement ${this.cssPrefix}-attrelement`;\r\n }\r\n\r\n public adjustWidth(): void {\r\n if (browserUtils.isMobileMode()) {\r\n return;\r\n }\r\n\r\n const elWidth = this.element.clientWidth;\r\n const parWidth = this.element.parentElement.clientWidth;\r\n\r\n if (elWidth > parWidth / 2) {\r\n domel(this.element)\r\n .addClass(`${this.cssPrefix}-attrelement-wide`);\r\n }\r\n }\r\n\r\n}\r\n","import { \r\n PopupMenu\r\n} from '../../utils/popup_menu';\r\nimport { BaseElementRenderer } from './base_element_renderer';\r\n\r\n\r\nexport abstract class DropDownRenderer extends BaseElementRenderer {\r\n constructor(slot?: HTMLDivElement) {\r\n super(slot);\r\n }\r\n\r\n protected abstract itemSelected(id: string): void;\r\n \r\n protected abstract getMenu(): PopupMenu;\r\n\r\n protected showEditor(): void {\r\n const menu = this.getMenu();\r\n if (menu) {\r\n menu.showMenu({\r\n anchor: this.labelElement, \r\n itemSelectedCallback: item => { \r\n this.itemSelected(item.id);\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected closeEditor(): void {\r\n const menu = this.getMenu();\r\n if (menu) \r\n menu.hideMenu();\r\n }\r\n\r\n}","import { i18n } from '@easydata/core';\r\nimport { SimpleConditionDescriptor, QueryChangeAction } from '@easyquery/core';\r\n\r\nimport { domel } from '@easydata/ui';\r\n\r\nimport { QueryPanel } from '../../query_panel';\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\nimport { DropDownRenderer } from '../dropdown_renderer';\r\nimport { eqCssPrefix } from '../../../utils/utils';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\n\r\nexport class AddRowRenderer extends DropDownRenderer {\r\n protected panel: QueryPanel;\r\n protected menu: PopupMenu;\r\n\r\n constructor(panel: QueryPanel, entitiesMenu: PopupMenu, slot?: HTMLDivElement) {\r\n super(slot);\r\n\r\n this.panel = panel;\r\n this.menu = entitiesMenu;\r\n }\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-qp';\r\n }\r\n\r\n protected getLabelText(): string {\r\n return i18n.getText('CmdClickToAddCondition');\r\n }\r\n\r\n protected getClassesToAdd(): string {\r\n return `${eqCssPrefix}-addrow ${this.cssPrefix}-addrow`;\r\n }\r\n\r\n protected isEditable(): boolean {\r\n return super.isEditable() \r\n && ((this.panel.options.editableParts & QPEditablePart.Addition) === QPEditablePart.Addition)\r\n }\r\n\r\n protected renderLabelElement(): HTMLElement {\r\n const displayedText = this.getLabelText();\r\n\r\n if (this.isEditable()) {\r\n this.labelElement = domel('a')\r\n .attr('href', 'javascript:void(0)')\r\n .title(displayedText)\r\n .text(displayedText)\r\n .on('click', (ev) => { //touchstart \r\n ev.preventDefault();\r\n this.showEditor();\r\n return false;\r\n })\r\n .toDOM();\r\n }\r\n else {\r\n this.labelElement = domel('div')\r\n .toDOM();\r\n }\r\n\r\n return this.labelElement;\r\n }\r\n\r\n protected renderEditor(): void {\r\n // do nothing - the menu is alredy created\r\n }\r\n\r\n protected itemSelected(id: string): void {\r\n const query = this.panel.getQuery();\r\n\r\n const descr: SimpleConditionDescriptor = {\r\n parent: query.getRootCondition(),\r\n attributeId: id\r\n }\r\n \r\n const cond = query.addSimpleCondition(descr);\r\n\r\n if (cond) {\r\n query.fireConditionsChangedEvent(QueryChangeAction.Add, cond);\r\n }\r\n }\r\n\r\n protected getMenu(): PopupMenu {\r\n return this.menu;\r\n }\r\n\r\n}","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\n\r\nimport { \r\n Condition, Operator,\r\n DataKind, ConditionPart\r\n} from '@easyquery/core';\r\n\r\nimport { DropDownRenderer } from '../dropdown_renderer';\r\nimport { QueryPanel } from '../../query_panel';\r\nimport { PopupMenu, PopupMenuOptions } from '../../../utils/popup_menu';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\n\r\nexport class OperatorRenderer extends DropDownRenderer {\r\n protected panel: QueryPanel;\r\n protected condition: Condition;\r\n protected displayedText: string;\r\n protected menu: PopupMenu;\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-qp';\r\n }\r\n\r\n constructor(panel: QueryPanel, condition: Condition, text: string, slot?: HTMLDivElement) {\r\n super(slot);\r\n\r\n this.panel = panel;\r\n this.condition = condition;\r\n this.displayedText = text;\r\n }\r\n\r\n protected renderEditor(): void {\r\n //create menu\r\n const model = this.panel.getContext().getModel();\r\n const query = this.panel.getQuery();\r\n\r\n const items = [];\r\n\r\n const isRelatedToSubQuery = (operator: Operator) : boolean => {\r\n return operator.defaultOperand.kind == DataKind.Query;\r\n\r\n }\r\n\r\n const attrId = (this.condition && this.condition.expressions && this.condition.expressions[0]) ? this.condition.expressions[0].value : null;\r\n const attr = attrId ? model.getAttributeById(this.condition.expressions[0].value) : null;\r\n if (attr && attr.operators) {\r\n attr.operators.forEach(operId => {\r\n\r\n const operator = model.getOperatorById(operId);\r\n const related = isRelatedToSubQuery(operator);\r\n\r\n if (!query.isEx() && related) {\r\n return;\r\n }\r\n\r\n if (operator && !(this.panel.options.isSubQuery && related)) {\r\n items.push({ \r\n id: operId, \r\n text: i18n.getText('Operators', operId, 'caption') || operator.caption\r\n });\r\n }\r\n });\r\n } \r\n\r\n const options: PopupMenuOptions = { \r\n items: items, \r\n adjustHeight: this.panel.options.adjustEntitiesMenuHeight, \r\n id: dataUtils.generateId('opmn'), \r\n domWriteItemsId: this.panel.options.domWriteItemsId \r\n };\r\n dataUtils.assign(options, this.panel.options.menuOptions);\r\n this.menu = new PopupMenu(options);\r\n }\r\n\r\n protected getLabelText(): string {\r\n return this.displayedText;\r\n }\r\n\r\n protected getEmptyText(): string {\r\n return this.panel.options.emptyTextOperator || i18n.getText('MsgEmptyOperator'); \r\n }\r\n\r\n protected getClassesToAdd(): string {\r\n return `${this.cssPrefix}-condelement ${this.cssPrefix}-operelement`;\r\n }\r\n\r\n protected isEditable(): boolean {\r\n return this.condition.enabled && !this.condition.isReadOnly()\r\n && ((this.panel.options.editableParts & QPEditablePart.Operator) === QPEditablePart.Operator)\r\n }\r\n\r\n protected itemSelected(id: string): void {\r\n this.condition.setOperatorId(id);\r\n this.condition.fireChangedEvent(ConditionPart.Operator);\r\n }\r\n\r\n protected getMenu(): PopupMenu {\r\n return this.menu;\r\n }\r\n}\r\n","import { i18n, DataType, utils as dataUtils } from '@easydata/core';\r\nimport { DateTimePicker, DefaultDateTimePicker, DateTimePickerOptions } from '@easydata/ui';\r\n\r\nimport { ExpressionRenderer } from './expression_renderer';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\n\r\nexport class DateTimeExpressionRenderer extends ExpressionRenderer {\r\n private dtp: DateTimePicker = null;\r\n\r\n private internalDateFormat = 'yyyy-MM-dd';\r\n private internalTimeFormat = 'HH:mm';\r\n\r\n protected renderEditor(): void { \r\n } \r\n \r\n protected showEditor(): void {\r\n if (this.dtp)\r\n return;\r\n\r\n const pickerOptions: DateTimePickerOptions = {\r\n yearRange: this.panel.options.yearRange,\r\n showCalendar: this.expression.dataType !== DataType.Time,\r\n showTimePicker: this.expression.dataType !== DataType.Date,\r\n oneClickDateSelection: this.panel.options.oneClickDateSelection,\r\n showDateTimeInput: this.panel.options.showDateTimeInput,\r\n onApply: (dateTime: Date) => {\r\n const value = this.convertToInternalFormat(dateTime);\r\n this.setValue(value);\r\n \r\n this.dtp = null;\r\n setTimeout(() => this.labelElement.focus(), 100);\r\n },\r\n onCancel: ()=> {\r\n this.labelElement.innerText = this.getLabelText();\r\n this.dtp = null;\r\n setTimeout(() => this.labelElement.focus(), 100);\r\n },\r\n onDateTimeChanged: (dateTime: Date) => {\r\n const value = i18n.dateTimeToStr(dateTime, this.expression.dataType);\r\n this.labelElement.innerText = value;\r\n }\r\n };\r\n\r\n this.dtp = this.panel.options.dateTimePickerResolver \r\n ? this.panel.options.dateTimePickerResolver(pickerOptions)\r\n : new DefaultDateTimePicker(pickerOptions);\r\n\r\n const model = this.expression.getModel();\r\n const value = this.expression.value;\r\n let dateTime = new Date();\r\n if (this.expression.dataType != DataType.Time && model.isDateMacro(value)) {\r\n dateTime = model.getDateMacroValue(value);\r\n } else if (this.expression.dataType == DataType.Time && model.isTimeMacro(value)) {\r\n dateTime = model.getTimeMacroValue(value);\r\n } else {\r\n dateTime = this.convertFromInternalFormat(value);\r\n }\r\n\r\n this.dtp.setDateTime(dateTime);\r\n this.dtp.show(this.element);\r\n }\r\n \r\n protected closeEditor(): void {\r\n this.dtp.cancel();\r\n this.dtp = null;\r\n }\r\n\r\n protected getLabelText(): string {\r\n if (!this.expression.value)\r\n return this.getEmptyText();\r\n\r\n const defValue = '${{Today}}';\r\n const value = this.expression.value;\r\n const model = this.expression.getModel();\r\n if (!model) {\r\n throw new Error('DataModel is not defined for ' + this.expression.value);\r\n }\r\n if (model.isDateMacro(value) || model.isTimeMacro(value)) {\r\n let macroText = value.substring(3, value.length - 2);\r\n let res = i18n.getText(macroText);\r\n return res ? res : defValue;\r\n }\r\n const result = i18n.dateTimeToStr(this.convertFromInternalFormat(value), this.expression.dataType);\r\n return result;\r\n }\r\n\r\n protected isEditable(): boolean {\r\n return super.isEditable() \r\n && ((this.panel.options.editableParts & QPEditablePart.Value) === QPEditablePart.Value)\r\n }\r\n\r\n protected convertFromInternalFormat(dateTime: string): Date {\r\n return dataUtils.strToDateTime(dateTime, this.internalDateFormat + ' ' + this.internalTimeFormat);\r\n }\r\n\r\n protected convertToInternalFormat(dateTime: Date): string {\r\n return dataUtils.dateTimeToStr(dateTime, this.internalDateFormat + ' ' + this.internalTimeFormat);\r\n }\r\n}","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\n\r\nimport {\r\n Entity, EntityAttr, \r\n QueryColumn, SortDirection, \r\n Expression, DataKind, ExprTag, \r\n Query, QueryChangeAction, Condition, ConditionPart \r\n} from '@easyquery/core';\r\n\r\nimport { domel } from '@easydata/ui';\r\n \r\nimport { ExpressionRenderer } from './expression_renderer';\r\nimport { PopupMenu, PopupMenuOptions } from '../../../utils/popup_menu';\r\nimport { QueryPanel } from '../../query_panel';\r\nimport { QPEditablePart } from '../../../types/qp_editable_part';\r\n\r\nexport class SubQueryExpressionRenderer extends ExpressionRenderer {\r\n\r\n protected dialogBlock: HTMLElement;\r\n protected dialogBackground: HTMLElement;\r\n protected dialogBlockBody: HTMLElement;\r\n protected columnBlock: HTMLElement;\r\n protected columnElement: HTMLElement;\r\n protected queryPanelBlock: HTMLElement;\r\n\r\n protected queryPanel: QueryPanel\r\n\r\n protected colEntitiesMenu: PopupMenu;\r\n protected colEntitiesList: Entity[];\r\n\r\n protected renderEditor(): void {\r\n\r\n this.dialogBlockBody = domel('div')\r\n .addClass(`kfrm-form`)\r\n //.setStyle('height', '100%')\r\n .toDOM();\r\n \r\n this.createEntitiesMenu();\r\n\r\n this.renderColumnBlock();\r\n this.renderQueryPanelBlock();\r\n } \r\n\r\n protected isEditable(): boolean {\r\n return super.isEditable() \r\n && ((this.panel.options.editableParts & QPEditablePart.Value) === QPEditablePart.Value)\r\n }\r\n\r\n protected setValue(value: string | Query, silent?: boolean) {\r\n if (value instanceof Query) {\r\n this.expression.subQuery = value;\r\n\r\n if (!silent) {\r\n this.expression.getParent().fireChangedEvent(ConditionPart.Value);\r\n }\r\n \r\n }\r\n }\r\n \r\n private createEntitiesMenu() {\r\n const model = this.getContext().getModel();\r\n const exprType = this.expression.dataType;\r\n\r\n this.colEntitiesList = model.getEntitiesTreeWithFilter((ent: Entity, attr: EntityAttr) => {\r\n if (attr) {\r\n return attr.useInConditions && attr.dataType === exprType;\r\n }\r\n else {\r\n //if it's entity\r\n return ent.attributes && ent.useInConditions;\r\n }\r\n });\r\n\r\n if (!model || model.isEmpty()) return null;\r\n\r\n let menuId = this.element.getAttribute('data-id');\r\n if (menuId) {\r\n menuId += '-SubColumnMenu';\r\n }\r\n\r\n const options: PopupMenuOptions = { \r\n items: this.colEntitiesList as any, \r\n adjustHeight: this.panel.options.adjustEntitiesMenuHeight, \r\n id: menuId, \r\n isSubQuery: true,\r\n domWriteItemsId: this.panel.options.domWriteItemsId \r\n }\r\n\r\n dataUtils.assign(options, this.panel.options.menuOptions);\r\n this.colEntitiesMenu = new PopupMenu(options);\r\n }\r\n\r\n private renderColumnBlock() {\r\n this.columnBlock = domel('div', this.dialogBlockBody)\r\n .addClass(`kfrm-field`)\r\n .addChild('label', b => b\r\n .addText(i18n.getText('SubQueryColumnTitle'))\r\n )\r\n .addChild('a', b => this.columnElement = b\r\n .attr('href', 'javascript:void(0)')\r\n .on('click', (e) => {\r\n this.colEntitiesMenu.showMenu({\r\n anchor: this.columnElement, \r\n selectedIds: null, \r\n itemSelectedCallback: (data, items) => {\r\n const attrId = data.id;\r\n this.setResultAttributeId(attrId);\r\n return false;\r\n }\r\n })\r\n })\r\n .toDOM()\r\n )\r\n .toDOM();\r\n }\r\n\r\n protected getEmptyText(): string {\r\n return this.panel.options.emptyTextValue || i18n.getText('MsgSubQueryValue');\r\n }\r\n\r\n private renderQueryPanelBlock() {\r\n const parentEl = domel('div', this.dialogBlockBody)\r\n .addClass(`kfrm-field`)\r\n .addChild('label', b => b\r\n .addText(i18n.getText('SubQueryQueryPanelCaption'))\r\n )\r\n .toDOM();\r\n\r\n this.queryPanelBlock = \r\n domel('div', parentEl)\r\n .toDOM();\r\n \r\n let qpId = this.element.getAttribute('data-id');\r\n if (qpId) {\r\n this.queryPanelBlock.id = qpId + '-SubQueryPanel';\r\n }\r\n }\r\n\r\n private setResultAttributeId(attrId: string) {\r\n let attrObj = this.getContext().getModel().getAttributeById(attrId);\r\n\r\n if (attrObj) {\r\n let subQuery = this.getSubQuery();\r\n\r\n let cols:QueryColumn[] = subQuery.getColumns();\r\n let column: QueryColumn;\r\n\r\n if (cols.length > 0) {\r\n column = cols[0];\r\n column.expr.setValue(attrId);\r\n column.expr.dataType = attrObj.dataType;\r\n column.fireChangedEvent();\r\n }\r\n else {\r\n column = subQuery.createColumn();\r\n column.sorting = SortDirection.None;\r\n column.sortIndex = -1;\r\n\r\n let expr = new Expression(column);\r\n expr.setValue(attrId);\r\n expr.tag = ExprTag.EntityAttribute\r\n expr.kind = DataKind.Attribute;\r\n expr.dataType = attrObj.dataType;\r\n\r\n column.expr = expr;\r\n\r\n cols.push(column);\r\n subQuery.fireColumnsChangedEvent(QueryChangeAction.Add, column);\r\n }\r\n\r\n\r\n this.columnElement.innerText = this.getAttributeText(attrObj);\r\n }\r\n }\r\n\r\n protected getSubQuery(): Query {\r\n return this.queryPanel.getQuery();\r\n }\r\n\r\n protected getAttributeText(attribute: EntityAttr): string {\r\n\r\n if (!attribute) \r\n return i18n.getText('SubQueryEmptyColumn');\r\n\r\n let attrText = i18n.getText('Attributes', attribute.id);\r\n if (!attrText)\r\n attrText = attribute.caption;\r\n\r\n\r\n let format = this.panel.options.attrElementFormat;\r\n if (!format) \r\n return attrText;\r\n\r\n let result = format.replace(new RegExp(\"{attr}\",'g'), attrText);\r\n let entityPath = this.getContext()\r\n .getModel()\r\n .getFullEntityPathByAttr(attribute.id, '.');\r\n\r\n return result.replace(new RegExp(\"{entity}\",'g'), entityPath);\r\n }\r\n \r\n protected showEditor(): void {\r\n const parentPanel = this.panel;\r\n const context = this.getContext();\r\n\r\n this.queryPanelBlock.innerHTML = \"\";\r\n\r\n const subQuery = context.createQuery();\r\n if (this.expression.subQuery) {\r\n subQuery.loadFromData(this.expression.subQuery.toJSONData())\r\n }\r\n\r\n let subOptions = dataUtils.assign({}, parentPanel.options);\r\n subOptions.isSubQuery = true;\r\n subOptions.showAddRow = true;\r\n subOptions.menuContainer = document.body;\r\n subOptions.menuOptions.isSubQuery = true;\r\n subOptions.entitiesListFilter = (listItems, listOptions) => {\r\n if (parentPanel.options.entitiesListFilter) {\r\n let subQueryPanelListOptions = listOptions || {};\r\n subQueryPanelListOptions.isSubQuery = true;\r\n parentPanel.options.entitiesListFilter(listItems, subQueryPanelListOptions);\r\n }\r\n };\r\n\r\n this.queryPanel = new QueryPanel(this.queryPanelBlock, subQuery);\r\n\r\n this.queryPanel.init(this.panel.getContext(), subOptions);\r\n\r\n let attrId = null;\r\n\r\n let cols = subQuery.getColumns();;\r\n\r\n if (cols.length == 0) {\r\n let condition: Condition = this.expression.getParent() as Condition;\r\n if (condition.expressions.length > 0) {\r\n let attrExpr = condition.expressions[0];\r\n attrId = (attrExpr.tag == ExprTag.EntityAttribute \r\n || attrExpr.kind == DataKind.Attribute) ? attrExpr.value : null;\r\n }\r\n }\r\n else {\r\n attrId = cols[0].expr.value;\r\n }\r\n\r\n if (attrId) {\r\n this.setResultAttributeId(attrId);\r\n }\r\n else {\r\n this.columnElement.innerText = i18n.getText(\"SubQueryEmptyColumn\");\r\n }\r\n \r\n this.queryPanel.refresh();\r\n\r\n const rootCondEl = this.queryPanelBlock.querySelector('.eqjs-qp-conditions-root');\r\n if (rootCondEl) {\r\n (rootCondEl as HTMLElement).style.minHeight = '100px';\r\n }\r\n\r\n const dialogService = this.panel\r\n .getContext()\r\n .getServices()\r\n .getDialogService();\r\n\r\n dialogService.open({\r\n title: i18n.getText('SubQueryDialogTitle'),\r\n body: this.dialogBlockBody,\r\n width: this.panel.options.subQueryDialogWidth,\r\n //height: this.panel.options.subQueryDialogHeight,\r\n closable: true,\r\n cancelable: true,\r\n onSubmit: () => {\r\n const value = this.queryPanel.getQuery();\r\n\r\n // validate subquery\r\n if (value.tryValidate({checkExpressions: true})) {\r\n this.setValue(value);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n protected closeEditor(): void {\r\n \r\n }\r\n}","import { Condition, Expression, EqValueEditor, ExprTag } from \"@easyquery/core\";\r\nimport { CustomListExpressionRenderer } from \"./list_expression_renderer\";\r\nimport { QueryPanel } from \"../../query_panel\";\r\n\r\nexport class BindToParentColumnExpressionRenderer extends CustomListExpressionRenderer {\r\n \r\n constructor(panel: QueryPanel, expression: Expression, editor: EqValueEditor, slot?: HTMLDivElement) {\r\n super(panel, expression, editor, slot);\r\n\r\n this.expression.tag = ExprTag.ParentColumn;\r\n }\r\n\r\n protected fillMenuItemsList(onComplete?) {\r\n const query = this.panel.getQuery().getParentQuery();\r\n const parent = this.expression.getParent() as Condition;\r\n const attrDataType = parent.expressions[0].dataType;\r\n this.menuItemsList = query\r\n .getColumns()\r\n .filter(col => col.expr.dataType == attrDataType)\r\n .map(col =>{\r\n return { id: col.id, text: col.caption};\r\n });\r\n\r\n if (onComplete) {\r\n onComplete();\r\n }\r\n }\r\n \r\n}","import { i18n } from '@easydata/core';\r\nimport { DataType, utils as dataUtils } from '@easydata/core';\r\n\r\nimport { \r\n Widget, WidgetGroup, \r\n EqContext, eqconsts,\r\n Condition, CondTag, Expression, \r\n EqValueEditor, EqEditorTag, DataKind, \r\n Query, QueryChangeEventData, QueryChangePart, \r\n QueryChangeAction, SimpleConditionDescriptor, Entity, EntityAttr, ConditionPart\r\n} from '@easyquery/core';\r\n\r\nimport { domel } from '@easydata/ui';\r\n\r\nimport { eqDragManager, DropEffect } from '@easydata/ui'\r\n\r\nimport { QPEditablePart } from '../types/qp_editable_part';\r\n\r\nimport { QueryPanelOptions } from './widget_options';\r\nimport { PopupMenu, PopupMenuOptions } from '../utils/popup_menu';\r\nimport { ConditionRenderer, SimpleConditionRenderer } from './renderers/querypanel/condition_renderer';\r\nimport { ConditionGroupRenderer } from './renderers/querypanel/condition_group_renderer';\r\n\r\nimport { ExpressionRenderer } from './renderers/querypanel/expression_renderer';\r\nimport { InputExpressionRenderer } from './renderers/querypanel/input_expression_renderer';\r\nimport { AttributeExpressionRenderer } from './renderers/querypanel/attribute_expression_renderer';\r\nimport { AddRowRenderer } from './renderers/querypanel/addrow_renderer';\r\nimport { \r\n ListExpressionRenderer, \r\n SqlListExpressionRenderer, \r\n CustomListExpressionRenderer \r\n} from './renderers/querypanel/list_expression_renderer';\r\nimport { OperatorRenderer } from './renderers/querypanel/operator_renderer';\r\nimport { BaseElementRenderer } from './renderers/base_element_renderer';\r\nimport { DateTimeExpressionRenderer } from './renderers/querypanel/datetime_expression_render';\r\nimport { SubQueryExpressionRenderer } from './renderers/querypanel/subquery_expression_renderer';\r\nimport { eqCssPrefix, eqCssMobile, safeFocus } from '../utils/utils';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { BindToParentColumnExpressionRenderer } from './renderers/querypanel/bind_to_parent_column_expression_renderer';\r\n\r\n/**\r\n * The query panel wiget, implemented without JQuery.\r\n */\r\nexport class QueryPanel extends Widget {\r\n public options: QueryPanelOptions = {\r\n editableParts: QPEditablePart.All,\r\n isSubQuery: false,\r\n activeCondition: null,\r\n entitiesPopupHandler: null,\r\n entitiesListFilter: null,\r\n menuContainer: document.body,\r\n showRootRow: true,\r\n showAddRow: true,\r\n showCheckboxes: false,\r\n allowParameterization: false,\r\n allowInJoinConditions: false,\r\n showPoweredBy: false,\r\n buttons: {\r\n condition: null,\r\n group: null\r\n },\r\n alwaysShowButtonsInGroups: false,\r\n alwaysShowButtonsInConditions: false,\r\n showConjunctions: true,\r\n accentActiveCondition: true,\r\n activateRootOnStart: true,\r\n yearRange: 'c-10:c+10',\r\n oneClickDateSelection: true,\r\n showDateTimeInput: false,\r\n attrElementFormat: '{entity} {attr}',\r\n menuOptions: {\r\n showSearchBoxAfter: 30,\r\n searchBoxAutoFocus: true,\r\n activateOnMouseOver: true,\r\n itemRenderedCallback: null\r\n },\r\n allowDragDrop: true,\r\n attrPlacement: 0,\r\n sortEntities: false,\r\n subQueryDialogWidth: 600,\r\n subQueryDialogHeight: 300,\r\n dialogZIndex: 100000,\r\n numberListSeparators: [',', ';'],\r\n autoEditNewCondition: false,\r\n onConditionRendered: null,\r\n onGetConditionRenderer: null,\r\n onGetExpressionRenderer: null,\r\n onGetOperatorRenderer: null,\r\n onOperatorRendered: null,\r\n onGetAddRowRenderer: null,\r\n defaultQuery: null,\r\n showIndicatorOnLoad: true\r\n };\r\n\r\n private addRowElement: HTMLDivElement;\r\n private rootContainer: HTMLDivElement;\r\n private progressBlock: HTMLElement;\r\n\r\n private entitiesMenu: PopupMenu;\r\n private conditionMenu: PopupMenu;\r\n private groupMenu: PopupMenu;\r\n private rootGroupMenu: PopupMenu;\r\n private linkTypeMenu: PopupMenu;\r\n\r\n private queryEventCallbackId: string;\r\n\r\n private customQuery: Query = null;\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-qp';\r\n }\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n constructor(slot: HTMLElement, customQuery?: Query) {\r\n super(slot);\r\n\r\n if (!this.slot.classList.contains(`${this.cssPrefix}-panel`)) {\r\n this.slot.classList.add(`${this.cssPrefix}-panel`);\r\n }\r\n\r\n this.group = WidgetGroup.Query;\r\n\r\n if (customQuery) {\r\n this.customQuery = customQuery;\r\n }\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'queryPanel';\r\n }\r\n\r\n /**\r\n * Initialize widget.\r\n * @param context The context. \r\n * @param options The options.\r\n */\r\n public init(context: EqContext, options?: QueryPanelOptions) {\r\n super.init(context, options);\r\n\r\n this.setOptions(options);\r\n this.renderProgressBlock();\r\n\r\n //detach previously defined query observer (if any)\r\n this.detachQueryObserver();\r\n this.attachQueryObserver();\r\n\r\n eqDragManager.removeDropContainer(this.slot);\r\n if (this.options.allowDragDrop) {\r\n const model = this.getContext().getModel();\r\n eqDragManager.registerDropContainer({\r\n element: this.slot,\r\n scopes: [\"entityAttr\"],\r\n onDragEnter: (container, ev) => {\r\n \r\n this.slot.classList.add(`${eqCssPrefix}-drophover`);\r\n ev.dragImage.classList.add('eqjs-sortable-helper');\r\n\r\n this.showLandingSlot();\r\n\r\n const attrId: string = ev.data.attrId;\r\n if (!model.checkAttrProperty(attrId, \"useInConditions\")) {\r\n ev.dropEffect = DropEffect.Forbid; \r\n }\r\n },\r\n onDragOver: (container, ev) => {\r\n \r\n },\r\n onDragLeave: (container, ev) => {\r\n \r\n ev.dragImage.classList.remove('eqjs-sortable-helper')\r\n ev.dragImage.style.removeProperty('width');\r\n\r\n this.slot.classList.remove(`${eqCssPrefix}-drophover`);\r\n\r\n this.hideLangindSlot();\r\n\r\n },\r\n onDrop: (container, ev) => {\r\n const query = this.getQuery();\r\n\r\n const descr: SimpleConditionDescriptor = {\r\n parent: query.getRootCondition(),\r\n attributeId: ev.data.attrId\r\n }\r\n \r\n const cond = query.addSimpleCondition(descr);\r\n \r\n if (cond) {\r\n query.fireConditionsChangedEvent(QueryChangeAction.Add, cond);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected destroyCore() {\r\n eqDragManager.removeDropContainer(this.slot);\r\n this.detachQueryObserver();\r\n\r\n this.slot.innerHTML = '';\r\n }\r\n\r\n public getEntitiesMenu(): PopupMenu {\r\n return this.entitiesMenu;\r\n }\r\n\r\n public getConditionMenu(): PopupMenu {\r\n return this.conditionMenu;\r\n }\r\n\r\n public getLinkTypeMenu(): PopupMenu {\r\n return this.linkTypeMenu;\r\n }\r\n\r\n public getConditionGroupMenu(isRoot: boolean = false): PopupMenu {\r\n return isRoot ? this.rootGroupMenu : this.groupMenu;\r\n }\r\n\r\n private attachQueryObserver() {\r\n const query = this.getQuery();\r\n\r\n this.queryEventCallbackId = query.addChangedCallback(event => {\r\n //if something has changed, and that change is related to conditions\r\n const edata = event.data as QueryChangeEventData;\r\n if (!edata || (edata.part != QueryChangePart.Conditions && edata.part != QueryChangePart.All)) {\r\n return;\r\n }\r\n\r\n const focusedBefore = document.activeElement;\r\n const isFocusInside = this.slot.contains(focusedBefore) || focusedBefore == document.body;\r\n\r\n switch (edata.action) {\r\n case QueryChangeAction.Modify: {\r\n const conds = edata.changee as Condition | Condition[];\r\n\r\n const modifyCondition = (cond: Condition, autoEdit: boolean) => {\r\n const el = this.slot.querySelector(`div[data-id=${cond.id}]`);\r\n if (el) {\r\n autoEdit = autoEdit\r\n && ((edata.condPart & ConditionPart.Operator) === ConditionPart.Operator)\r\n && cond.expressions.length > 1\r\n && (cond.expressions[1]._isDefaultValue || cond.expressions[1].value == '' ||\r\n cond.expressions[1].value == null); \r\n\r\n const isActive = el.classList.contains('active');\r\n const renderer = this.getConditionRenderer(cond, el as HTMLDivElement);\r\n if (renderer) {\r\n const newEl = renderer.render(autoEdit);\r\n if (isActive) {\r\n this.toggleConditionPicked(cond);\r\n }\r\n\r\n if (isFocusInside && !autoEdit) {\r\n const focusElem = newEl.querySelector('a') || newEl.querySelector('.eqjs-qp-condition-button');\r\n if (focusElem) {\r\n safeFocus(focusElem);\r\n }\r\n }\r\n \r\n }\r\n }\r\n }\r\n\r\n let autoEdit = this.options.autoEditNewCondition;\r\n if (Array.isArray(conds)) {\r\n conds.forEach((cond) => modifyCondition(cond, autoEdit));\r\n autoEdit = false;\r\n } \r\n else {\r\n modifyCondition(conds, autoEdit);\r\n }\r\n\r\n break;\r\n }\r\n case QueryChangeAction.Add: {\r\n \r\n const conds = edata.changee as Condition | Condition[];\r\n\r\n const addCondition = (cond: Condition) => {\r\n const renderer = this.getConditionRenderer(cond);\r\n if (renderer) {\r\n const parent = cond.getParent();\r\n const parentEl = this.slot.querySelector(`div[data-id=${parent.id}]`);\r\n if (parentEl) {\r\n const newCondContainer = parentEl.lastChild;\r\n if (newCondContainer) {\r\n const el = renderer.render(this.options.autoEditNewCondition);\r\n newCondContainer.appendChild(el);\r\n \r\n el.scrollIntoView(false);\r\n\r\n if (isFocusInside && !this.options.autoEditNewCondition) {\r\n el.querySelector(`a`).focus();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (Array.isArray(conds)) {\r\n conds.forEach((cond) => addCondition(cond));\r\n } \r\n else {\r\n addCondition(conds);\r\n }\r\n \r\n break;\r\n }\r\n case QueryChangeAction.Delete: {\r\n const conds = edata.changee as Condition | Condition[];\r\n\r\n const deleteCondition = (cond: Condition) => {\r\n const el = this.slot.querySelector(`div[data-id=${cond.id}]`);\r\n\r\n if (el) {\r\n const parent = this.slot.querySelector(`div[data-id=${cond.getParent().id}] > .eqjs-qp-row-group`);;\r\n const next = el.nextSibling;\r\n const prev = el.previousSibling;\r\n\r\n el.parentElement.removeChild(el);\r\n\r\n if (isFocusInside) {\r\n const focusCond = next || prev || parent;\r\n const focusElem =(focusCond as HTMLElement).querySelector('a') || (focusCond as HTMLElement).querySelector('.eqjs-qp-condition-button');\r\n if (focusElem) {\r\n focusElem.focus();\r\n }\r\n }\r\n }\r\n \r\n }\r\n\r\n if (Array.isArray(conds)) {\r\n conds.forEach((cond) => deleteCondition(cond));\r\n } \r\n else {\r\n deleteCondition(conds);\r\n }\r\n\r\n break;\r\n }\r\n\r\n default:\r\n this.refresh();\r\n break;\r\n }\r\n })\r\n }\r\n\r\n private detachQueryObserver() {\r\n if (this.queryEventCallbackId) {\r\n const query = this.getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n }\r\n\r\n public getQuery(): Query {\r\n if (this.customQuery) {\r\n return this.customQuery;\r\n }\r\n \r\n return this.context.getQuery();\r\n }\r\n\r\n protected refreshCore() { \r\n this.clear();\r\n this.render();\r\n }\r\n\r\n protected setOptions(options?: QueryPanelOptions) {\r\n dataUtils.assignDeep(this.options, options);\r\n\r\n // dateFormatValue & dateFormatDisplay back compatibility\r\n if (this.options.dateFormatValue) {\r\n i18n.updateLocaleSettings({\r\n editDateFormat: this.options.dateFormatValue\r\n });\r\n }\r\n\r\n if (this.options.dateFormatDisplay) {\r\n i18n.updateLocaleSettings({\r\n shortDateFormat: this.options.dateFormatDisplay\r\n });\r\n }\r\n\r\n if (typeof this.options.editableParts === \"undefined\") {\r\n this.options.editableParts = QPEditablePart.All;\r\n }\r\n\r\n if (browserUtils.isMobileMode()) {\r\n this.options.buttons = this.options.buttons || {}\r\n this.options.buttons.condition = [\"menu\"];\r\n this.options.buttons.group = [\"menu\"];\r\n }\r\n }\r\n\r\n protected clear() {\r\n this.slot.innerHTML = \"\";\r\n }\r\n\r\n protected render() {\r\n try {\r\n this.entitiesMenu = this.createEntitiesMenu();\r\n this.createConditionMenus();\r\n this.createLinkTypeMenu();\r\n\r\n this.rootContainer = domel('div', this.slot)\r\n .toDOM();\r\n\r\n domel(this.slot)\r\n .removeClass(eqCssMobile)\r\n .addClass(browserUtils.getMobileCssClass());\r\n \r\n const query = this.getQuery();\r\n const root = query.getRootCondition();\r\n\r\n const renderer = this.getConditionRenderer(root, this.rootContainer);\r\n if (renderer) {\r\n renderer.render();\r\n }\r\n\r\n if (this.options.showAddRow) {\r\n this.addRowElement = domel('div', this.slot)\r\n .toDOM();\r\n const addrowRenderer = this.getAddRowRenderer(this.addRowElement);\r\n if (addrowRenderer)\r\n addrowRenderer.render();\r\n }\r\n }\r\n catch (err) {\r\n const error = err as any;\r\n this.context.throwError({\r\n action: \"QueryPanel rendering\",\r\n text: error.message,\r\n sourceError: error\r\n });\r\n }\r\n }\r\n\r\n public getConditionRenderer(condition: Condition, slot?: HTMLDivElement): ConditionRenderer | null {\r\n let renderer: ConditionRenderer;\r\n if (this.options.onGetConditionRenderer) {\r\n renderer = this.options.onGetConditionRenderer(condition, slot);\r\n\r\n if (renderer) {\r\n return renderer;\r\n } \r\n }\r\n \r\n switch(condition.tag) {\r\n case CondTag.Simple:\r\n return new SimpleConditionRenderer(this, condition, slot);\r\n case CondTag.Group:\r\n return new ConditionGroupRenderer(this, condition, slot);\r\n } \r\n\r\n return null;\r\n }\r\n\r\n public getExpressionRenderer(expression: Expression, slot?: HTMLDivElement): ExpressionRenderer | null {\r\n if (!expression) {\r\n throw 'Expression is not defined in the condition';\r\n }\r\n\r\n const model = this.getContext().getModel();\r\n const condition = expression.getParent() as Condition;\r\n const operator = model.getOperatorById(condition.getOperatorId());\r\n const attribute = model.getAttributeByIdSafe(condition.expressions[0].value);\r\n const operand = model.getOperand(attribute, operator, expression.getIndex());\r\n\r\n let editor: EqValueEditor;\r\n let tag: EqEditorTag;\r\n\r\n if (operand && operand.editor && operand.editor.tag !== EqEditorTag.Unknown) {\r\n editor = operand.editor;\r\n }\r\n else if (attribute && attribute.defaultEditor) {\r\n editor = attribute.defaultEditor;\r\n }\r\n else {\r\n editor = new EqValueEditor();\r\n }\r\n\r\n tag = editor.tag;\r\n \r\n let exprType = expression.dataType;\r\n if (exprType == DataType.Unknown) {\r\n exprType = attribute.dataType;\r\n }\r\n\r\n if (expression.kind === DataKind.Attribute) {\r\n if (expression.getIndex() === 0) { // Base attribute expression\r\n return new AttributeExpressionRenderer(this, expression, this.entitiesMenu, slot);\r\n }\r\n else {\r\n let attributeMenu = this.createEntitiesMenu((ent: Entity, attr: EntityAttr) => {\r\n\r\n if (attr) {\r\n return attr.useInConditions && attr.dataType === exprType;\r\n }\r\n return true;\r\n });\r\n\r\n return new AttributeExpressionRenderer(this, expression, attributeMenu, slot);\r\n }\r\n }\r\n else if (expression.kind === DataKind.Query) {\r\n tag = EqEditorTag.SubQuery;\r\n }\r\n else if (expression.kind === DataKind.Scalar) {\r\n if (tag == EqEditorTag.Unknown && (expression.dataType === DataType.Date \r\n || expression.dataType === DataType.DateTime || expression.dataType === DataType.Time)) \r\n {\r\n tag = EqEditorTag.DateTime;\r\n }\r\n }\r\n else if (expression.kind == DataKind.ParentColumn) {\r\n tag = EqEditorTag.BindToParentColumn;\r\n }\r\n\r\n if (this.options.onGetExpressionRenderer) {\r\n let renderer = this.options.onGetExpressionRenderer(this, expression, editor, slot);\r\n if (renderer) {\r\n return renderer;\r\n }\r\n }\r\n\r\n switch (tag) {\r\n case EqEditorTag.List:\r\n return new ListExpressionRenderer(this, expression, editor, slot);\r\n case EqEditorTag.SqlList:\r\n return new SqlListExpressionRenderer(this, expression, editor, slot);\r\n case EqEditorTag.CustomList: \r\n return new CustomListExpressionRenderer(this, expression, editor, slot);\r\n case EqEditorTag.DateTime:\r\n return new DateTimeExpressionRenderer(this, expression, editor, slot);\r\n case EqEditorTag.SubQuery:\r\n return new SubQueryExpressionRenderer(this, expression, editor, slot);\r\n //move to ERS later\r\n case EqEditorTag.BindToParentColumn:\r\n return new BindToParentColumnExpressionRenderer(this, expression, editor, slot);\r\n default:\r\n return new InputExpressionRenderer(this, expression, editor, slot);\r\n }\r\n }\r\n\r\n public getOperatorRenderer(condition: Condition, text: string, slot?: HTMLDivElement): BaseElementRenderer | null {\r\n let renderer: BaseElementRenderer;\r\n if (this.options.onGetOperatorRenderer)\r\n renderer = this.options.onGetOperatorRenderer(condition, text, slot);\r\n\r\n if (renderer) \r\n return renderer;\r\n\r\n return new OperatorRenderer(this, condition, text, slot);\r\n }\r\n\r\n public getAddRowRenderer(slot?: HTMLDivElement): BaseElementRenderer | null {\r\n let renderer: BaseElementRenderer;\r\n if (this.options.onGetAddRowRenderer)\r\n renderer = this.options.onGetAddRowRenderer(slot);\r\n\r\n if (renderer) \r\n return renderer;\r\n\r\n return new AddRowRenderer(this, this.entitiesMenu, slot);\r\n }\r\n\r\n private createEntitiesMenu(filterFunc?: (ent: Entity, attr: EntityAttr) => boolean) : PopupMenu {\r\n const model = this.getContext().getModel();\r\n if (!model || model.isEmpty()) return null;\r\n\r\n let menuId = this.slot.id || \"eq-querypanel\";\r\n menuId += '-EntitiesMenu';\r\n\r\n const entitiesList = model.getEntitiesTree({ \r\n addUIC: true, \r\n addUIR: false, \r\n addUIS: false, \r\n attrPlacement: this.options.attrPlacement, \r\n sortEntities: this.options.sortEntities \r\n }, \r\n filterFunc);\r\n\r\n const options: PopupMenuOptions = { \r\n items: entitiesList, \r\n adjustHeight: this.options.adjustEntitiesMenuHeight, \r\n id: menuId, \r\n domWriteItemsId: this.options.domWriteItemsId \r\n }\r\n dataUtils.assign(options, this.options.menuOptions);\r\n return new PopupMenu(options);\r\n }\r\n \r\n\r\n public showEntitiesMenu(options: PopupMenuOptions) {\r\n this.entitiesMenu.showMenu(options);\r\n }\r\n\r\n private createConditionMenus() {\r\n //ConditionMenu\r\n {\r\n const query = this.getQuery();\r\n\r\n let menuId = this.slot.id || \"eq-querypanel\";\r\n menuId += '-ConditionMenu';\r\n\r\n const items = [\r\n {\r\n id: \"enable\",\r\n text:i18n.getText('MenuEnable')\r\n },\r\n {\r\n id: \"delete\",\r\n text: i18n.getText('CmdDelete')\r\n }\r\n ];\r\n\r\n if (query.isEx()) {\r\n if ( this.options.allowParameterization || this.options.allowInJoinConditions) {\r\n items.push({ id: \"delimiter\", text: \"---\" });\r\n };\r\n\r\n if (this.options.allowParameterization) {\r\n items.push({\r\n id: \"param\",\r\n text: i18n.getText('MenuParameterization')\r\n });\r\n };\r\n\r\n if (this.options.allowInJoinConditions) {\r\n items.push({\r\n id: \"inJoin\",\r\n text: i18n.getText('MenuJoinCond')\r\n });\r\n }; \r\n }\r\n \r\n const options: PopupMenuOptions = { items: items, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId, showSearchBoxAfter: 100, showSelected: true };\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.conditionMenu = new PopupMenu(options);\r\n }\r\n\r\n //groupMenu\r\n {\r\n let menuId = this.slot.id || \"eq-querypanel\";\r\n menuId += '-GroupMenu';\r\n\r\n const items = [\r\n {\r\n id: \"enable\",\r\n text: i18n.getText('MenuEnable')\r\n },\r\n {\r\n id: \"delete\",\r\n text: i18n.getText('CmdDelete')\r\n },\r\n {\r\n id: \"delimiter\",\r\n text: \"---\"\r\n },\r\n {\r\n id: \"addCondition\",\r\n text: i18n.getText('CmdAddCondition')\r\n },\r\n {\r\n id: \"addGroup\",\r\n text: i18n.getText('CmdAddCondGroup')\r\n }\r\n ];\r\n \r\n\r\n const options: PopupMenuOptions = { items: items, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId, showSearchBoxAfter: 100, showSelected: true };\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.groupMenu = new PopupMenu(options);\r\n }\r\n\r\n //rootGroupMenu\r\n {\r\n let menuId = this.slot.id || \"eq-querypanel\";\r\n menuId += '-RootGroupMenu';\r\n \r\n const items = [\r\n {\r\n id: \"addCondition\",\r\n text: i18n.getText('CmdAddCondition')\r\n },\r\n {\r\n id: \"addGroup\",\r\n text: i18n.getText('CmdAddCondGroup')\r\n }\r\n ];\r\n\r\n const options: PopupMenuOptions = { items: items, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId, showSearchBoxAfter: 100, showSelected: true };\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.rootGroupMenu = new PopupMenu(options);\r\n }\r\n\r\n }\r\n\r\n private createLinkTypeMenu() {\r\n let menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-LinkTypeMenu';\r\n }\r\n\r\n const typeList = eqconsts.predicateLinkTypeList;\r\n const itemList = typeList.map((item: eqconsts.ConstValue) => {\r\n return {\r\n id: item.id,\r\n text: i18n.getText(item.key)\r\n }\r\n })\r\n\r\n const options: PopupMenuOptions = { items: itemList, adjustHeight: this.options.adjustEntitiesMenuHeight, id: menuId, domWriteItemsId: this.options.domWriteItemsId }\r\n dataUtils.assign(options, this.options.menuOptions);\r\n this.linkTypeMenu = new PopupMenu(options);\r\n }\r\n\r\n public toggleConditionPicked(condition: Condition, force: boolean = undefined) {\r\n let el: HTMLElement;\r\n let isActive: boolean;\r\n if (condition) {\r\n el = this.slot.querySelector(`div[data-id=${condition.id}][data-condrow], div[data-id=${condition.id}] > div[data-group-row]`);\r\n if (el) {\r\n isActive = el.classList.contains('active');\r\n }\r\n }\r\n\r\n //clear 'active' in all rows\r\n const rows = this.slot.querySelectorAll(`.${this.cssPrefix}-row`);\r\n for(let i = 0; i < rows.length; i++) {\r\n const row = rows[i] as HTMLElement;\r\n if (row.hasAttribute('data-group-row')) {\r\n if (!this.options.alwaysShowButtonsInGroups) {\r\n domel(row)\r\n .data(\"show-buttons\", null)\r\n }\r\n } else {\r\n if (!this.options.alwaysShowButtonsInConditions) {\r\n domel(row)\r\n .data(\"show-buttons\", null)\r\n }\r\n }\r\n\r\n domel(row)\r\n .removeClass('active');\r\n }\r\n\r\n if (el && !isActive) {\r\n domel(el)\r\n .addClass('active')\r\n .data(\"show-buttons\", \"\")\r\n }\r\n }\r\n\r\n \r\n private landingSlot: HTMLDivElement \r\n = domel('div')\r\n .addClass(`${this.cssPrefix}-cond-landing-slot`)\r\n .addChildElement(\r\n domel('div')\r\n .toDOM())\r\n .toDOM();\r\n\r\n private showLandingSlot() {\r\n const container = this.slot.querySelector('.eqjs-qp-conditions-root');\r\n if (container) {\r\n container.appendChild(this.landingSlot);\r\n this.landingSlot.scrollIntoView({block: \"center\", behavior: \"smooth\"});\r\n }\r\n }\r\n\r\n private hideLangindSlot() {\r\n if (this.landingSlot.parentElement) {\r\n this.landingSlot.parentElement.removeChild(this.landingSlot);\r\n }\r\n }\r\n\r\n protected onProcessStartCore() {\r\n if (this.options.showIndicatorOnLoad) {\r\n if (!this.progressBlock.parentNode)\r\n this.slot.appendChild(this.progressBlock);\r\n }\r\n }\r\n\r\n protected onProcessEndCore() {\r\n if (this.options.showIndicatorOnLoad) {\r\n if (this.progressBlock.parentNode)\r\n this.slot.removeChild(this.progressBlock);\r\n }\r\n } \r\n\r\n private renderProgressBlock() {\r\n this.progressBlock = document.createElement('div');\r\n this.progressBlock.classList.add(`${eqCssPrefix}-progress-win8`);\r\n this.progressBlock.classList.add(browserUtils.getMobileCssClass());\r\n 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>';\r\n } \r\n}\r\n\r\n","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\n\r\nimport {\r\n Widget, WidgetGroup,\r\n EqContext, QueryChangeAction, \r\n SimpleConditionDescriptor\r\n} from '@easyquery/core';\r\n\r\nimport { slideUp, slideDown, domel } from '@easydata/ui';\r\n\r\nimport { QueryPanel } from './query_panel';\r\nimport { FilterBarOptions } from './widget_options';\r\nimport { browserUtils } from '../utils/browser_utils';\r\n\r\nexport class FilterBar extends Widget {\r\n \r\n private qpBlock: HTMLElement;\r\n private qpElement: HTMLElement;\r\n\r\n private buttonsBlock: HTMLElement;\r\n\r\n private headerElement: HTMLDivElement;\r\n private headerIconElement: HTMLDivElement;\r\n private headerTextBlock: HTMLDivElement;\r\n private headerTextElement: HTMLDivElement;\r\n\r\n private headerArrowBlock: HTMLDivElement;\r\n private headerArrowElement: HTMLDivElement;\r\n\r\n private headerLinkElement: HTMLDivElement;\r\n\r\n private queryPanel: QueryPanel;\r\n\r\n private queryEventCallbackId: string; \r\n\r\n private options: FilterBarOptions = {\r\n applyOnClose: true,\r\n showApplyButton: true,\r\n showClearButton: true,\r\n queryPanel: {\r\n showAddRow: true,\r\n showCheckboxes: true,\r\n alwaysShowButtonsInGroups: true\r\n }\r\n }\r\n\r\n constructor (slot: HTMLElement) {\r\n super(slot);\r\n\r\n this.group = WidgetGroup.Query;\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'filterBar';\r\n }\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-fb';\r\n }\r\n\r\n public init(context: EqContext, options?: FilterBarOptions) {\r\n\r\n super.init(context, options);\r\n\r\n this.setOptions(options);\r\n \r\n this.destroyCore();\r\n\r\n this.qpElement = domel('div')\r\n .addClass(`${this.cssPrefix}-querypanel`)\r\n .toDOM();\r\n\r\n this.queryPanel = new QueryPanel(this.qpElement);\r\n this.queryPanel.init(context, this.options.queryPanel || {});\r\n\r\n this.attachQueryObserver();\r\n }\r\n\r\n private setOptions(options?: FilterBarOptions) {\r\n this.options = dataUtils.assignDeep(this.options, options);\r\n }\r\n\r\n private applyBtnClick(ev: Event) {\r\n this.applyFilter();\r\n }\r\n\r\n private clearBtnClick(ev: Event) {\r\n this.clearFilter();\r\n }\r\n\r\n private showQueryPanel(callback?: () => void) {\r\n slideDown(this.qpBlock, 200, () => {\r\n this.updateHeader();\r\n\r\n if (callback)\r\n callback();\r\n });\r\n }\r\n\r\n private hideQueryPanel() {\r\n slideUp(this.qpBlock, 200, () => {\r\n this.updateHeader();\r\n\r\n if (this.options.applyOnClose) {\r\n this.applyFilter();\r\n }\r\n });\r\n }\r\n\r\n private headerClickHandler(ev: Event) {\r\n ev.preventDefault();\r\n\r\n if (domel(this.qpBlock).isVisible()) { // close query panel\r\n this.hideQueryPanel();\r\n }\r\n else { //open query panel\r\n this.showQueryPanel();\r\n }\r\n }\r\n\r\n private updateHeader() {\r\n if (!this.headerTextElement)\r\n return;\r\n\r\n let text = '';\r\n\r\n const query = this.getContext().getQuery();\r\n if (query) {\r\n text = query.getConditionsText();\r\n }\r\n \r\n if (text == '') {\r\n text = i18n.getText('StrNoFilterDefined');\r\n }\r\n\r\n domel(this.headerTextElement)\r\n .text(text)\r\n .attr('title', text);\r\n\r\n if (!query || query.isEmptyConditions()) { //empty query, don't show query panel and arrow, show link in header\r\n domel(this.headerTextElement).hide();\r\n domel(this.headerLinkElement).show();\r\n if (!domel(this.qpBlock).isVisible()) {\r\n domel(this.headerArrowBlock).hide();\r\n this.headerElement.style.cursor = '';\r\n this.headerElement.removeEventListener('click', this.headerClickListener);\r\n }\r\n }\r\n else {\r\n this.headerElement.style.cursor = 'pointer';\r\n this.headerElement.removeEventListener('click', this.headerClickListener);\r\n this.headerElement.addEventListener('click', this.headerClickListener);\r\n\r\n domel(this.headerTextElement).show();\r\n domel(this.headerLinkElement).hide();\r\n domel(this.headerArrowBlock).show();\r\n }\r\n\r\n if (domel(this.qpBlock).isVisible()) { // close query panel\r\n this.headerArrowElement.classList.add(`${this.cssPrefix}-header-arrowUp`);\r\n }\r\n else {\r\n this.headerArrowElement.classList.remove(`${this.cssPrefix}-header-arrowUp`);\r\n }\r\n\r\n this.textResize();\r\n\r\n }\r\n\r\n private headerClickListener = this.headerClickHandler.bind(this);\r\n\r\n private render() {\r\n domel(this.slot)\r\n .addClass(`${this.cssPrefix}-container`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .addChild('div', builder => this.headerElement = builder\r\n .addClass(`${this.cssPrefix}-header`)\r\n .addChild('div', builder => this.headerIconElement = builder\r\n .addClass(`${this.cssPrefix}-header-icon`)\r\n .toDOM()\r\n )\r\n .addChild('div', builder => this.headerTextBlock = builder\r\n .addClass(`${this.cssPrefix}-header-textblock`)\r\n .addChild('div', builder => this.headerTextElement = builder\r\n .addClass(`${this.cssPrefix}-header-text`)\r\n .toDOM()\r\n )\r\n .addChild('div', builder => this.headerLinkElement = builder\r\n .addClass(`${this.cssPrefix}-header-text ${this.cssPrefix}-header-link`)\r\n .text(i18n.getText('StrNoFilterClickToAdd'))\r\n .hide()\r\n .on('click', () => {\r\n this.queryPanel.showEntitiesMenu({\r\n anchor: this.headerLinkElement,\r\n selectedIds: null,\r\n itemSelectedCallback: (item, items) => {\r\n const attrid = item.id;\r\n \r\n this.showQueryPanel(() => {\r\n const query = this.getContext().getQuery();\r\n\r\n const descr: SimpleConditionDescriptor = {\r\n parent: query.getRootCondition(),\r\n attributeId: attrid\r\n }\r\n \r\n const cond = query.addSimpleCondition(descr);\r\n \r\n if (cond) {\r\n query.fireConditionsChangedEvent(QueryChangeAction.Add, cond);\r\n }\r\n });\r\n }\r\n });\r\n })\r\n .toDOM()\r\n )\r\n .toDOM()\r\n )\r\n .addChild('div', builder => this.headerArrowBlock = builder\r\n .addClass(`${this.cssPrefix}-header-arrowblock`)\r\n .addChild('div', builder => this.headerArrowElement = builder\r\n .addClass(`${this.cssPrefix}-header-arrow`)\r\n .toDOM()\r\n )\r\n .toDOM()\r\n )\r\n .toDOM()\r\n )\r\n .addChild('div', builder => this.qpBlock = builder \r\n .addClass(`${this.cssPrefix}-querypanelblock`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .hide()\r\n .addChildElement(this.qpElement)\r\n .toDOM()\r\n )\r\n \r\n if (this.options.showApplyButton || this.options.showClearButton) {\r\n this.buttonsBlock = domel('div', this.qpBlock) \r\n .addClass(`${this.cssPrefix}-buttonsblock`)\r\n .addClass(browserUtils.getMobileCssClass())\r\n .toDOM();\r\n }\r\n\r\n if (this.options.showApplyButton) {\r\n domel('a', this.buttonsBlock)\r\n .attr('href', 'javascript:void(0)')\r\n .addClass(`${this.cssPrefix}-button ${this.cssPrefix}-button-apply`)\r\n .text(i18n.getText('ButtonApply'))\r\n .on('click', this.applyBtnClick.bind(this))\r\n }\r\n\r\n if (this.options.showClearButton) {\r\n domel('a', this.buttonsBlock)\r\n .attr('href', 'javascript:void(0)')\r\n .addClass(`${this.cssPrefix}-button ${this.cssPrefix}-button-clear`)\r\n .text(i18n.getText('CmdClear'))\r\n .on('click', this.clearBtnClick.bind(this))\r\n }\r\n \r\n\r\n window.addEventListener('resize', () => {\r\n this.textResize();\r\n })\r\n\r\n this.updateHeader();\r\n this.queryPanel.refresh();\r\n\r\n setTimeout(() => this.textResize(), 500); \r\n }\r\n\r\n protected refreshCore() {\r\n this.clear();\r\n this.render();\r\n }\r\n\r\n private clear() {\r\n this.slot.innerHTML = \"\";\r\n }\r\n\r\n public applyFilter() {\r\n if (this.options.applyFilterCallback) {\r\n this.options.applyFilterCallback();\r\n }\r\n }\r\n\r\n public clearFilter() {\r\n const query = this.getContext().getQuery();\r\n if (query) {\r\n query.clearConditions();\r\n query.fireConditionsChangedEvent(QueryChangeAction.All);\r\n }\r\n }\r\n\r\n public textResize() {\r\n this.headerTextBlock.style.width = (this.slot.clientWidth - this.headerIconElement.offsetWidth \r\n - (domel(this.headerArrowBlock).isVisible() ? this.headerArrowBlock.offsetWidth : 0)) + \"px\";\r\n }\r\n\r\n protected destroyCore() {\r\n\r\n if (this.queryPanel)\r\n this.queryPanel.destroy();\r\n\r\n this.detachQueryObserver();\r\n\r\n this.slot.innerHTML = '';\r\n } \r\n\r\n private attachQueryObserver() {\r\n const query = this.getContext().getQuery();\r\n\r\n this.queryEventCallbackId = query.addChangedCallback(event => {\r\n this.updateHeader();\r\n })\r\n }\r\n\r\n private detachQueryObserver() {\r\n const query = this.getContext().getQuery();\r\n if (query)\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n}","import { EqContext, Widget, WidgetGroup } from \"@easyquery/core\";\r\n\r\n/**\r\n * The widget responsed for rendering html content\r\n */\r\nexport class HtmlContentWidget extends Widget {\r\n\r\n /**\r\n * The html element\r\n */\r\n protected contentElement: HTMLElement;\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n this.contentElement = slot;\r\n this.group = WidgetGroup.Result;\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'htmlContent';\r\n }\r\n\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n public init(context: EqContext, options?: any) {\r\n super.init(context, options);\r\n }\r\n\r\n /**\r\n * Refresh widget implementation\r\n */\r\n protected refreshCore() {\r\n\r\n this.clear();\r\n\r\n if (!this.context.resultContent)\r\n return;\r\n\r\n this.render();\r\n }\r\n\r\n /**\r\n * Renders widget\r\n */\r\n protected render() {\r\n if (this.context.resultContent) {\r\n this.contentElement.innerHTML += this.context.resultContent;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Clears content.\r\n */\r\n protected clear() {\r\n this.contentElement.innerHTML = \"\";\r\n }\r\n\r\n protected destroyCore() {\r\n this.clear();\r\n }\r\n\r\n}","import { utils as dataUtils } from '@easydata/core';\r\nimport { EqContext, WidgetGroup } from '@easyquery/core';\r\n\r\nimport { HtmlContentWidget } from './html_content_widget';\r\n\r\n/**\r\n * The widget responsed for rendering html grid.\r\n */\r\nexport class EqHtmlGrid extends HtmlContentWidget {\r\n \r\n /** pageTtem css class */\r\n protected pageItemCssClass: string;\r\n\r\n protected options: any = {\r\n maxButtonCount: 10,\r\n useBootstrap: false\r\n }\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n }\r\n \r\n public getWidgetType(): string {\r\n return 'eqHtmlGrid';\r\n }\r\n\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n public init(context: EqContext, options?: any){\r\n super.init(context, options);\r\n\r\n this.setOptions(options);\r\n }\r\n\r\n \r\n private setOptions(options?: any) {\r\n dataUtils.assignDeep(this.options, options);\r\n }\r\n\r\n /**\r\n * Refresh widget implementation\r\n */\r\n protected refreshCore() {\r\n super.refreshCore();\r\n\r\n this.renderPageNavigator();\r\n }\r\n\r\n protected destroyCore() {\r\n this.slot.innerHTML = '';\r\n }\r\n\r\n /**\r\n * Renders page navigator.\r\n */\r\n protected renderPageNavigator() {\r\n\r\n const pageNavigatorPlaceholder = document.getElementById(\"PageNavigator\");\r\n if (!pageNavigatorPlaceholder) {\r\n return;\r\n }\r\n \r\n const pageCount = parseInt(pageNavigatorPlaceholder.getAttribute('data-pagecount'));\r\n const pageIndex = parseInt(pageNavigatorPlaceholder.getAttribute('data-pageindex'));\r\n \r\n if (pageCount > 1) {\r\n \r\n let buttonClick = (ev: MouseEvent) => {\r\n let element = ev.target as HTMLElement;\r\n \r\n if (element.hasAttribute('data-page')) {\r\n const pageNum = parseInt(element.getAttribute('data-page'));\r\n \r\n this.context.fetchDataChunk({\r\n chunk: {\r\n page: pageNum\r\n },\r\n success: () => {\r\n this.context.refreshWidgets(WidgetGroup.Result);\r\n }\r\n });\r\n } \r\n };\r\n \r\n const maxButtonCount = this.options.maxButtonCount || 10;\r\n const zeroBasedIndex = pageIndex - 1;\r\n let firstPageIndex = zeroBasedIndex - (zeroBasedIndex % maxButtonCount) + 1;\r\n let lastPageIndex = firstPageIndex + maxButtonCount - 1;\r\n if (lastPageIndex > pageCount) {\r\n lastPageIndex = pageCount;\r\n }\r\n \r\n let ul = document.createElement('ul');\r\n if (this.options.useBootstrap) {\r\n ul.className = \"pagination\";\r\n }\r\n else {\r\n ul.className = \"eqv-pagination\";\r\n }\r\n if (this.options.pageItemCssClass) {\r\n ul.className += \" \" + (this.options.pageItemCssClass);\r\n }\r\n \r\n let li = document.createElement('li');\r\n if (this.options.useBootstrap) {\r\n li.className = \"page-item\";\r\n }\r\n \r\n let a:HTMLElement = document.createElement('span');\r\n a.setAttribute(\"aria-hidden\", 'true');\r\n \r\n if (this.options.useBootstrap) {\r\n a.className = \"page-link\";\r\n }\r\n \r\n if (firstPageIndex == 1) {\r\n li.className += \" disabled\";\r\n }\r\n else {\r\n if (this.options.useBootstrap) {\r\n a = document.createElement('a');\r\n a.setAttribute('href', 'javascript:void(0)');\r\n a.setAttribute(\"data-page\", `${firstPageIndex - 1}`);\r\n a.className = \"page-link\";\r\n } \r\n else {\r\n let newA = document.createElement('a');\r\n newA.setAttribute('href', 'javascript:void(0)');\r\n newA.setAttribute(\"data-page\", `${firstPageIndex - 1}`);\r\n a = newA; \r\n }\r\n a.addEventListener(\"click\", buttonClick);\r\n }\r\n a.innerHTML = \"«\";\r\n \r\n li.appendChild(a);\r\n ul.appendChild(li);\r\n \r\n for (let i = firstPageIndex; i <= lastPageIndex; i++) {\r\n li = document.createElement('li');\r\n if (this.options.useBootstrap) {\r\n li.className = \"page-item\";\r\n }\r\n if (i == pageIndex)\r\n li.className += \" active\";\r\n \r\n a = document.createElement('a');\r\n a.setAttribute('href', 'javascript:void(0)');\r\n a.innerHTML = i.toString();\r\n a.setAttribute('data-page', i.toString());\r\n a.className = \"page-link\";\r\n \r\n a.addEventListener(\"click\", buttonClick);\r\n li.appendChild(a);\r\n ul.appendChild(li);\r\n }\r\n \r\n li = document.createElement('li');\r\n if (this.options.useBootstrap) {\r\n li.className = \"page-item\";\r\n }\r\n a = document.createElement(\"span\");\r\n a.setAttribute('aria-hidden', 'true');\r\n \r\n if (this.options.useBootstrap) {\r\n a.className = \"page-link\";\r\n }\r\n if (lastPageIndex == pageCount) {\r\n li.className += \"disabled\";\r\n }\r\n else {\r\n if (this.options.useBootstrap) {\r\n a = document.createElement('a');\r\n a.setAttribute('href', 'javascript:void(0)');\r\n a.setAttribute(\"data-page\", `${lastPageIndex + 1}`);\r\n a.className += \" page-link\";\r\n } else {\r\n let newA = document.createElement('a');\r\n newA.setAttribute('href', 'javascript:void(0)');\r\n newA.setAttribute(\"data-page\", `${lastPageIndex + 1}`);\r\n a = newA; \r\n }\r\n a.addEventListener(\"click\", buttonClick);\r\n }\r\n a.innerHTML = \"»\";\r\n \r\n li.appendChild(a);\r\n ul.appendChild(li);\r\n \r\n pageNavigatorPlaceholder.appendChild(ul);\r\n }\r\n \r\n }\r\n\r\n}","import { utils as dataUtils } from '@easydata/core';\r\nimport { GridOptions } from './widget_options'\r\nimport { Widget, EqContext, WidgetGroup } from '@easyquery/core';\r\n\r\n/**\r\n * Base class for GRID.\r\n */\r\nexport class Grid extends Widget {\r\n\r\n /** The html element. */\r\n protected slot: HTMLElement;\r\n\r\n protected options: GridOptions = {\r\n useCustomLocaleSettings: false\r\n }\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n this.slot = slot;\r\n this.group = WidgetGroup.Result;\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'grid';\r\n }\r\n\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n public init(context: EqContext, options?: GridOptions){\r\n super.init(context, options);\r\n\r\n if (options) {\r\n dataUtils.assignDeep(this.options, options);\r\n }\r\n }\r\n \r\n /**\r\n * Refresh widget implementation\r\n */\r\n protected refreshCore() {\r\n\r\n this.clear();\r\n\r\n if (!this.context.resultTable) {\r\n return;\r\n }\r\n\r\n this.render();\r\n }\r\n\r\n\r\n /**\r\n * Renders widget\r\n */\r\n protected render() {\r\n\r\n if (this.options.beforeTableRendering) {\r\n this.options.beforeTableRendering(this.context.resultTable);\r\n } \r\n\r\n this.applyDisplayFormats();\r\n }\r\n\r\n protected applyDisplayFormats() {\r\n }\r\n\r\n /**\r\n * Clears GRID.\r\n */\r\n protected clear() {\r\n this.slot.innerHTML = \"\";\r\n }\r\n}","import { \r\n WidgetGroup, EqContext, \r\n Query, DataModel, QueryColumn, \r\n QueryChangeAction, ExprTag, QueryChangePart, \r\n SortDirection, EntityAttr, QueryChangeEventData \r\n} from '@easyquery/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\n\r\nimport { \r\n EasyGrid, AddColumnClickEvent, \r\n ColumnMovedEvent,\r\n EasyGridOptions\r\n} from '@easydata/ui';\r\n\r\nimport { Grid } from './grid';\r\nimport { PopupMenuOptions, PopupMenu } from '../utils/popup_menu';\r\n\r\nexport class EasyGridWidget extends Grid {\r\n\r\n private grid: EasyGrid;\r\n\r\n private entitiesMenu: PopupMenu;\r\n\r\n private queryEventCallbackId: string;\r\n\r\n private hasCustomTotalsSettings = false;\r\n\r\n //!!!! DO NOT forget to add types for options\r\n protected options: any = { autoRefresh: true };\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n this.group = WidgetGroup.Result;\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'easyGrid';\r\n }\r\n\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n public init(context: EqContext, options?: any) {\r\n super.init(context, options);\r\n\r\n const gridOptions: EasyGridOptions = {\r\n ...options,\r\n slot: this.slot,\r\n dataTable: context.resultTable\r\n };\r\n\r\n this.options = dataUtils.assign(this.options, options);\r\n \r\n gridOptions.onPlusButtonClick = (ev) => this.addColumnClickHandler(ev);\r\n gridOptions.onColumnMoved = (ev) => this.columnMovedHandler(ev);\r\n\r\n if (gridOptions.aggregates) {\r\n this.hasCustomTotalsSettings = true;\r\n }\r\n else {\r\n gridOptions.aggregates = { settings: context.getQuery().getAggregationSettings(), calculator: null }\r\n }\r\n\r\n gridOptions.aggregates.calculator = this.context.getServices()\r\n .getAggregatesCalculator();\r\n \r\n\r\n this.destroy();\r\n\r\n this.grid = new EasyGrid(gridOptions);\r\n \r\n if (this.options.autoRefresh) {\r\n this.attachQueryObserver();\r\n }\r\n }\r\n\r\n protected refreshCore() {\r\n this.clear();\r\n this.updateTotalsSettings();\r\n this.render();\r\n }\r\n\r\n protected render() {\r\n this.createEntitiesMenu();\r\n this.grid.refresh();\r\n }\r\n\r\n protected attachQueryObserver() {\r\n }\r\n\r\n protected destroyCore() {\r\n this.detachQueryObserver();\r\n if (this.grid)\r\n this.grid.destroy();\r\n \r\n this.slot.innerHTML = '';\r\n }\r\n\r\n private detachQueryObserver() {\r\n if (this.queryEventCallbackId) {\r\n const query = this.getContext().getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n }\r\n\r\n protected updateTotalsSettings() {\r\n const context = this.getContext();\r\n if (!this.hasCustomTotalsSettings) {\r\n const settings = context.getQuery().getAggregationSettings();\r\n this.grid.options.aggregates.settings = settings;\r\n }\r\n }\r\n\r\n protected createEntitiesMenu() {\r\n const model = this.getContext().getModel();\r\n if (!model || model.isEmpty()) return;\r\n\r\n let menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-EntitiesMenu';\r\n }\r\n\r\n const entitiesList = model.getEntitiesTree({ addUIC: false, addUIR: true, addUIS: false });\r\n const options: PopupMenuOptions = { items: entitiesList, id: menuId }\r\n dataUtils.assign(options, (this.options as any).menuOptions);\r\n this.entitiesMenu = new PopupMenu(options);\r\n }\r\n\r\n public getModel(): DataModel {\r\n return this.context.getModel();\r\n }\r\n\r\n public getQuery(): Query {\r\n return this.context.getQuery();\r\n }\r\n\r\n public clear() {\r\n if (this.grid)\r\n this.grid.clear();\r\n }\r\n \r\n protected addColumnClickHandler(ev: AddColumnClickEvent) {\r\n this.entitiesMenu.showMenu({\r\n anchor: ev.sourceEvent.target as HTMLElement, \r\n selectedIds: null, \r\n itemSelectedCallback: (data, items) => {\r\n const attrid = data.id;\r\n this.addNewColumn(attrid);\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n protected columnMovedHandler(ev: ColumnMovedEvent) {\r\n const query = this.getQuery();\r\n const oldIndex = dataUtils.findItemIndexById(query.getColumns(), ev.columnId);\r\n if (oldIndex >= 0) {\r\n query.moveColumn(oldIndex, ev.newIndex);\r\n query.fireChangedEvent({\r\n part: QueryChangePart.Columns,\r\n action: QueryChangeAction.All,\r\n source: this\r\n });\r\n }\r\n }\r\n\r\n public addNewColumn(attrId: string): QueryColumn {\r\n const model = this.getContext().getModel();\r\n const query = this.getContext().getQuery();\r\n\r\n const col = query.addColumn({\r\n attributeId: attrId\r\n });\r\n\r\n query.fireChangedEvent({\r\n part: QueryChangePart.Columns,\r\n action: QueryChangeAction.Add,\r\n changee: col,\r\n source: this\r\n });\r\n\r\n return col;\r\n } \r\n} ","import { Widget, WidgetGroup } from '@easyquery/core';\r\n\r\n/**\r\n * The widget responsed for rendering statement.\r\n * It's usually added for demonstration purposes only.\r\n */\r\nexport class StatementPanel extends Widget {\r\n\r\n private panel: HTMLElement;\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n this.panel = slot;\r\n this.group = WidgetGroup.Statement;\r\n\r\n if (this.panel.tagName !== \"TEXTAREA\") {\r\n this.panel.innerHTML = '<div class=\"eqv-sql-panel-result\"></div>';\r\n this.panel = this.panel.querySelector('div') as HTMLElement;\r\n }\r\n }\r\n\r\n \r\n public getWidgetType(): string {\r\n return 'statementPanel';\r\n }\r\n\r\n /**\r\n * Refresh widget implementation\r\n */\r\n protected refreshCore() {\r\n this.clear();\r\n this.render();\r\n }\r\n\r\n private render() {\r\n this.panel.textContent = this.context.resultStatement ? this.context.resultStatement : \"\";\r\n var statementText = this.panel.innerHTML.replace(/\\r\\n/g, \"<br />\").replace(/ /g, \" \");\r\n this.panel.innerHTML = statementText;\r\n }\r\n\r\n protected destroyCore() {\r\n this.clear();\r\n }\r\n\r\n private clear(){\r\n this.panel.innerHTML = \"\";\r\n }\r\n}\r\n","import { Widget, WidgetGroup } from '@easyquery/core'\r\n\r\n/**\r\n * The widget responsed for rendering process bar.\r\n */\r\nexport class ProcessWidget extends Widget {\r\n\r\n private element: HTMLElement;\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n this.element = slot;\r\n this.element.style.display = 'none';\r\n this.group = WidgetGroup.All;\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'processIndicator';\r\n }\r\n\r\n /**\r\n * On process start implementation\r\n */\r\n protected onProcessStartCore() {\r\n this.element.style.display = '';\r\n }\r\n\r\n /**\r\n * On process end implementation\r\n */\r\n protected onProcessEndCore() {\r\n this.element.style.display = 'none';\r\n }\r\n\r\n}","import { \r\n Widget, WidgetGroup, \r\n EqContext, Query, \r\n DataKind\r\n} from \"@easyquery/core\";\r\nimport { DataType, utils as dataUtils } from '@easydata/core';\r\n\r\nimport { domel } from '@easydata/ui';\r\n\r\nimport { ColumnsBar } from './columns_bar';\r\nimport { QueryPanel } from './query_panel';\r\n\r\nimport { eqCssPrefix } from '../utils/utils';\r\n\r\nexport class ManageDrillDownWidget extends Widget {\r\n\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n this.group = WidgetGroup.None;\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'manageDrillDown';\r\n }\r\n\r\n protected options: any;\r\n\r\n public init(context: EqContext, options: any) {\r\n super.init(context, options);\r\n\r\n this.options = options;\r\n\r\n this.refresh();\r\n\r\n this.slot.addEventListener('click', this.clickHandler);\r\n }\r\n\r\n\r\n protected destroyCore() {\r\n this.slot.removeEventListener('click', this.clickHandler);\r\n }\r\n\r\n private clickHandler = () => this.openDialog();\r\n\r\n private columnsBar?: ColumnsBar = null;\r\n private queryPanel?: QueryPanel = null;\r\n private ddQuery?: Query = null;\r\n\r\n protected cssPrefix: string = eqCssPrefix;\r\n\r\n protected openDialog() {\r\n const dialogService = this.context.getServices().getDialogService();\r\n const query = this.context.getQuery();\r\n const model = this.context.getModel();\r\n\r\n const dialogBody = domel('div')\r\n .addClass(`${this.cssPrefix}-manage-drilldown`)\r\n .addChildElement(this.renderColumnsBarBlock())\r\n .addChildElement(this.renderQueryPanelBlock())\r\n .toDOM()\r\n\r\n let op = model.addOrUpdateOperator({\r\n id: 'BindToParentColumn',\r\n caption: 'is bound to',\r\n format: '{expr1} [[is bound to]] {expr2}',\r\n paramCount: 2,\r\n kind: DataKind.ParentColumn,\r\n appliedTypes: [DataType.String, DataType.Bool, DataType.Float, DataType.Int32, DataType.Int64, DataType.Word]\r\n });\r\n op.defaultOperand.dataType = DataType.String;\r\n op.defaultOperand.kind = DataKind.ParentColumn;\r\n\r\n model.runThroughEntities(attr => {\r\n const opIdx = attr.operators.indexOf(op.id);\r\n if (opIdx > 0) {\r\n dataUtils.moveArrayItem(attr.operators, opIdx, 0);\r\n }\r\n }, null);\r\n\r\n this.ddQuery = new Query(model, null, {\r\n parent: query,\r\n context: this.context\r\n });\r\n\r\n const dds = this.context.getQuery().getDrillDowns();\r\n if (dds.length) {\r\n const dd = dds[0];\r\n this.ddQuery.loadFromData(dd.toJSONData());\r\n }\r\n\r\n dialogService.open({\r\n title: 'Manage Drill Down',\r\n body: dialogBody,\r\n cancelable: true,\r\n closable: false,\r\n beforeOpen: () => {\r\n\r\n const columnsBarSlot = dialogBody.getElementsByClassName(`${this.cssPrefix}-columnsbar-slot`)[0] as HTMLElement;\r\n this.columnsBar = new ColumnsBar(columnsBarSlot, this.ddQuery);\r\n this.columnsBar.init(this.context, this.options.columnsBar);\r\n \r\n const queryPanelSlot = dialogBody.getElementsByClassName(`${this.cssPrefix}-querypanel-slot`)[0] as HTMLElement;\r\n this.queryPanel = new QueryPanel(queryPanelSlot, this.ddQuery);\r\n this.queryPanel.init(this.context, this.options.queryPanel);\r\n\r\n this.columnsBar.refresh();\r\n this.queryPanel.refresh();\r\n\r\n },\r\n onSubmit: () => {\r\n return this.submitDialog();\r\n },\r\n onDestroy: () => {\r\n this.destroyDialog();\r\n }\r\n });\r\n\r\n }\r\n\r\n protected renderQueryPanelBlock(): HTMLElement {\r\n return domel('div')\r\n .addClass(`${this.cssPrefix}-querypanel-block`)\r\n .addChild('div', b => b\r\n .addClass(`${this.cssPrefix}-querypanel-caption`)\r\n )\r\n .addChild('div', b => b\r\n .addClass(`${this.cssPrefix}-querypanel-slot`)\r\n )\r\n .toDOM();\r\n }\r\n\r\n protected renderColumnsBarBlock(): HTMLElement {\r\n return domel('div')\r\n .addClass(`${this.cssPrefix}-columnsbar-block`)\r\n .addChild('div', b => b\r\n .addClass(`${this.cssPrefix}-columnsbar-caption`)\r\n )\r\n .addChild('div', b => b\r\n .addClass(`${this.cssPrefix}-columnsbar-slot`)\r\n )\r\n .toDOM();\r\n }\r\n\r\n protected submitDialog() {\r\n if (this.ddQuery.tryValidate({\r\n checkExpressions: true\r\n })) {\r\n const dds = this.context.getQuery().getDrillDowns();\r\n if (dds.length) {\r\n dds[0].loadFromData(this.ddQuery.toJSONData());\r\n this.context.getQuery().fireChangedEvent();\r\n }\r\n else {\r\n if (!this.ddQuery.isEmpty()) {\r\n const dd = this.context.getQuery().addDrillDown();\r\n dd.loadFromData(this.ddQuery.toJSONData());\r\n\r\n this.context.getQuery().fireChangedEvent();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n protected destroyDialog() {\r\n\r\n const model = this.context.getModel();\r\n model.removeOperator('BindToParentColumn', true);\r\n \r\n this.ddQuery = null;\r\n\r\n this.columnsBar && this.columnsBar.destroy();\r\n this.columnsBar = null;\r\n\r\n this.queryPanel && this.queryPanel.destroy();\r\n this.queryPanel = null;\r\n }\r\n\r\n}\r\n","export enum FacetType {\r\n DataGrid = \"DATA_GRID\",\r\n Chart = \"CHART\",\r\n PivotTable = \"PIVOT_TABLE\"\r\n}","import { domel } from '@easydata/ui';\r\n\r\nimport { EqContext, i18n } from '@easyquery/core';\r\n\r\nexport class ExportDialog {\r\n\r\n constructor (protected context: EqContext) {\r\n\r\n }\r\n\r\n private promise:Promise<void> = null;\r\n\r\n show(defFormat: string = null) {\r\n if (!this.promise) {\r\n\r\n const formats = this.context.getExportFormats();\r\n if (formats.length == 0)\r\n throw Error(\"No exporter has been registered.\");\r\n\r\n defFormat = defFormat || formats[0];\r\n\r\n this.promise = new Promise((resolve, reject) => {\r\n const ds = this.context.getServices().getDialogService();\r\n const body = domel('div')\r\n .addClass('kdlg-form-section')\r\n .addChild('div', b => b\r\n .addClass('kfrm-form')\r\n .addChild('div', b => b\r\n .addClass('kfrm-fields col-a-1 label-align-right')\r\n .addChild('label', b => b \r\n .addClass('kdlg-form-label', 'kflex-20')\r\n .attr('for', 'export_format')\r\n .addText(i18n.getText('ExportDlgFmtLabel'))\r\n ) \r\n .addChild('div', b => b\r\n .addClass('kfrm-select')\r\n .addChild('select', b => {\r\n b\r\n .attr('name', 'export_format')\r\n .id('exportFormat');\r\n\r\n for(const format of this.context.getExportFormats()) {\r\n b.addOption({\r\n value: format,\r\n title: i18n.getText(format) || format,\r\n selected: defFormat == format\r\n });\r\n }\r\n \r\n })\r\n ) \r\n )\r\n )\r\n .toDOM();\r\n \r\n ds.open({\r\n title: i18n.getText('ExportDlgTitle'),\r\n body: body,\r\n onSubmit: () => {\r\n const format = (body.querySelector('#exportFormat') as HTMLSelectElement).value;\r\n this.context.exportResult({\r\n format: format,\r\n success: resolve,\r\n error: reject\r\n });\r\n return true;\r\n }\r\n });\r\n });\r\n }\r\n\r\n return this.promise.finally(() => this.promise = null);\r\n }\r\n\r\n}","import { EqContext, Query } from '@easyquery/core';\r\nimport { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { Dialog, DialogService, domel } from '@easydata/ui';\r\n\r\nimport { FacetType } from '../types/facet_type';\r\nimport { FacetContainer } from '../widgets/facet_container';\r\n\r\nimport { browserUtils } from '../utils/browser_utils';\r\n\r\nexport abstract class ResultFacet {\r\n\r\n protected settings: any;\r\n\r\n protected slot?: HTMLElement;\r\n\r\n protected contentDiv: HTMLElement;\r\n\r\n private displayMessageDiv: HTMLElement;\r\n\r\n public title: string = i18n.getText('Facets', 'DefaultFacetTitle');\r\n\r\n protected cssPrefix = 'eqjs-facet';\r\n\r\n protected dialogTitle = i18n.getText('Facets', 'DefaultDlgTitle');\r\n \r\n protected options: any = {};\r\n\r\n protected canDisplayFlag = true;\r\n\r\n constructor(\r\n protected container: FacetContainer, \r\n options?: any\r\n )\r\n {\r\n dataUtils.assignDeep(this.options, options);\r\n }\r\n\r\n public init(slot: HTMLElement) {\r\n this.slot = slot;\r\n\r\n this.contentDiv = domel('div', this.slot)\r\n .addClass(`${this.cssPrefix}-content`)\r\n .toDOM();\r\n this.displayMessageDiv = domel('div', this.slot).hide().toDOM();\r\n }\r\n\r\n public abstract getType(): FacetType;\r\n\r\n public showSettingsDialog(): Promise<boolean> {\r\n return new Promise<boolean>((resolve) => {\r\n const ds = this.getDialogService();\r\n const content = this.renderDialogContent();\r\n const dlg = ds.open({\r\n title: this.dialogTitle,\r\n body: content,\r\n cancelable: true,\r\n closable: false,\r\n onSubmit: () => {\r\n const submited = this.submitSettingsDialog();\r\n if (submited) {\r\n resolve(true);\r\n }\r\n return submited;\r\n },\r\n onCancel: () => {\r\n resolve(false);\r\n }\r\n });\r\n\r\n this.afterDialogOpened(dlg);\r\n });\r\n }\r\n\r\n protected afterDialogOpened(dlg: Dialog) {\r\n\r\n }\r\n\r\n protected renderDialogContent(): HTMLElement {\r\n let fieldsContainer;\r\n let b = domel('div')\r\n .addClass('kfrm-form')\r\n .addChild('div', b => fieldsContainer = b\r\n .addClass(`${browserUtils.isIE() \r\n ? 'kfrm-fields-ie col-ie-1-4 label-align-right' \r\n : 'kfrm-fields col-a-1 label-align-right'}`)\r\n .toDOM()\r\n );\r\n \r\n this.renderFormFields(b.toDOM(), fieldsContainer);\r\n return b.toDOM();\r\n }\r\n\r\n protected renderFormFields(form: HTMLElement, fieldsContainer: HTMLElement) {\r\n let cont = fieldsContainer;\r\n if (browserUtils.isIE()) {\r\n cont = domel('div', fieldsContainer)\r\n .addClass('kfrm-field-ie')\r\n .toDOM();\r\n }\r\n\r\n domel(cont)\r\n .addChild('label', b => b \r\n .attr('for', 'tab_name')\r\n .addText(i18n.getText('Facets', 'TabNameLabel'))\r\n ) \r\n .addChild('input', b => b\r\n .id('facetTabName')\r\n .name('tab_name')\r\n .type('text')\r\n .attr('value', this.title)\r\n )\r\n }\r\n\r\n protected submitSettingsDialog(): boolean {\r\n const tabNameInput = document.querySelector<HTMLInputElement>('#facetTabName');\r\n if (tabNameInput.value.length == 0)\r\n return false;\r\n\r\n this.title = tabNameInput.value;\r\n return true;\r\n }\r\n\r\n protected getDialogService(): DialogService {\r\n return this.getContext()\r\n .getServices()\r\n .getDialogService();\r\n }\r\n\r\n protected canDisplay() {\r\n const context = this.getContext();\r\n const resultTable = context.resultTable;\r\n return (resultTable.getCachedCount() == resultTable.getTotal());\r\n }\r\n\r\n protected showErrorMessage(message: string) {\r\n this.displayMessageDiv.innerHTML = message;\r\n this.displayMessageDiv.classList.add(`${this.cssPrefix}-error-message`);\r\n domel(this.displayMessageDiv).show();\r\n }\r\n\r\n protected showUnableDisplayMessage(message?: string) {\r\n const context = this.getContext();\r\n const resultTable = context.resultTable;\r\n\r\n this.displayMessageDiv.innerHTML = message || i18n.getText('Facets', 'ErrNotEnoughData')\r\n .replace('{totalRecs}', `${resultTable.getTotal()}`)\r\n .replace('{cachedRecs}', `${resultTable.getCachedCount()}`)\r\n .replace(/\\[(.*)\\]/g, `<a href='javascript:void(0)' class=\"${this.cssPrefix}-download-all-link\">$1</a>`);\r\n\r\n const link = this.displayMessageDiv.querySelector<HTMLLinkElement>(`a.${this.cssPrefix}-download-all-link`);\r\n if (link) {\r\n link.addEventListener('click', this.downloadAllClickHandler);\r\n }\r\n\r\n domel(this.contentDiv).hide();\r\n domel(this.displayMessageDiv).show();\r\n }\r\n\r\n protected hideUnableDisplayMessage() {\r\n domel(this.displayMessageDiv).hide();\r\n domel(this.contentDiv).show();\r\n }\r\n\r\n private downloadAllClickHandler = () => {\r\n const resultTable = this.getContext().resultTable;\r\n if (!resultTable.elasticChunks) {\r\n const nextChunkStart = resultTable.getCachedRows().length;\r\n const recordsToLoad = resultTable.getTotal() - resultTable.getCachedCount();\r\n\r\n const ds = this.getDialogService();\r\n const dlg = ds.openProgress({\r\n title: i18n.getText('Facets', 'LoadDataDlgTitle'),\r\n content: i18n.getText('Facets', 'LoadDataDlgContent')\r\n .replace('{loadedRecs}', '0')\r\n .replace('{totalRecs}', `${recordsToLoad}`),\r\n onSubmit: () => this.refresh(),\r\n determinated: true\r\n });\r\n\r\n let loadedRecords = 0;\r\n setTimeout(() => {\r\n resultTable.getRows({ offset: nextChunkStart, limit: recordsToLoad})\r\n .then(_ => {\r\n loadedRecords += _.length;\r\n const progress = loadedRecords / recordsToLoad;\r\n dlg.updateContent(i18n.getText('Facets', 'LoadDataDlgContent')\r\n .replace('{loadedRecs}', `${loadedRecords}`)\r\n .replace('{totalRecs}', `${recordsToLoad}`));\r\n dlg.updateProgress(progress);\r\n })\r\n .catch(error => {\r\n dlg.submit();\r\n this.getContext().throwError(error);\r\n });\r\n }, 10)\r\n }\r\n else {\r\n const ds = this.getDialogService();\r\n const dlg = ds.openProgress({\r\n title: i18n.getText('Facets', 'LoadDataDlgTitle'),\r\n onSubmit: () => this.refresh(),\r\n determinated: false\r\n });\r\n \r\n this.loadElasticChunk()\r\n .then(_ => {\r\n dlg.submit();\r\n })\r\n .catch(error => {\r\n dlg.submit();\r\n this.getContext().throwError(error);\r\n });\r\n }\r\n \r\n }\r\n\r\n public abstract getSettings();\r\n\r\n public getContext(): EqContext {\r\n return this.container.getContext();\r\n }\r\n\r\n public getQuery(): Query {\r\n return this.getContext().getQuery();\r\n }\r\n\r\n public saveToData(): any {\r\n return { title: this.title, type: this.getType() };\r\n }\r\n\r\n public loadFromData(data: any) {\r\n if (data) {\r\n this.title = data.title;\r\n }\r\n }\r\n\r\n public refresh() {\r\n this.hideUnableDisplayMessage();\r\n if (this.canDisplay()) {\r\n this.refreshCore();\r\n }\r\n else {\r\n this.showUnableDisplayMessage();\r\n }\r\n }\r\n\r\n protected abstract refreshCore();\r\n\r\n public abstract destroy();\r\n\r\n\r\n private async loadElasticChunk(): Promise<any> {\r\n const resultTable = this.getContext().resultTable;\r\n const nextChunkStart = resultTable.getCachedRows().length;\r\n\r\n //next chunk\r\n return resultTable.getRows({ offset:nextChunkStart, limit: resultTable.chunkSize })\r\n .then(_ => {\r\n return resultTable.totalIsKnown()\r\n ? Promise.resolve() \r\n : this.loadElasticChunk();\r\n });\r\n }\r\n\r\n public onResize() { \r\n }\r\n}","/** Represents chart types. */\r\nexport enum ChartType {\r\n Column = 3,\r\n\r\n Histogram = 4,\r\n\r\n Bar = 5,\r\n\r\n Combo = 6,\r\n\r\n Area = 7, \r\n\r\n Line = 9,\r\n\r\n Pie = 10, \r\n Polar = 11,\r\n\r\n Doughnut = 12,\r\n Radar = 13,\r\n\r\n SteppedLine = 14,\r\n}","\r\nimport { \r\n EqContext, Widget, \r\n WidgetGroup, \r\n} from '@easyquery/core';\r\n\r\nimport { \r\n EasyDataTable,\r\n i18n,\r\n utils as dataUtils \r\n} from '@easydata/core';\r\n\r\nimport { \r\n addCssClass, showElement, \r\n hideElement, toggleVisibility,\r\n isVisible\r\n} from '@easydata/ui';\r\n\r\nimport { ChartWidgetOptions } from '../widget_options';\r\nimport { ChartType } from './chart_type';\r\n\r\nexport interface ChartColumn {\r\n idx: number;\r\n label: string;\r\n}\r\n\r\nexport abstract class ChartWidget extends Widget {\r\n protected element: HTMLElement;\r\n\r\n protected chartType: ChartType = ChartType.Pie;\r\n\r\n protected supportedChartTypes: ChartType[] = [];\r\n\r\n protected dataTable: EasyDataTable = null;\r\n\r\n protected potentialLabelColumns: ChartColumn[] = [];\r\n protected potentialDataColumns: ChartColumn[] = [];\r\n\r\n protected labelColumn: number = -1;\r\n protected dataColumns: number[] = [];\r\n\r\n protected settingsDiv: HTMLElement;\r\n protected chartDiv: HTMLElement;\r\n\r\n protected options: ChartWidgetOptions = {\r\n chartType: ChartType.Pie,\r\n showOnPaging: false,\r\n hideSettings: false,\r\n legend: {\r\n show: false,\r\n position: 'right'\r\n }\r\n }\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-chart';\r\n }\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n * @param provider The provider.\r\n */\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n this.element = slot;\r\n\r\n this.group = WidgetGroup.Result;\r\n }\r\n\r\n\r\n /**\r\n * Initialize widget.\r\n * @param context The context.\r\n * @param options The options.\r\n */\r\n public init(context: EqContext, options?: ChartWidgetOptions) {\r\n super.init(context, options);\r\n this.dataTable = context.resultTable;\r\n\r\n this.setOptions(options);\r\n }\r\n\r\n /**\r\n * Checks, if widget has data.\r\n * @returns `true` if has data, otherwise - `false`.\r\n */\r\n public hasData() : boolean {\r\n let result = this.dataTable != null;\r\n\r\n if (result) {\r\n result = this.dataTable.getCachedCount() > 0;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Checks, if there ara colums for chart\r\n * @returns `true` if there are columns, otherwise - `false`.\r\n */\r\n public hasColumnsForChart() : boolean {\r\n return this.potentialLabelColumns.length > 0 && this.potentialDataColumns.length > 0;\r\n }\r\n\r\n /**\r\n * Refresh widget implementation\r\n */\r\n protected refreshCore() {\r\n this.prepareChartData();\r\n this.render();\r\n }\r\n\r\n private setOptions(options: ChartWidgetOptions) {\r\n dataUtils.assignDeep(this.options, options);\r\n this.supportedChartTypes = this.getSupportedChartTypes(); \r\n if (this.supportedChartTypes.length == 0) {\r\n throw Error(\"Chart widget should support at least one chart type\");\r\n }\r\n if (options.chartType && this.supportedChartTypes.indexOf(options.chartType) >= 0) {\r\n this.chartType = options.chartType; \r\n }\r\n else {\r\n this.chartType = this.supportedChartTypes[0];\r\n }\r\n }\r\n\r\n public getOptions(): ChartWidgetOptions {\r\n return this.options;\r\n }\r\n\r\n public getChartTypeName(ct: ChartType) : string {\r\n switch (ct) {\r\n case ChartType.Area:\r\n return i18n.getText('ChartType', 'Area');\r\n case ChartType.Bar:\r\n return i18n.getText('ChartType', 'Bar');\r\n case ChartType.Column:\r\n return i18n.getText('ChartType', 'Column');\r\n case ChartType.Combo:\r\n return i18n.getText('ChartType', 'Combo');\r\n case ChartType.Doughnut:\r\n return i18n.getText('ChartType', 'Doughnut');\r\n case ChartType.Polar: \r\n return i18n.getText('ChartType', 'Polar');\r\n case ChartType.Radar:\r\n return i18n.getText('ChartType', 'Radar');\r\n case ChartType.Histogram:\r\n return i18n.getText('ChartType', 'Histogram');\r\n case ChartType.Line:\r\n return i18n.getText('ChartType', 'Line');\r\n case ChartType.SteppedLine:\r\n return i18n.getText('ChartType', 'SteppedLine');\r\n default: \r\n return i18n.getText('ChartType', 'Pie');\r\n }\r\n }\r\n\r\n public updateSettings(settings: {type: ChartType, labelColumn: number, dataColumn: number, showLegend?: boolean}, updateColumns = true) {\r\n if (typeof settings.showLegend !== 'undefined') {\r\n this.options.legend = this.options.legend || {};\r\n this.options.legend.show = settings.showLegend;\r\n }\r\n this.chartType = settings.type;\r\n this.labelColumn = settings.labelColumn;\r\n this.dataColumns[0] = settings.dataColumn;\r\n\r\n if (updateColumns)\r\n this.updateChartColumns();\r\n }\r\n\r\n /**\r\n * Prepares data for chart.\r\n */\r\n public prepareChartData() {\r\n if (this.dataTable) {\r\n this.potentialLabelColumns = [];\r\n this.potentialDataColumns = [];\r\n let colNum = this.dataTable.columns.count;\r\n\r\n for (let i = 0; i < colNum; i++) {\r\n const column = this.dataTable.columns.get(i);\r\n let colType = column.type;\r\n let colLabel = column.label;\r\n this.potentialLabelColumns.push({ idx: i, label: colLabel });\r\n\r\n if (dataUtils.isNumericType(colType)) {\r\n this.potentialDataColumns.push({ idx: i, label: colLabel });\r\n }\r\n };\r\n\r\n if (this.labelColumn != -1) {\r\n if (!this.potentialLabelColumns\r\n .filter(c => c.idx == this.labelColumn)\r\n .length) {\r\n this.labelColumn = -1;\r\n }\r\n }\r\n else {\r\n this.labelColumn = (this.potentialLabelColumns.length > 0) \r\n ? this.potentialLabelColumns[0].idx : -1;\r\n }\r\n\r\n if (this.dataColumns.length) {\r\n const ids = this.potentialDataColumns.map(d => d.idx);\r\n this.dataColumns = this.dataColumns.filter(v => ids.indexOf(v) >= 0);\r\n\r\n if (!this.dataColumns.length) {\r\n this.dataColumns = (this.potentialDataColumns.length > 0)\r\n ? [].concat(this.potentialDataColumns[0].idx)\r\n : []\r\n }\r\n }\r\n else {\r\n this.dataColumns = (this.potentialDataColumns.length > 0)\r\n ? [].concat(this.potentialDataColumns[0].idx)\r\n : []\r\n }\r\n\r\n this.initChart();\r\n }\r\n }\r\n\r\n protected abstract hasChartTypes: ChartType[];\r\n\r\n public getSupportedChartTypes(): ChartType[] {\r\n const chartTypes = this.options.supportedChartTypes\r\n ? this.options.supportedChartTypes\r\n : Object.keys(ChartType).map(key => ChartType[key]);\r\n\r\n return chartTypes.filter(type => this.hasChartTypes.indexOf(type) >= 0);\r\n }\r\n\r\n public getCurrentChartType(): ChartType {\r\n return this.chartType;\r\n }\r\n\r\n protected abstract canDraw(): boolean;\r\n\r\n protected abstract initChart(): void;\r\n\r\n private render() : void {\r\n this.clear();\r\n\r\n if (this.hasData() && this.hasColumnsForChart() \r\n && (this.context.resultTable.getTotal() \r\n == this.context.resultTable.getCachedCount())) \r\n {\r\n let headerDiv = document.createElement('div');\r\n addCssClass(headerDiv, `${this.cssPrefix}-header`);\r\n\r\n let mainDiv = document.createElement('div');\r\n addCssClass(mainDiv, `${this.cssPrefix}-main`);\r\n \r\n if (this.canDraw()) {\r\n let chartTypeSelector = document.createElement('select');\r\n\r\n for (let ct of this.supportedChartTypes) {\r\n let sopt = document.createElement('option');\r\n sopt.value = ct.toString();\r\n sopt.text = this.getChartTypeName(ct);\r\n chartTypeSelector.appendChild(sopt);\r\n }\r\n\r\n chartTypeSelector.value = this.chartType.toString();\r\n\r\n headerDiv.appendChild(chartTypeSelector);\r\n\r\n chartTypeSelector.addEventListener('change', (ev) => {\r\n let ctkey = (ev.target as HTMLSelectElement).value;\r\n this.chartType = parseInt(ctkey) as ChartType;\r\n this.refresh();\r\n });\r\n\r\n this.settingsDiv = document.createElement('div');\r\n addCssClass(this.settingsDiv, `${this.cssPrefix}-settings`);\r\n hideElement(this.settingsDiv);\r\n mainDiv.appendChild(this.settingsDiv);\r\n\r\n this.chartDiv = document.createElement('div');\r\n addCssClass(this.chartDiv, `${this.cssPrefix}-content`);\r\n hideElement(this.chartDiv);\r\n\r\n mainDiv.appendChild(this.chartDiv);\r\n\r\n this.initSettingsDiv();\r\n\r\n let chartSettingsBtn = document.createElement('div');\r\n addCssClass(chartSettingsBtn, `${this.cssPrefix}-settings-icon`);\r\n chartSettingsBtn.title = \"Settings\";\r\n\r\n headerDiv.appendChild(chartSettingsBtn);\r\n\r\n chartSettingsBtn.addEventListener('click', (ev) => {\r\n this.toggleSettings();\r\n });\r\n \r\n this.drawChart(100);\r\n\r\n } \r\n else {\r\n this.addContentDiv(mainDiv, 'Unable to render the chart. None of the supported chart libraries (ChartJS, Google Charts, etc) is found.');\r\n }\r\n\r\n if (!this.options.hideSettings) {\r\n this.element.appendChild(headerDiv);\r\n }\r\n\r\n this.element.appendChild(mainDiv);\r\n\t\t\t\r\n\t\t\tthis.element.style.display = \"\";\r\n }\r\n\t\telse {\r\n\t\t\tthis.element.style.display = \"none\";\r\n\t\t}\r\n }\r\n\r\n private addContentDiv(mainDiv: HTMLElement, text: string) : void {\r\n let contentDiv = document.createElement('div');\r\n addCssClass(contentDiv, `${this.cssPrefix}-no-data`);\r\n contentDiv.innerText = text;\r\n mainDiv.appendChild(contentDiv);\r\n }\r\n\r\n /**\r\n * Clears the chart.\r\n */\r\n public clear() : void {\r\n this.element.innerHTML = '';\r\n }\r\n\r\n /**\r\n * Draws chart with a delay.\r\n * @param delay The delay.\r\n */\r\n public drawChart(delay : number) {\r\n showElement(this.chartDiv);\r\n if (delay > 0) {\r\n setTimeout(() => this.drawCore(), delay);\r\n }\r\n else {\r\n this.drawCore();\r\n }\r\n }\r\n\r\n protected abstract drawCore(): void;\r\n\r\n protected abstract updateChartColumns(): void;\r\n\r\n /**\r\n * Inititializes the settings div.\r\n */\r\n public initSettingsDiv() {\r\n let settingsHeader = document.createElement('div');\r\n settingsHeader.textContent = 'SETTINGS';\r\n addCssClass(settingsHeader, `${this.cssPrefix}-settings-header`);\r\n\r\n this.settingsDiv.appendChild(settingsHeader);\r\n\r\n // Label column\r\n let labelDiv = document.createElement('div');\r\n addCssClass(labelDiv, `${this.cssPrefix}-settings-single`);\r\n this.settingsDiv.appendChild(labelDiv);\r\n\r\n let labelColumnSelectorCaption = document.createElement('span');\r\n showElement(labelColumnSelectorCaption);\r\n labelColumnSelectorCaption.textContent = 'Label column';\r\n labelDiv.appendChild(labelColumnSelectorCaption);\r\n\r\n let labelColumnSelector = document.createElement('select');\r\n showElement(labelColumnSelector);\r\n labelDiv.appendChild(labelColumnSelector);\r\n\r\n for (let col of this.potentialLabelColumns) {\r\n let sopt = document.createElement('option');\r\n sopt.value = col.idx.toString();\r\n sopt.text = col.label;\r\n labelColumnSelector.appendChild(sopt);\r\n }\r\n\r\n if (this.labelColumn >= 0) {\r\n labelColumnSelector.value = this.labelColumn.toString();\r\n }\r\n\r\n labelColumnSelector.addEventListener('change', (ev) => { \r\n this.labelColumn = parseInt((ev.target as HTMLSelectElement).value);\r\n this.updateChartColumns();\r\n this.toggleSettings(() => {\r\n this.drawChart(100);\r\n });\r\n });\r\n\r\n // Data column\r\n let dataDiv = document.createElement('div');\r\n addCssClass(dataDiv, `${this.cssPrefix}-settings-single`);\r\n this.settingsDiv.appendChild(dataDiv);\r\n\r\n let dataColumnSelectorCaption = document.createElement('span');\r\n showElement(dataColumnSelectorCaption);\r\n dataColumnSelectorCaption.textContent = 'Data column';\r\n dataDiv.appendChild(dataColumnSelectorCaption);\r\n\r\n let dataColumnSelector = document.createElement('select');\r\n showElement(dataColumnSelector);\r\n dataDiv.appendChild(dataColumnSelector);\r\n\r\n for (let col of this.potentialDataColumns) {\r\n let sopt = document.createElement('option');\r\n sopt.value = col.idx.toString();\r\n sopt.text = col.label;\r\n dataColumnSelector.appendChild(sopt);\r\n }\r\n\r\n if (this.dataColumns.length > 0 && this.dataColumns[0] >= 0) {\r\n dataColumnSelector.value = this.dataColumns[0].toString();\r\n }\r\n\r\n dataColumnSelector.addEventListener('change', (ev) => { \r\n this.dataColumns[0] = parseInt((ev.target as HTMLSelectElement).value);\r\n this.updateChartColumns();\r\n this.toggleSettings(() => {\r\n this.drawChart(100);\r\n });\r\n });\r\n }\r\n\r\n public getPotentialLabelColumns(): ChartColumn[] {\r\n return this.potentialLabelColumns;\r\n }\r\n\r\n public getPotentialDataColumns(): ChartColumn[] {\r\n return this.potentialDataColumns;\r\n }\r\n\r\n public getLabelColumnIndex(): number {\r\n return this.labelColumn;\r\n }\r\n\r\n public getDataColumnIndex(): number {\r\n return this.dataColumns[0];\r\n }\r\n\r\n /**\r\n * Toggles settings.\r\n * @param callback The callback.\r\n */\r\n public toggleSettings(callback? : () => void) {\r\n let first : HTMLElement;\r\n let second : HTMLElement;\r\n\r\n if (isVisible(this.chartDiv)){\r\n first = this.chartDiv;\r\n second = this.settingsDiv;\r\n }\r\n else {\r\n first = this.settingsDiv;\r\n second = this.chartDiv;\r\n }\r\n\r\n toggleVisibility(first, second, {\r\n complete: callback\r\n });\r\n }\r\n}","import { addElement } from '@easydata/ui';\r\n\r\nimport { ChartWidget } from './chart_widget';\r\nimport { ChartType } from './chart_type'\r\n\r\ndeclare var Chart;\r\n\r\nexport class ChartJsWidget extends ChartWidget {\r\n private colors: string[] = [\r\n '#4dc9f6',\r\n '#f67019',\r\n '#f53794',\r\n '#537bc4',\r\n '#acc236',\r\n '#166a8f',\r\n '#00a950',\r\n '#58595b',\r\n '#8549ba'\r\n ];\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n * @param provider The provider.\r\n */\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n this.options.legend = {\r\n show: false,\r\n position: 'bottom'\r\n };\r\n }\r\n\r\n\r\n public getWidgetType(): string {\r\n return 'chartChartJs';\r\n }\r\n\r\n private chartLabels: string[] = [];\r\n private chartColumns: string[] = [];\r\n\r\n protected hasChartTypes = [\r\n ChartType.Column,\r\n ChartType.Bar,\r\n ChartType.Area,\r\n ChartType.Line,\r\n ChartType.SteppedLine,\r\n ChartType.Doughnut,\r\n ChartType.Polar,\r\n ChartType.Radar,\r\n ChartType.Pie\r\n // ChartType.Bubble,\r\n // ChartType.Scatter\r\n ];\r\n\r\n public static hasChartJs() : boolean {\r\n return typeof Chart !== 'undefined';\r\n }\r\n \r\n protected canDraw(): boolean {\r\n return ChartJsWidget.hasChartJs();\r\n }\r\n\r\n protected initChart() {\r\n if (ChartJsWidget.hasChartJs() && this.labelColumn >= 0 \r\n && this.dataColumns && this.dataColumns.length > 0) \r\n {\r\n this.updateChartColumns();\r\n } \r\n }\r\n\r\n protected drawCore() {\r\n if (ChartJsWidget.hasChartJs() && this.dataTable \r\n && this.dataTable.getCachedCount() > 0) {\r\n\r\n let config = this.generateConfig();\r\n \r\n let chartCanvas = this.getChartCanvas(this.chartDiv);\r\n let chartContext = chartCanvas.getContext('2d');\r\n\r\n new Chart(chartContext, config);\r\n }\r\n }\r\n\r\n protected updateChartColumns() {\r\n if (this.dataTable) {\r\n this.chartLabels = [];\r\n this.chartColumns = [];\r\n const rows = this.dataTable.getCachedRows();\r\n for (let i = 0; i < rows.length; i++) {\r\n this.chartLabels.push(rows[i].getValue(this.labelColumn));\r\n this.chartColumns.push(rows[i].getValue(this.dataColumns[0]));\r\n }\r\n }\r\n }\r\n \r\n private getChartCanvas(slot : HTMLElement) : HTMLCanvasElement {\r\n let result : HTMLCanvasElement;\r\n\r\n //find canvas element\r\n let canvases = slot.getElementsByTagName('canvas'); \r\n if (canvases && canvases.length > 0) {\r\n result = canvases[0];\r\n }\r\n else {\r\n result = addElement(slot, 'canvas') as HTMLCanvasElement;\r\n }\r\n return result;\r\n }\r\n\r\n private generateConfig(){\r\n let dataColors = [];\r\n let datasetName = this.dataTable.columns.get(this.dataColumns[0]).label;\r\n let fillValue = true;\r\n let borderColor: string;\r\n\r\n if (this.chartType == ChartType.Pie\r\n || this.chartType == ChartType.Doughnut\r\n || this.chartType == ChartType.Polar\r\n || this.chartType == ChartType.Bar \r\n || this.chartType == ChartType.Column) {\r\n\r\n for (let i = 0; i < this.chartLabels.length; i++) {\r\n dataColors.push(this.colors[i % this.colors.length]);\r\n }\r\n } \r\n else {\r\n dataColors = [this.colors[3]];\r\n }\r\n\r\n if (this.chartType == ChartType.Line \r\n || this.chartType == ChartType.SteppedLine) {\r\n fillValue = false;\r\n borderColor = this.colors[3];\r\n \r\n }\r\n\r\n this.options.legend = this.options.legend || {}\r\n\r\n const dataset1: any = {\r\n data: this.chartColumns,\r\n backgroundColor: dataColors,\r\n borderColor: borderColor,\r\n label: datasetName,\r\n fill: fillValue\r\n }\r\n\r\n if (this.chartType == ChartType.SteppedLine) {\r\n dataset1.stepped = this.chartType === ChartType.SteppedLine, // >= 3.0.0\r\n dataset1.steppedLine = this.chartType === ChartType.SteppedLine // <= 3.0.0\r\n }\r\n\r\n const displayLegend = this.options.legend.show && (this.chartType == ChartType.Pie\r\n || this.chartType == ChartType.Radar || this.chartType == ChartType.Polar\r\n || this.chartType == ChartType.Doughnut);\r\n\r\n return {\r\n type: this.getChartType(),\r\n data: {\r\n datasets: [dataset1],\r\n labels: this.chartLabels\r\n },\r\n options: {\r\n legend: {\r\n display: displayLegend,\r\n position: this.options.legend.position || 'bottom'\r\n },\r\n title: {\r\n display: true,\r\n text: datasetName\r\n }\r\n } \r\n }\r\n }\r\n\r\n private getChartType() {\r\n switch (this.chartType) {\r\n case ChartType.Column:\r\n return \"bar\";\r\n\r\n case ChartType.Bar:\r\n return \"horizontalBar\";\r\n\r\n case ChartType.Area:\r\n case ChartType.SteppedLine:\r\n case ChartType.Line:\r\n return \"line\";\r\n\r\n case ChartType.Doughnut:\r\n return \"doughnut\";\r\n\r\n case ChartType.Polar:\r\n return \"polarArea\";\r\n\r\n case ChartType.Radar:\r\n return \"radar\";\r\n\r\n case ChartType.Pie:\r\n return \"pie\";\r\n\r\n default:\r\n return \"pie\";\r\n } \r\n }\r\n}","import { DataType } from '@easydata/core';\r\nimport { ChartWidget } from './chart_widget';\r\n\r\nimport { ChartType } from './chart_type';\r\n\r\ndeclare var google;\r\n\r\nexport class GoogleChartWidget extends ChartWidget {\r\n protected googleDataView: any;\r\n\r\n protected hasChartTypes = [\r\n ChartType.Column,\r\n ChartType.Bar,\r\n ChartType.Histogram,\r\n ChartType.Combo,\r\n ChartType.Area,\r\n ChartType.Line,\r\n ChartType.SteppedLine,\r\n ChartType.Pie,\r\n ChartType.Doughnut\r\n ];\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n * @param provider The provider.\r\n */\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n \r\n this.options.legend = {\r\n show: true,\r\n position: 'right'\r\n }\r\n }\r\n\r\n \r\n public getWidgetType(): string {\r\n return 'chartGoogle';\r\n }\r\n\r\n protected canDraw(): boolean {\r\n return GoogleChartWidget.hasGoogleCharts();\r\n }\r\n\r\n public static hasGoogleCharts() : boolean {\r\n return typeof google !== 'undefined' && typeof google.charts !== 'undefined';\r\n }\r\n \r\n protected initChart() {\r\n if (GoogleChartWidget.hasGoogleCharts() && this.labelColumn >= 0 \r\n && this.dataColumns && this.dataColumns.length > 0) \r\n {\r\n this.googleDataView = \r\n new google.visualization.DataView(this.convertToGoogleFormat());\r\n this.updateChartColumns();\r\n } \r\n }\r\n\r\n private convertToGoogleType(type: DataType): string {\r\n switch(type) {\r\n case DataType.Date:\r\n return \"date\";\r\n case DataType.DateTime:\r\n return \"datetime\";\r\n case DataType.Time:\r\n return \"timeofday\";\r\n case DataType.Byte:\r\n case DataType.Word:\r\n case DataType.Int32:\r\n case DataType.Int64:\r\n case DataType.Currency:\r\n case DataType.Float:\r\n return \"number\";\r\n default:\r\n return \"string\";\r\n }\r\n }\r\n\r\n \r\n private convertToGoogleValue(value: any, type: DataType): any {\r\n switch(type) {\r\n case DataType.Bool:\r\n return value ? value.toString() : null;\r\n default:\r\n return value;\r\n }\r\n }\r\n\r\n protected convertToGoogleFormat(): any {\r\n const googleTable = new google.visualization.DataTable();\r\n const columns = this.dataTable.columns;\r\n for(let i = 0; i < columns.count; i++) {\r\n const column = columns.get(i);\r\n googleTable.addColumn(this.convertToGoogleType(column.type), column.label, column.id);\r\n }\r\n\r\n const rows = this.dataTable.getCachedRows();\r\n googleTable.addRows(rows.length);\r\n\r\n for(let i = 0; i < rows.length; i++) {\r\n const row = rows[i];\r\n for(let j = 0; j < columns.count; j++) {\r\n googleTable.setCell(i, j, this.convertToGoogleValue(row.getValue(j), columns.get(j).type));\r\n }\r\n }\r\n \r\n return googleTable;\r\n }\r\n\r\n protected drawCore() {\r\n if (this.googleDataView != null) {\r\n this.options.legend = this.options.legend || {};\r\n\r\n let chartOptions: any = {\r\n width: \"100%\",\r\n height: \"100%\",\r\n chartArea: { width: this.getChartAreaWidth }\r\n };\r\n\r\n if (this.chartType == ChartType.Doughnut) {\r\n chartOptions.pieHole = 0.4;\r\n }\r\n\r\n if (!this.options.legend.show) {\r\n chartOptions.legend = 'none';\r\n }\r\n else {\r\n chartOptions.legend = { position: this.options.legend.position }\r\n }\r\n \r\n let chart = this.createChart(this.chartDiv);\r\n chart.draw(this.googleDataView, chartOptions);\r\n }\r\n }\r\n\r\n \r\n private getChartAreaWidth(chartType : ChartType): string {\r\n if (chartType == ChartType.Pie) {\r\n return \"100%\";\r\n }\r\n else {\r\n return \"50%\";\r\n }\r\n }\r\n\r\n protected updateChartColumns() {\r\n if (this.googleDataView) {\r\n this.googleDataView.setColumns([].concat(this.labelColumn).concat(this.dataColumns));\r\n }\r\n }\r\n\r\n protected createChart(slot: HTMLElement) : any {\r\n switch (this.chartType) {\r\n case ChartType.Column:\r\n return new google.visualization.ColumnChart(slot);\r\n case ChartType.Histogram:\r\n return new google.visualization.Histogram(slot);\r\n case ChartType.Bar:\r\n return new google.visualization.BarChart(slot);\r\n case ChartType.Combo:\r\n return new google.visualization.ComboChart(slot);\r\n case ChartType.Area:\r\n return new google.visualization.AreaChart(slot);\r\n case ChartType.Line:\r\n return new google.visualization.LineChart(slot);\r\n case ChartType.SteppedLine:\r\n return new google.visualization.SteppedAreaChart(slot);\r\n case ChartType.Pie:\r\n case ChartType.Doughnut:\r\n return new google.visualization.PieChart(slot);\r\n default:\r\n return new google.visualization.PieChart(slot);\r\n }\r\n }\r\n}","import { i18n , utils as dataUtils } from '@easydata/core';\r\nimport { domel, Dialog } from '@easydata/ui';\r\n\r\nimport { FacetType } from '../types/facet_type';\r\nimport { ResultFacet } from './result_facet';\r\n\r\nimport { ChartType } from '../widgets/charts/chart_type';\r\nimport { ChartWidget } from '../widgets/charts/chart_widget';\r\nimport { ChartJsWidget } from '../widgets/charts/chart_widget_chartjs';\r\nimport { GoogleChartWidget } from '../widgets/charts/chart_widget_google';\r\nimport { ChartWidgetOptions } from '../widgets/widget_options';\r\n\r\nimport { browserUtils } from '../utils/browser_utils';\r\n\r\nexport class ChartFacet extends ResultFacet {\r\n protected chart: ChartWidget;\r\n\r\n public title: string = i18n.getText('Facets', 'Chart', 'FacetTitle');\r\n\r\n protected settings: any;\r\n\r\n protected dialogTitle = i18n.getText('Facets', 'Chart', 'DlgTitle');\r\n\r\n public init(slot: HTMLElement) {\r\n super.init(slot);\r\n \r\n if (GoogleChartWidget.hasGoogleCharts()) {\r\n this.chart = new GoogleChartWidget(this.contentDiv);\r\n }\r\n else {\r\n this.chart = new ChartJsWidget(this.contentDiv);\r\n }\r\n\r\n const supportedChartTypes = this.container.options \r\n ? this.container.options.supportedChartTypes \r\n : null;\r\n\r\n this.chart.init(this.getContext(), { \r\n legend: {\r\n show: false\r\n },\r\n showOnPaging: true,\r\n hideSettings: true,\r\n supportedChartTypes: supportedChartTypes\r\n } as ChartWidgetOptions);\r\n\r\n //prevent showing chart tab\r\n domel(this.slot).hide();\r\n }\r\n\r\n public destroy() {\r\n if (this.chart) {\r\n this.chart.destroy();\r\n }\r\n }\r\n\r\n public getType(): FacetType {\r\n return FacetType.Chart;\r\n }\r\n\r\n protected renderFormFields(form: HTMLElement, fieldsContainer: HTMLElement) {\r\n super.renderFormFields(form, fieldsContainer);\r\n const isIE = browserUtils.isIE();\r\n const horizClass = isIE ? 'kfrm-fields-ie is-horizontal' : 'kfrm-fields is-horizontal'\r\n \r\n // Chart type\r\n let chartTypeSelector = document.createElement('select');\r\n chartTypeSelector.id = 'chart_type_selector';\r\n chartTypeSelector.name = 'chart_type_selector';\r\n for (let ct of this.chart.getSupportedChartTypes()) {\r\n let sopt = document.createElement('option');\r\n sopt.value = ct.toString();\r\n sopt.text = this.chart.getChartTypeName(ct);\r\n chartTypeSelector.appendChild(sopt);\r\n }\r\n\r\n chartTypeSelector.value = this.chart.getCurrentChartType().toString();\r\n\r\n if (!this.settings) {\r\n this.chart.prepareChartData();\r\n this.settings = {\r\n type: this.chart.getCurrentChartType().toString(),\r\n labelColumn: `${this.chart.getLabelColumnIndex() >= 0 ? this.chart.getLabelColumnIndex() : ''}`,\r\n dataColumn: `${this.chart.getDataColumnIndex() >= 0 ? this.chart.getDataColumnIndex() : ''}`,\r\n showLegend: false\r\n }\r\n }\r\n\r\n // Label column\r\n const labelColumnSelector = document.createElement('select');\r\n labelColumnSelector.name = 'label_column_selector';\r\n labelColumnSelector.id = 'label_column_selector';\r\n for (const col of this.chart.getPotentialLabelColumns()) {\r\n const sopt = document.createElement('option');\r\n sopt.value = col.idx.toString();\r\n sopt.text = col.label;\r\n labelColumnSelector.appendChild(sopt);\r\n }\r\n\r\n labelColumnSelector.value = this.settings.labelColumn;\r\n\r\n // Data column\r\n const dataColumnSelector = document.createElement('select');\r\n dataColumnSelector.id = 'data_column_selector';\r\n dataColumnSelector.name = 'data_column_selector';\r\n for (const col of this.chart.getPotentialDataColumns()) {\r\n const sopt = document.createElement('option');\r\n sopt.value = col.idx.toString();\r\n sopt.text = col.label;\r\n dataColumnSelector.appendChild(sopt);\r\n }\r\n\r\n dataColumnSelector.value = this.settings.dataColumn.toString();\r\n\r\n let current = fieldsContainer;\r\n\r\n const getCurrent = () => {\r\n if (isIE) {\r\n return domel('div', fieldsContainer)\r\n .addClass('kfrm-field-ie')\r\n .toDOM()\r\n }\r\n else {\r\n return fieldsContainer;\r\n }\r\n }\r\n \r\n if (isIE) {\r\n domel(form)\r\n .addChildElement(getCurrent())\r\n }\r\n else {\r\n domel(fieldsContainer)\r\n .addChild('div')\r\n .addChild('div')\r\n }\r\n\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('label', b => b\r\n .attr('for', 'chart_type_selector')\r\n .text(i18n.getText('Facets', 'Chart', 'ChartTypeSelectorLabel'))\r\n )\r\n .addChild('div', b =>\r\n b\r\n .addClass('kfrm-select')\r\n .addChildElement(chartTypeSelector)\r\n )\r\n\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('label', b => b\r\n .attr('for', 'label_column_selector')\r\n .text(i18n.getText('Facets', 'Chart', 'LabelColumnSelectorLabel'))\r\n )\r\n .addChild('div', b => b\r\n .addClass('kfrm-select')\r\n .addChildElement(labelColumnSelector)\r\n )\r\n\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('label', b => b\r\n .attr('for', 'data_column_selector')\r\n .text(i18n.getText('Facets', 'Chart', 'DataColumnSelectorLabel'))\r\n )\r\n .addChild('div', b => b\r\n .addClass('kfrm-select')\r\n .addChildElement(dataColumnSelector)\r\n )\r\n\r\n\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('div')\r\n .addChild('div', b => b\r\n .addClass(horizClass)\r\n .addChild('label', b => b\r\n .addClass('checkbox')\r\n .addChild('input', b => {\r\n b\r\n .id('show_legend')\r\n .type('checkbox')\r\n if (this.settings.showLegend)\r\n b.attr('checked', '')\r\n })\r\n .addText(' ' + i18n.getText('Facets', 'Chart', 'ShowLegendLabel'))\r\n )\r\n )\r\n }\r\n\r\n protected afterDialogOpened(dlg: Dialog) {\r\n if (this.getContext().resultTable.columns.getItems().filter(col => dataUtils.isNumericType(col.type)).length <= 0) {\r\n dlg.showAlert('The dataset should contain at least one numeric column to build a chart', 'error');\r\n dlg.getSubmitButtonElement().disabled = true;\r\n }\r\n }\r\n\r\n\r\n protected submitSettingsDialog(): boolean {\r\n const result = super.submitSettingsDialog();\r\n\r\n const chartTypeSelector = document.getElementById('chart_type_selector') as HTMLSelectElement;\r\n const ct = parseInt(chartTypeSelector.value) as ChartType;\r\n \r\n const labelColumnSelector = document.getElementById('label_column_selector') as HTMLSelectElement;\r\n const labelColumn = parseInt(labelColumnSelector.value);\r\n\r\n const dataColumnSelector = document.getElementById('data_column_selector') as HTMLSelectElement;\r\n const dataColumn = parseInt(dataColumnSelector.value);\r\n\r\n const showLegendInput = document.getElementById('show_legend') as HTMLInputElement;\r\n const showLegend = showLegendInput.checked;\r\n\r\n\r\n if (result) {\r\n this.settings = {\r\n type: ct,\r\n labelColumn: labelColumn,\r\n dataColumn: dataColumn,\r\n showLegend: showLegend\r\n };\r\n if (this.canDisplay()) {\r\n this.refresh();\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public getSettings() {\r\n return this.settings;\r\n }\r\n\r\n public saveToData(): any {\r\n const data = super.saveToData();\r\n if (this.settings) {\r\n data.chartType = this.settings.type;\r\n data.labelCol = this.settings.labelColumn;\r\n data.dataCol = this.settings.dataColumn;\r\n data.showLeg = this.settings.showLegend;\r\n }\r\n return data;\r\n }\r\n\r\n public loadFromData(data: any) {\r\n super.loadFromData(data);\r\n\r\n if (data) {\r\n this.settings = {\r\n type: data.chartType,\r\n dataColumn: data.dataCol,\r\n labelColumn: data.labelCol,\r\n showLegend: data.showLeg\r\n }\r\n }\r\n }\r\n\r\n protected refreshCore() {\r\n if (this.chart) {\r\n if (this.settings) {\r\n this.chart.updateSettings(this.settings);\r\n }\r\n this.chart.prepareChartData();\r\n this.chart.refresh();\r\n }\r\n }\r\n\r\n public onResize() {\r\n this.refresh();\r\n }\r\n\r\n}","import { Dialog, domel, DomElementBuilder } from '@easydata/ui';\r\n\r\nimport { EasyDataTable, DataColumn, DataType, utils as dataUtils, i18n } from '@easydata/core';\r\nimport { EasyGrid, GridColumn, GridCellRenderer } from '@easydata/ui';\r\n\r\nimport { FacetType } from '../types/facet_type';\r\nimport { ResultFacet } from './result_facet';\r\n\r\nimport { browserUtils } from '../utils/browser_utils';\r\n\r\nenum AggrFunc {\r\n Sum = 'SUM',\r\n Average = 'AVG',\r\n Min = 'MIN',\r\n Max = 'MAX',\r\n Count = 'COUNT'\r\n}\r\n\r\nenum FormFieldType {\r\n ColumnField,\r\n RowField,\r\n CellData\r\n}\r\n\r\ninterface CrossTabOptions {\r\n aggrFunc?: AggrFunc;\r\n rowName?: string;\r\n colName?: string;\r\n fieldName?: string;\r\n totalsCol?: boolean;\r\n totalsRow?: boolean;\r\n}\r\n\r\ninterface AggrFuncOptions {\r\n rowName: string;\r\n colName: string;\r\n fieldName: string;\r\n rowValue: string;\r\n colValue: string;\r\n}\r\n\r\nconst DFMT_REGEX = /{0:(.*?)}/g;\r\n\r\n\r\nexport class PivotTableFacet extends ResultFacet {\r\n\r\n protected grid: EasyGrid;\r\n\r\n public title: string = i18n.getText('Facets', 'Pivot', 'FacetTitle');\r\n\r\n protected dialogTitle = i18n.getText('Facets', 'Pivot', 'DlgTitle');\r\n\r\n protected pivotTable: EasyDataTable = new EasyDataTable();\r\n\r\n protected settings: CrossTabOptions;\r\n\r\n public init(slot: HTMLElement) {\r\n super.init(slot);\r\n\r\n this.options.maxRowCount = this.options.maxRowCount || 500;\r\n this.options.viewportRowsCount = this.options.viewportRowsCount || 50;\r\n\r\n this.grid = new EasyGrid({\r\n slot: this.contentDiv,\r\n dataTable: this.pivotTable,\r\n paging: {\r\n enabled: false,\r\n pageSize: this.options.maxRowCount\r\n },\r\n viewportRowsCount: this.options.viewportRowsCount,\r\n useRowNumeration: false,\r\n showPlusButton: false,\r\n allowDragDrop: false,\r\n onGetCellRenderer: (column: GridColumn, defaultRenderer: GridCellRenderer) => {\r\n if (column.dataColumn) {\r\n if (column.dataColumn.id == \"total\") {\r\n return (value: any, column: GridColumn, cell: HTMLElement, rowEl: HTMLElement) => {\r\n defaultRenderer(value, column, cell, rowEl);\r\n cell.classList.add('pivot-cell-total');\r\n }\r\n }\r\n\r\n if (this.settings.totalsRow) {\r\n const colIndex = this.pivotTable.columns.getIndex(column.dataColumn.id);\r\n const isFirst = colIndex === 0;\r\n if (isFirst) {\r\n return (value: any, column: GridColumn, cell: HTMLElement, rowEl: HTMLElement) => {\r\n const idx = Number.parseInt(rowEl.getAttribute('data-row-idx'));\r\n const isLast = idx === this.pivotTable.getCachedCount() - 1;\r\n if (isLast) {\r\n value = i18n.getText('Facets', 'Pivot', 'TotalGridLabel');\r\n } \r\n defaultRenderer(value, column, cell, rowEl);\r\n }\r\n }\r\n }\r\n \r\n } \r\n }\r\n });\r\n }\r\n\r\n public getType(): FacetType {\r\n return FacetType.PivotTable;\r\n }\r\n\r\n public destroy() {\r\n if (this.grid) {\r\n this.grid.destroy();\r\n }\r\n }\r\n\r\n private createAggrFuncSelectBuilder(aggrFunc?: string): DomElementBuilder<HTMLElement> {\r\n const model = this.getContext().getModel();\r\n const csb = domel('select');\r\n\r\n const aggrfuncs = Object.keys(AggrFunc).map(k => AggrFunc[k]);\r\n for(const aggrfunc of aggrfuncs) {\r\n csb.addChild('option', b => {\r\n b\r\n .attr('value', aggrfunc)\r\n .text(model.getAggrFunctionCaption(aggrfunc));\r\n });\r\n }\r\n\r\n const options = csb.toDOM().querySelectorAll('option');\r\n if (aggrFunc != undefined) {\r\n options.forEach(option => {\r\n if (option.value == aggrFunc) {\r\n option.selected = true;\r\n }\r\n });\r\n }\r\n else {\r\n options[0].selected = true;\r\n }\r\n\r\n return csb;\r\n }\r\n \r\n \r\n private createColumnsSelectBuilder(allowedTypes?: DataType[], colName?: string, formFieldType?: FormFieldType): DomElementBuilder<HTMLElement> { \r\n const dataTable = this.getContextDataTable();\r\n const csb = domel('select');\r\n\r\n let firstNumericColIndex = null;\r\n let optionIndex = 0;\r\n for(let i = 0; i < dataTable.columns.count; i++) {\r\n const column = dataTable.columns.get(i);\r\n\r\n const colLabel = column.label;\r\n const colType = column.type;\r\n const colId = column.id;\r\n\r\n if (allowedTypes && allowedTypes.indexOf(colType) < 0)\r\n continue;\r\n\r\n if (firstNumericColIndex === null && dataUtils.isNumericType(colType)) {\r\n firstNumericColIndex = optionIndex;\r\n }\r\n\r\n csb.addChild('option', b => {\r\n b\r\n .attr('value', colId)\r\n .text(colLabel);\r\n });\r\n optionIndex ++;\r\n }\r\n\r\n const options: HTMLOptionElement[] = Array.from(csb.toDOM().querySelectorAll('option'));\r\n if (options.length > 0) {\r\n if (colName != undefined) {\r\n for(const option of options) {\r\n if (option.value == colName) {\r\n csb.toDOM().value = option.value;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n switch (formFieldType) {\r\n case FormFieldType.ColumnField: {\r\n csb.toDOM().value = options[0].value;\r\n break;\r\n }\r\n case FormFieldType.RowField: {\r\n csb.toDOM().value = options.length > 1 ? options[1].value : options[0].value;\r\n break;\r\n }\r\n case FormFieldType.CellData: {\r\n csb.toDOM().value = firstNumericColIndex === null ? options[0].value : options[firstNumericColIndex].value;\r\n break;\r\n }\r\n }\r\n } \r\n }\r\n\r\n return csb;\r\n }\r\n\r\n protected renderFormFields(form: HTMLElement, fieldsContainer: HTMLElement) {\r\n super.renderFormFields(form, fieldsContainer);\r\n\r\n const settings = this.settings || { totalsRow: true, totalsCol: true };\r\n\r\n const colTypes = [DataType.String, DataType.Date, DataType.DateTime, DataType.Int32,\r\n DataType.Int64, DataType.Word, DataType.Byte];\r\n\r\n const fieldTypes = [DataType.String, DataType.Float, DataType.Int32,\r\n DataType.Int64, DataType.Word, DataType.Byte, DataType.Currency];\r\n \r\n\r\n const isIE = browserUtils.isIE();\r\n let current = fieldsContainer;\r\n const horizClass = isIE ? 'kfrm-fields-ie is-horizontal' : 'kfrm-fields is-horizontal';\r\n\r\n const getCurrent = () => {\r\n if (isIE) {\r\n return domel('div', fieldsContainer)\r\n .addClass('kfrm-field-ie')\r\n .toDOM()\r\n }\r\n else {\r\n return fieldsContainer;\r\n }\r\n }\r\n \r\n if (isIE) {\r\n domel(fieldsContainer)\r\n .addChildElement(getCurrent())\r\n }\r\n else {\r\n domel(fieldsContainer)\r\n .addChild('div')\r\n .addChild('div')\r\n }\r\n \r\n current = getCurrent();\r\n domel(current)\r\n .addChild('label', b => b\r\n .attr('for', 'column_field')\r\n .text(i18n.getText('Facets', 'Pivot', 'ColumnFieldSelectorLabel'))\r\n )\r\n .addChild('div', b => b\r\n .addClass(horizClass)\r\n .addChild('div', b => b\r\n .addClass('kfrm-select')\r\n .attr('name', 'column_field')\r\n .addChildElement(\r\n this.createColumnsSelectBuilder(colTypes, settings.colName, FormFieldType.ColumnField)\r\n .id('pivotTableColFieldSelector')\r\n .toDOM()\r\n )\r\n )\r\n .addChild('button', b => b\r\n .addClass('kfrm-button')\r\n .addClass('eqjs-facets-button-swap')\r\n .attr('title', i18n.getText('Facets', 'Pivot', 'SwapBtnTitle'))\r\n .on('click', () => {\r\n const colSelect = document.getElementById('pivotTableColFieldSelector') as HTMLSelectElement;\r\n const rowSelect = document.getElementById('pivotTableRowFieldSelector') as HTMLSelectElement;\r\n const tmp = colSelect.value;\r\n colSelect.value = rowSelect.value;\r\n rowSelect.value = tmp;\r\n })\r\n )\r\n )\r\n \r\n\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('label', b => b\r\n .attr('for', 'row_field')\r\n .text(i18n.getText('Facets', 'Pivot', 'RowFieldSelectorLabel'))\r\n )\r\n .addChild('div', b => b\r\n .addClass('kfrm-select')\r\n .attr('name', 'row_field')\r\n .addChildElement(\r\n this.createColumnsSelectBuilder(colTypes, settings.rowName, FormFieldType.RowField)\r\n .id('pivotTableRowFieldSelector')\r\n .toDOM()\r\n )\r\n )\r\n \r\n current = getCurrent();\r\n domel(current)\r\n .addChild('label', b => b\r\n .attr('for', 'data_function')\r\n .text(i18n.getText('Facets', 'Pivot', 'CellDataSelectorLabel'))\r\n )\r\n .addChild('div', b => b\r\n .addClass(horizClass)\r\n .addChild('div', b => b\r\n .addClass('kfrm-select')\r\n .attr('name', 'data_function')\r\n .addChildElement(\r\n this.createAggrFuncSelectBuilder(settings.aggrFunc)\r\n .id('pivotTableAggrFuncSelector')\r\n .toDOM()\r\n )\r\n )\r\n .addChild('label', b => b.addText('of '))\r\n .addChild('div', b => b\r\n .addClass('kfrm-select')\r\n .attr('name', 'data_column')\r\n .addChildElement(\r\n this.createColumnsSelectBuilder(fieldTypes, settings.fieldName, FormFieldType.CellData)\r\n .on('change', (ev) => {\r\n const colId = (ev.target as HTMLSelectElement).value;\r\n this.validateSelectedField(colId);\r\n })\r\n .id('pivotTableCellFieldSelector')\r\n .toDOM()\r\n )\r\n )\r\n )\r\n\r\n current = getCurrent();\r\n domel(current)\r\n .addChild('div')\r\n .addChild('div', b => b\r\n .addClass(horizClass)\r\n .addChild('label', b => b\r\n .addClass('checkbox')\r\n .addChild('input', b => { b\r\n .id('pivotTableHasTotalsRow')\r\n .type('checkbox')\r\n if (settings.totalsRow)\r\n b.attr('checked', '')\r\n })\r\n .addText(' ' + i18n.getText('Facets', 'Pivot', 'TotalsRowLabel'))\r\n )\r\n .addChild('label', b => b\r\n .addClass('checkbox')\r\n .addChild('input', b => {b\r\n .id('pivotTableHasTotalsCol')\r\n .type('checkbox')\r\n if (settings.totalsCol)\r\n b.attr('checked', '')\r\n })\r\n .addText(' ' + i18n.getText('Facets', 'Pivot', 'TotalsColLabel'))\r\n )\r\n )\r\n }\r\n\r\n protected afterDialogOpened(dlg: Dialog) {\r\n const colId = (document.getElementById('pivotTableCellFieldSelector') as HTMLSelectElement).value;\r\n if (colId) {\r\n this.validateSelectedField(colId);\r\n }\r\n\r\n if (this.getQuery().getColumns().length <= 2) {\r\n dlg.showAlert('The dataset should contain at least three columns to build a pivot table', 'error');\r\n dlg.getSubmitButtonElement().disabled = true;\r\n }\r\n }\r\n\r\n private validateSelectedField(colId: string) {\r\n const dataTable = this.getContextDataTable();\r\n const colIndex = dataTable.columns.getIndex(colId);\r\n const col = dataTable.columns.get(colIndex);\r\n\r\n const aggrSelector = document.getElementById('pivotTableAggrFuncSelector') as HTMLSelectElement;\r\n if (col.type == DataType.String) {\r\n aggrSelector.disabled = true;\r\n aggrSelector.value = AggrFunc.Count;\r\n }\r\n else {\r\n aggrSelector.disabled = false;\r\n }\r\n }\r\n \r\n protected submitSettingsDialog(): boolean {\r\n const result = super.submitSettingsDialog();\r\n\r\n if (result) {\r\n this.settings = {\r\n colName: (document.getElementById('pivotTableColFieldSelector') as HTMLSelectElement).value,\r\n rowName: (document.getElementById('pivotTableRowFieldSelector') as HTMLSelectElement).value,\r\n aggrFunc: ((document.getElementById('pivotTableAggrFuncSelector') as HTMLSelectElement).value as AggrFunc),\r\n fieldName: (document.getElementById('pivotTableCellFieldSelector') as HTMLSelectElement).value,\r\n totalsRow: (document.getElementById('pivotTableHasTotalsRow') as HTMLInputElement).checked,\r\n totalsCol: (document.getElementById('pivotTableHasTotalsCol') as HTMLInputElement).checked\r\n };\r\n\r\n this.refresh(); \r\n }\r\n\r\n return result;\r\n }\r\n\r\n public saveToData(): any {\r\n const data = super.saveToData();\r\n if (this.settings) {\r\n dataUtils.assignDeep(data, this.settings);\r\n }\r\n return data;\r\n }\r\n\r\n public loadFromData(data: any) {\r\n super.loadFromData(data);\r\n \r\n if (data) {\r\n this.settings = dataUtils.assignDeep(this.settings, data);\r\n if (this.settings.aggrFunc as string == 'AVERAGE') {\r\n this.settings.aggrFunc = AggrFunc.Average\r\n }\r\n }\r\n }\r\n\r\n protected refreshCore() {\r\n this.updatePivotData();\r\n if (this.grid) {\r\n const dataSize = this.pivotTable.getTotal();\r\n const maxRow = this.grid.options.paging.pageSize;\r\n if (dataSize > maxRow) {\r\n this.contentDiv.classList.remove('pivot-grid-with-totals');\r\n this.showErrorMessage(i18n.getText('Facets', 'ErrTooMuchData'));\r\n }\r\n\r\n if (this.options.viewportRowsCount > dataSize) {\r\n this.grid.options.viewportRowsCount = dataSize\r\n }\r\n else {\r\n this.grid.options.viewportRowsCount = this.options.viewportRowsCount\r\n }\r\n this.grid.refresh();\r\n }\r\n }\r\n\r\n protected getContextDataTable(): EasyDataTable {\r\n const context = this.getContext();\r\n return context.resultTable;\r\n }\r\n\r\n \r\n private updatePivotData() {\r\n this.pivotTable.clear();\r\n\r\n const dataTable = this.getContextDataTable();\r\n if (!dataTable || dataTable.getTotal() == 0) {\r\n return;\r\n }\r\n\r\n if (!this.settings) {\r\n return;\r\n }\r\n\r\n const colName = this.settings.colName;\r\n const rowName = this.settings.rowName;\r\n const fieldName = this.settings.fieldName;\r\n const colIdx = dataTable.columns.getIndex(colName);\r\n const rowIdx = dataTable.columns.getIndex(rowName);\r\n const fieldIdx = dataTable.columns.getIndex(fieldName);\r\n\r\n if (colIdx == undefined || rowIdx == undefined || fieldIdx == undefined) {\r\n this.showUnableDisplayMessage(i18n.getText('Facets', 'ErrQueryChanged'));\r\n return;\r\n }\r\n \r\n const columnField = dataTable.columns.get(fieldIdx);\r\n const columnCol = dataTable.columns.get(colIdx);\r\n const columnRow = dataTable.columns.get(rowIdx);\r\n\r\n const rowLabel = columnRow.label;\r\n const rowType = columnRow.type;\r\n const colLabel = columnCol.label;\r\n\r\n const colValues = [];\r\n const rowValues = [];\r\n\r\n const rows = dataTable.getCachedRows();\r\n for (let i = 0; i < rows.length; i++) {\r\n const colValue = rows[i].getValue(colIdx);\r\n if (colValues.indexOf(colValue) < 0) {\r\n colValues.push(colValue);\r\n }\r\n\r\n const rowValue = rows[i].getValue(rowIdx);\r\n if (rowValues.indexOf(rowValue) < 0) {\r\n rowValues.push(rowValue);\r\n }\r\n }\r\n\r\n this.pivotTable.columns.add({\r\n id: rowLabel + '\\\\' + colLabel,\r\n label: rowLabel + '\\\\' + colLabel,\r\n description: '',\r\n type: rowType,\r\n dfmt: columnRow.displayFormat,\r\n style: columnRow.style\r\n });\r\n\r\n const null_columns = [];\r\n\r\n let colFieldFormatter: (column: DataColumn, value: any) => string = null;\r\n\r\n if (dataUtils.isNumericType(columnCol.type)) {\r\n colFieldFormatter = this.formatNumber;\r\n }\r\n else if (dataUtils.getDateDataTypes().indexOf(columnCol.type) >= 0) {\r\n colFieldFormatter = this.formatDate;\r\n }\r\n\r\n for(let i = 0; i < colValues.length; i++) {\r\n const colValue = colValues[i];\r\n if (!colValue) {\r\n null_columns.push(i);\r\n }\r\n else {\r\n const label = colFieldFormatter \r\n ? colFieldFormatter(columnCol, colValue) \r\n : colValue;\r\n \r\n this.pivotTable.columns.add({\r\n id: colValue,\r\n label: label,\r\n description: '',\r\n dfmt: columnField.displayFormat,\r\n type: this.settings.aggrFunc !== AggrFunc.Count \r\n ? columnField.type : DataType.Int64,\r\n style: columnField.style\r\n });\r\n }\r\n }\r\n \r\n let new_rows = [];\r\n\r\n for(let i = 0; i < rowValues.length; i++) {\r\n new_rows.push([])\r\n new_rows[i].push(rowValues[i]);\r\n }\r\n\r\n for(let i = 0; i < rowValues.length; i++) {\r\n for(let j = 0; j < colValues.length; j++) {\r\n if (null_columns.indexOf(j) >= 0)\r\n continue;\r\n \r\n new_rows[i].push(\r\n this.calcAggrFunc(\r\n this.settings.aggrFunc,\r\n { \r\n colName: this.settings.colName,\r\n rowName: this.settings.rowName,\r\n fieldName: this.settings.fieldName,\r\n rowValue: rowValues[i],\r\n colValue: colValues[j]\r\n }\r\n )\r\n );\r\n }\r\n }\r\n\r\n if (this.settings.totalsCol) {\r\n this.pivotTable.columns.add({\r\n id: \"total\",\r\n label: i18n.getText('Facets', 'Pivot', 'TotalGridLabel'),\r\n description: '',\r\n dfmt: columnField.displayFormat,\r\n type: this.settings.aggrFunc !== AggrFunc.Count \r\n ? columnField.type : DataType.Int64\r\n });\r\n \r\n for(let i = 0; i < new_rows.length; i++) {\r\n const row = new_rows[i];\r\n\r\n let totalByRow = 0;\r\n if (this.settings.aggrFunc == AggrFunc.Min \r\n || this.settings.aggrFunc == AggrFunc.Max) {\r\n totalByRow = row[1];\r\n }\r\n\r\n for(let j = 1; j < row.length; j++) {\r\n const value = row[j];\r\n if (value !== null) {\r\n if (this.settings.aggrFunc === AggrFunc.Min) {\r\n if (value < totalByRow)\r\n totalByRow = value;\r\n }\r\n else if (this.settings.aggrFunc === AggrFunc.Max) {\r\n if (value > totalByRow)\r\n totalByRow = value;\r\n }\r\n else {\r\n totalByRow += value;\r\n }\r\n }\r\n }\r\n\r\n if (this.settings.aggrFunc === AggrFunc.Average) {\r\n totalByRow /= row.length - 1;\r\n }\r\n\r\n row.push(totalByRow);\r\n }\r\n }\r\n\r\n for(const row of new_rows) {\r\n this.pivotTable.addRow(row);\r\n }\r\n\r\n if (this.settings.totalsRow) {\r\n\r\n let total_row = [];\r\n // to be able to create date value\r\n total_row.push(null);\r\n\r\n for (let i = 1; i < this.pivotTable.columns.count; i++) {\r\n\r\n const rows = this.pivotTable.getCachedRows();\r\n\r\n let totalByCol = 0;\r\n if (this.settings.aggrFunc == AggrFunc.Min\r\n || this.settings.aggrFunc == AggrFunc.Max) {\r\n totalByCol = rows[0].getValue(i);\r\n }\r\n\r\n for (let j = 0; j < rows.length; j++) {\r\n const value = rows[j].getValue(i);\r\n if (value !== null) {\r\n if (this.settings.aggrFunc === AggrFunc.Min) {\r\n if (value < totalByCol)\r\n totalByCol = value;\r\n }\r\n else if (this.settings.aggrFunc === AggrFunc.Max) {\r\n if (value > totalByCol)\r\n totalByCol = value;\r\n }\r\n else {\r\n totalByCol += value;\r\n }\r\n }\r\n }\r\n\r\n if (this.settings.aggrFunc === AggrFunc.Average) {\r\n totalByCol /= rows.length;\r\n }\r\n\r\n total_row.push(totalByCol);\r\n }\r\n\r\n this.pivotTable.addRow(total_row);\r\n\r\n this.contentDiv.classList.add('pivot-grid-with-totals');\r\n }\r\n else {\r\n this.contentDiv.classList.remove('pivot-grid-with-totals');\r\n }\r\n }\r\n\r\n private calcAggrFunc(func: AggrFunc, options: AggrFuncOptions): number | null {\r\n switch (func) {\r\n case AggrFunc.Sum:\r\n return this.sum(options);\r\n case AggrFunc.Average:\r\n return this.average(options);\r\n case AggrFunc.Min:\r\n return this.min(options);\r\n case AggrFunc.Max:\r\n return this.max(options);\r\n case AggrFunc.Count:\r\n return this.count(options);\r\n default:\r\n return 0;\r\n }\r\n\r\n }\r\n\r\n public getSettings() {\r\n return this.settings;\r\n }\r\n\r\n\r\n private formatDate(column: DataColumn, value: any): string {\r\n const isDate = Object.prototype.toString.call(value) === '[object Date]';\r\n let strValue = (value || '').toString();\r\n \r\n if (isDate) {\r\n if (column && column.displayFormat \r\n && DFMT_REGEX.test(column.displayFormat)) {\r\n strValue = column.displayFormat.replace(DFMT_REGEX, (_, $1) => {\r\n return i18n.dateTimeToStr(value, column.type, $1);\r\n });\r\n }\r\n else {\r\n const locale = i18n.getCurrentLocale();\r\n const timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };\r\n switch (column.type) {\r\n case DataType.Date:\r\n strValue = value.toLocaleDateString(locale);\r\n break;\r\n case DataType.Time:\r\n strValue = value.toLocaleTimeString(locale, timeOptions);\r\n break;\r\n case DataType.DateTime:\r\n strValue = `${value.toLocaleDateString(locale)} ${value.toLocaleTimeString(locale, timeOptions)}`;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return strValue;\r\n }\r\n\r\n private formatNumber(column: DataColumn, value): string {\r\n let strValue = (value || '').toString();\r\n\r\n if(typeof value == 'number') {\r\n if (column && column.displayFormat\r\n && DFMT_REGEX.test(column.displayFormat)) {\r\n strValue = column.displayFormat.replace(DFMT_REGEX, (_, $1) => {\r\n return i18n.numberToStr(value, $1);\r\n });\r\n }\r\n else {\r\n strValue = value.toLocaleString();\r\n }\r\n }\r\n\r\n return strValue;\r\n }\r\n \r\n private sum(options: AggrFuncOptions): number {\r\n\r\n let result = 0;\r\n\r\n const dataTable = this.getContextDataTable();\r\n const rows = dataTable.getCachedRows();\r\n\r\n for(let i = 0; i < rows.length; i++) {\r\n \r\n const rowValue = rows[i].getValue(options.rowName);\r\n const colValue = rows[i].getValue(options.colName)\r\n \r\n if (rowValue !== options.rowValue \r\n || colValue !== options.colValue) {\r\n continue;\r\n }\r\n\r\n const fieldValue = rows[i].getValue(options.fieldName);\r\n result += fieldValue;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private average(options: AggrFuncOptions): number {\r\n\r\n let result = 0;\r\n let count = 0;\r\n\r\n const dataTable = this.getContextDataTable();\r\n const rows = dataTable.getCachedRows();\r\n\r\n for(let i = 0; i < rows.length; i++) {\r\n \r\n const rowValue = rows[i].getValue(options.rowName);\r\n const colValue = rows[i].getValue(options.colName)\r\n \r\n if (rowValue !== options.rowValue \r\n || colValue !== options.colValue) {\r\n continue;\r\n }\r\n\r\n const fieldValue = rows[i].getValue(options.fieldName);\r\n result += fieldValue;\r\n count++;\r\n }\r\n\r\n if (count != 0)\r\n result = result / count;\r\n\r\n return result;\r\n }\r\n\r\n private min(options: AggrFuncOptions): number | null {\r\n\r\n let min = Number.MAX_SAFE_INTEGER;\r\n\r\n const dataTable = this.getContextDataTable();\r\n const rows = dataTable.getCachedRows();\r\n\r\n for(let i = 0; i < rows.length; i++) {\r\n \r\n const rowValue = rows[i].getValue(options.rowName);\r\n const colValue = rows[i].getValue(options.colName);\r\n \r\n if (rowValue !== options.rowValue \r\n || colValue !== options.colValue) {\r\n continue;\r\n }\r\n\r\n const fieldValue = rows[i].getValue(options.fieldName);\r\n if (fieldValue < min) {\r\n min = fieldValue;\r\n }\r\n }\r\n\r\n if (min == Number.MAX_SAFE_INTEGER)\r\n return null;\r\n\r\n return min;\r\n }\r\n\r\n private max(options: AggrFuncOptions): number | null {\r\n \r\n let max = Number.MIN_SAFE_INTEGER;\r\n\r\n const dataTable = this.getContextDataTable();\r\n const rows = dataTable.getCachedRows();\r\n\r\n for(let i = 0; i < rows.length; i++) {\r\n \r\n const rowValue = rows[i].getValue(options.rowName);\r\n const colValue = rows[i].getValue(options.colName);\r\n \r\n if (rowValue !== options.rowValue \r\n || colValue !== options.colValue) {\r\n continue;\r\n }\r\n\r\n const fieldValue = rows[i].getValue(options.fieldName);\r\n if (fieldValue > max) {\r\n max = fieldValue;\r\n }\r\n }\r\n\r\n if (max == Number.MIN_SAFE_INTEGER)\r\n return null; \r\n\r\n return max;\r\n }\r\n\r\n private count(options: AggrFuncOptions): number {\r\n const dataTable = this.getContextDataTable();\r\n\r\n let count = 0;\r\n\r\n const rows = dataTable.getCachedRows();\r\n for(let i = 0; i < rows.length; i++) {\r\n\r\n const rowValue = rows[i].getValue(options.rowName);\r\n const colValue = rows[i].getValue(options.colName);\r\n \r\n if (rowValue !== options.rowValue \r\n || colValue !== options.colValue) {\r\n continue; \r\n }\r\n\r\n count++;\r\n }\r\n\r\n return count;\r\n } \r\n}","import { utils as dataUtils } from '@easydata/core';\r\nimport { i18n, Widget } from '@easyquery/core';\r\n\r\nimport { ResultFacet } from './result_facet'\r\nimport { FacetType } from '../types/facet_type';\r\n\r\nimport { EasyGridWidget } from '../widgets/easy_grid_widget';\r\n\r\nexport class DataTableFacet extends ResultFacet {\r\n\r\n protected grid: Widget = null;\r\n\r\n public title: string = i18n.getText('Facets', 'DataTable', 'FacetTitle');\r\n\r\n protected dialogTitle = i18n.getText('Facets', 'DataTable', 'DlgTitle');\r\n\r\n public init(slot: HTMLElement) {\r\n super.init(slot);\r\n\r\n this.reinitGrid();\r\n }\r\n\r\n public getSettings() {\r\n return this.settings;\r\n }\r\n\r\n protected reinitGrid() {\r\n if (this.grid)\r\n this.grid.destroy();\r\n\r\n const options = this.container.options || {};\r\n if (options.gridResolver) {\r\n this.grid = options.gridResolver(this.contentDiv, this.getType())\r\n }\r\n\r\n if (this.grid == null) {\r\n this.grid = new EasyGridWidget(this.contentDiv);\r\n }\r\n\r\n options.grid = options.grid || {};\r\n options.grid.autoRefresh = false;\r\n options.grid.addColumns = false;\r\n\r\n const context = this.getContext();\r\n options.grid.totals = this.settings;\r\n\r\n this.grid.init(context, options.grid);\r\n }\r\n\r\n public getType(): FacetType {\r\n return FacetType.DataGrid;\r\n }\r\n\r\n protected canDisplay() {\r\n return true;\r\n }\r\n\r\n protected refreshCore() { \r\n if (!this.grid) return;\r\n this.grid.refresh();\r\n }\r\n\r\n public destroy() {\r\n if (this.grid) {\r\n this.grid.destroy();\r\n }\r\n }\r\n}","import { Query, Widget, WidgetGroup } from '@easyquery/core';\r\n\r\nimport { FacetType } from '../types/facet_type';\r\nimport { ResultFacet } from '../facets/result_facet';\r\nimport { ChartFacet } from '../facets/chart_facet';\r\nimport { PivotTableFacet } from '../facets/pivot_table_facet';\r\nimport { DataTableFacet } from '../facets/datatable_facet';\r\n\r\nexport abstract class FacetContainer extends Widget {\r\n\r\n protected facets: ResultFacet[] = [];\r\n\r\n public options: any = {};\r\n\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n this.group = WidgetGroup.Result;\r\n }\r\n protected destroyCore() {\r\n for (const facet of this.facets) {\r\n facet.destroy();\r\n }\r\n this.clear();\r\n }\r\n\r\n protected createFacetTab(type: FacetType): ResultFacet {\r\n const options = this.options[type];\r\n switch (type) {\r\n case FacetType.Chart:\r\n return new ChartFacet(this, options);\r\n case FacetType.PivotTable:\r\n return new PivotTableFacet(this, options);\r\n default:\r\n return new DataTableFacet(this, options);\r\n }\r\n }\r\n\r\n public getQuery(): Query {\r\n return this.getContext().getQuery();\r\n }\r\n\r\n public abstract clear();\r\n}","import { \r\n EqContext, WidgetGroup,\r\n QueryChangePart,\r\n QueryChangeEventData,\r\n QueryChangeAction,\r\n} from '@easyquery/core';\r\nimport { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { DialogService, domel } from '@easydata/ui';\r\n\r\nimport { FacetType } from '../types/facet_type';\r\nimport { ResultFacet } from '../facets/result_facet';\r\n\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { PopupMenu } from '../utils/popup_menu';\r\nimport { ResultFacetsPanelOptions } from './widget_options';\r\nimport { eqCssPrefix } from '../utils/utils'\r\nimport { ExportDialog } from '../dialog/export_dialog';\r\nimport { FacetContainer } from './facet_container';\r\n\r\nexport class ResultFacetsPanel extends FacetContainer {\r\n protected activeFacetIndex = -1;\r\n\r\n protected addMenu: PopupMenu;\r\n\r\n private firstRender: boolean = true;\r\n\r\n private headerDiv: HTMLElement;\r\n private tabsUl: HTMLElement;\r\n private tabsDiv: HTMLElement;\r\n private bodyDiv: HTMLElement;\r\n\r\n private exportDiv: HTMLElement;\r\n\r\n private recordsDiv: HTMLElement;\r\n\r\n private addFacetButton: HTMLDivElement;\r\n private maximizeButton: HTMLButtonElement;\r\n\r\n private isMaximized: boolean;\r\n\r\n private queryEventCallbackId: string;\r\n \r\n public options: ResultFacetsPanelOptions = {\r\n showExportButton: true,\r\n showRefreshButton: true,\r\n showMaximizeButton: true,\r\n maximize2Window: false,\r\n showProcessIndicator: true,\r\n facetTypes: [FacetType.DataGrid, FacetType.Chart, FacetType.PivotTable ]\r\n };\r\n\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n if (!this.slot.classList.contains(`${this.cssPrefix}-panel`)) {\r\n this.slot.classList.add(`${this.cssPrefix}-panel`);\r\n }\r\n\r\n this.renderProcessBlock();\r\n }\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-facets';\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'facetsPanel';\r\n }\r\n\r\n /**\r\n * Initialize widget.\r\n * @param context The context. \r\n * @param options The options.\r\n */\r\n public init(context: EqContext, options?: ResultFacetsPanelOptions) {\r\n super.init(context, options);\r\n\r\n this.setOptions(options);\r\n\r\n this.destroyCore();\r\n\r\n this.attachQueryObserver();\r\n\r\n this.loadFacets();\r\n }\r\n\r\n protected attachQueryObserver() {\r\n const query = this.getQuery();\r\n\r\n if (this.queryEventCallbackId) {\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n\r\n this.queryEventCallbackId = query.addChangedCallback(event => {\r\n //if something has changed, and that change is related to columns\r\n const edata = event.data as QueryChangeEventData;\r\n if (edata.part != QueryChangePart.All) {\r\n return;\r\n }\r\n\r\n if (edata.source == this) {\r\n return;\r\n }\r\n\r\n this.reloadFacets();\r\n this.refreshCore(true);\r\n });\r\n }\r\n\r\n protected refreshCore(force = false) {\r\n if (this.firstRender || force) {\r\n this.clear();\r\n this.createAddMenu();\r\n this.render();\r\n }\r\n\r\n this.validateAddFacetButton();\r\n\r\n this.renderActiveFacet();\r\n this.updateTotalRecords();\r\n }\r\n\r\n private menuItems = [\r\n { id: FacetType.DataGrid, text: i18n.getText('Facets', 'AddMenuItems', 'DataTable') },\r\n { id: FacetType.Chart, text: i18n.getText('Facets', 'AddMenuItems', 'Chart') },\r\n { id: FacetType.PivotTable, text: i18n.getText('Facets', 'AddMenuItems', 'Pivot') }\r\n ]\r\n\r\n private menuItemsFilter = (item) => { \r\n if (this.options.facetTypes.indexOf(item.id) < 0)\r\n return false;\r\n\r\n\r\n if (item.id === FacetType.DataGrid) {\r\n return this.facets.filter(facet => facet.getType() == FacetType.DataGrid).length === 0;\r\n }\r\n \r\n return true;\r\n };\r\n\r\n protected createAddMenu() {\r\n this.addMenu = new PopupMenu({ \r\n items: this.menuItems, \r\n id: \"FacetType-List\" \r\n });\r\n }\r\n\r\n protected updateTotalRecords() {\r\n const context = this.getContext();\r\n const total = context.resultTable.getTotal();\r\n this.recordsDiv.innerHTML = i18n.getText('Facets', 'TotalRecordsLabel') + ' ' + total;\r\n\r\n if (total == 0) {\r\n domel(this.exportDiv).hide();\r\n }\r\n else {\r\n domel(this.exportDiv).show();\r\n }\r\n }\r\n\r\n private _processBlock: HTMLElement;\r\n\r\n private renderProcessBlock() {\r\n const html = '<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>';;\r\n\r\n this._processBlock = domel('div')\r\n .addClass(`${this.cssPrefix}-spinner`)\r\n .addChild('div', b => b\r\n .addClass(`${eqCssPrefix}-progress-win8`, browserUtils.getMobileCssClass())\r\n .addHtml(html)\r\n )\r\n .toDOM();\r\n }\r\n\r\n protected onProcessStartCore() {\r\n if (this.options.showProcessIndicator) {\r\n // FacetsPanel might be not rendered yet, so \r\n // it has no body\r\n if (!this._processBlock.parentNode && this.bodyDiv) {\r\n this.bodyDiv.childNodes.forEach(el => {\r\n domel(el as HTMLElement).hide();\r\n });\r\n this.bodyDiv.appendChild(this._processBlock);\r\n }\r\n }\r\n }\r\n \r\n protected onProcessEndCore() {\r\n if (this.options.showProcessIndicator) {\r\n if (this._processBlock.parentNode) {\r\n try {\r\n this._processBlock.parentNode\r\n .removeChild(this._processBlock);\r\n }\r\n catch(e) {\r\n\r\n }\r\n finally {\r\n this.renderActiveFacet(false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected render() {\r\n this.firstRender = false;\r\n \r\n this.headerDiv = domel('div', this.slot)\r\n .addClass(`${this.cssPrefix}-header`)\r\n .toDOM();\r\n\r\n this.tabsDiv = \r\n domel('div', this.headerDiv)\r\n .addClass(`${this.cssPrefix}-tabs`)\r\n .toDOM();\r\n\r\n this.tabsUl = domel('ul', this.tabsDiv)\r\n .addClass(`${this.cssPrefix}-nav-tabs`)\r\n .toDOM();\r\n\r\n this.bodyDiv = \r\n domel('div', this.slot)\r\n .addClass(`${this.cssPrefix}-body`)\r\n .toDOM();\r\n\r\n for(const facet of this.facets) {\r\n this.renderFacet(facet);\r\n }\r\n\r\n domel(this.tabsDiv)\r\n .addChild('div', b => this.addFacetButton = b\r\n .addClass(`${this.cssPrefix}-add-button`)\r\n .title(i18n.getText('Facets', 'NewFacetTitle'))\r\n .addChild('a', b => b\r\n .attr('href', 'javascript:void(0)')\r\n )\r\n .on('click', (e) => this.addClickHandler(e as MouseEvent))\r\n .toDOM()\r\n ) \r\n\r\n const manageDiv = domel('div', this.headerDiv)\r\n .addClass(`${this.cssPrefix}-manage`)\r\n .toDOM();\r\n\r\n this.recordsDiv = domel('div', manageDiv)\r\n .addClass(`${this.cssPrefix}-total-recs`)\r\n .toDOM();\r\n \r\n if (this.options.showRefreshButton || this.options.showExportButton || this.options.showMaximizeButton) {\r\n const bdb = domel('div', manageDiv)\r\n .addClass(`${this.cssPrefix}-total-buttons`)\r\n .toDOM();\r\n\r\n if (this.options.showExportButton) {\r\n this.exportDiv = domel('button', bdb)\r\n .on('click', () => this.exportHandler())\r\n .addClass(`${this.cssPrefix}-button`)\r\n .addClass(`${this.cssPrefix}-button-export`)\r\n .title(i18n.getText('Facets', 'ExportBtnTitle'))\r\n .toDOM();\r\n }\r\n\r\n if (this.options.showRefreshButton ) {\r\n domel('button', bdb)\r\n .on('click', () => this.refreshHandler())\r\n .addClass(`${this.cssPrefix}-button`)\r\n .addClass(`${this.cssPrefix}-button-refresh`)\r\n .title(i18n.getText('Facets', 'RefreshBtnTitle'));\r\n }\r\n\r\n if (this.options.showMaximizeButton ) {\r\n this.maximizeButton = domel('button', bdb)\r\n .on('click', () => this.options.maximize2Window ? this.maximizeHandler(true) : this.maximizeHandler())\r\n .addClass(`${this.cssPrefix}-button`)\r\n .addClass(`${this.cssPrefix}-button-maximize`)\r\n .title(i18n.getText('Facets', 'MaximizeBtnTitle'))\r\n .toDOM();\r\n }\r\n }\r\n }\r\n\r\n protected refreshHandler() {\r\n const context = this.getContext();\r\n context.fetchData({\r\n success: () => {\r\n // possibly we should move this logic to context\r\n context.refreshWidgets(WidgetGroup.Result);\r\n }\r\n });\r\n }\r\n\r\n protected exportHandler() {\r\n const context = this.getContext();\r\n new ExportDialog(context)\r\n .show()\r\n }\r\n\r\n protected maximizeHandler(toWindow?: boolean) {\r\n let b = domel(this.slot);\r\n if (toWindow) {\r\n b.toggleClass(`${eqCssPrefix}-maximized-2window`);\r\n\r\n if (this.slot.classList.contains(`${eqCssPrefix}-maximized-2window`)) {\r\n this.maximizeButton.title = i18n.getText('Facets', 'RestoreBtnTitle');\r\n this.maximizeButton.classList.toggle(`${this.cssPrefix}-button-maximize`, false);\r\n this.maximizeButton.classList.toggle(`${this.cssPrefix}-button-restore`, true);\r\n }\r\n else {\r\n this.maximizeButton.title = i18n.getText('Facets', 'MaximizeBtnTitle');\r\n this.maximizeButton.classList.toggle(`${this.cssPrefix}-button-restore`, false);\r\n this.maximizeButton.classList.toggle(`${this.cssPrefix}-button-maximize`, true);\r\n }\r\n }\r\n else {\r\n const isMaximized = !this.slot.hasAttribute('data-is-maximized');\r\n\r\n if (isMaximized) {\r\n this.slot.setAttribute('data-is-maximized', '');\r\n this.maximizeButton.title = i18n.getText('Facets', 'RestoreBtnTitle');\r\n this.maximizeButton.classList.toggle(`${this.cssPrefix}-button-maximize`, false);\r\n this.maximizeButton.classList.toggle(`${this.cssPrefix}-button-restore`, true);\r\n }\r\n else {\r\n this.slot.removeAttribute('data-is-maximized');\r\n this.maximizeButton.title = i18n.getText('Facets', 'MaximizeBtnTitle');\r\n this.maximizeButton.classList.toggle(`${this.cssPrefix}-button-restore`, false);\r\n this.maximizeButton.classList.toggle(`${this.cssPrefix}-button-maximize`, true);\r\n }\r\n\r\n const arrToHide = document.querySelectorAll('[data-hide-on-max]');\r\n arrToHide.forEach(el => {\r\n if (isMaximized) {\r\n el.setAttribute('style', 'display: none;')\r\n }\r\n else {\r\n el.removeAttribute('style');\r\n }\r\n });\r\n }\r\n\r\n this.facets.forEach(facetTab => facetTab.onResize());\r\n }\r\n\r\n protected renderActiveFacet(refresh = true) {\r\n this.tabsUl.querySelectorAll<HTMLElement>('li') //`.${this.cssPrefix}-header-item.${this.cssPrefix}-facet`)\r\n .forEach((el, index) => {\r\n if (el.classList.contains('active')) {\r\n el.classList.remove('active');\r\n }\r\n if (this.activeFacetIndex === index) {\r\n el.classList.add('active')\r\n }\r\n });\r\n\r\n this.bodyDiv.querySelectorAll<HTMLElement>(`.${eqCssPrefix}-facet`)\r\n .forEach((el, index) => {\r\n domel(el).hide();\r\n\r\n if (this.activeFacetIndex === index) {\r\n domel(el).show();\r\n if (refresh) {\r\n this.facets[index].refresh();\r\n }\r\n }\r\n });\r\n }\r\n\r\n protected renderFacet(facet: ResultFacet) { \r\n this.renderFacetTab(facet);\r\n \r\n const body = this.renderFacetSlot(facet);\r\n \r\n facet.init(body);\r\n }\r\n\r\n protected renderFacetTab(facet: ResultFacet): HTMLElement {\r\n return domel('li', this.tabsUl)\r\n //.addClass(`${this.cssPrefix}-header-item`, `${this.cssPrefix}-facet`)\r\n //facet settings button\r\n .addChild('span', b => b\r\n .addClass(`${eqCssPrefix}-facet-settings`)\r\n .on('click', (e) => {\r\n e.stopPropagation();\r\n this.settingsClickHandler(facet);\r\n })\r\n )\r\n .addChild('a', b => b\r\n .addText(facet.title)\r\n .attr('href', 'javascript:void(0)')\r\n )\r\n //facet close button\r\n .addChild('span', b => b\r\n .addClass(`${eqCssPrefix}-facet-close`)\r\n .on('click', (e) => {\r\n e.stopPropagation();\r\n this.closeClickHandler(facet);\r\n })\r\n )\r\n .on('click', (e) => this.selectClickHandler(facet))\r\n .toDOM();\r\n }\r\n\r\n protected renderFacetSlot(facet): HTMLElement {\r\n let element = domel('div', this.bodyDiv)\r\n .addClass(`${eqCssPrefix}-facet`)\r\n .hide()\r\n .toDOM();\r\n \r\n return element;\r\n }\r\n\r\n private refreshFacetTabs() {\r\n this.tabsUl.querySelectorAll<HTMLElement>('li') //`.${this.cssPrefix}-header-item.${this.cssPrefix}-facet`)\r\n .forEach((item) => {\r\n this.tabsUl.removeChild(item);\r\n });\r\n \r\n for(const facet of this.facets) {\r\n this.renderFacetTab(facet);\r\n }\r\n }\r\n\r\n protected removeFacet(facet: ResultFacet) {\r\n const index = this.facets.indexOf(facet);\r\n if (index >= 0) {\r\n this.facets.splice(index, 1);\r\n\r\n const header = this.tabsUl.childNodes[index];\r\n this.tabsUl.removeChild(header);\r\n\r\n const body = this.bodyDiv.childNodes[index];\r\n this.bodyDiv.removeChild(body);\r\n\r\n if (this.facets.length > 0) {\r\n this.activeFacetIndex = \r\n index < this.facets.length \r\n ? index\r\n : this.facets.length - 1;\r\n }\r\n else {\r\n this.activeFacetIndex = -1;\r\n }\r\n this.renderActiveFacet();\r\n this.validateAddFacetButton();\r\n }\r\n }\r\n\r\n private addClickHandler(ev: MouseEvent) {\r\n this.addMenu.showMenu({\r\n anchor: ev.target as HTMLElement,\r\n itemFilterCallback: this.menuItemsFilter,\r\n itemSelectedCallback: (data) => {\r\n const facet = this.createFacetTab(data.id);\r\n const facetSlot = this.renderFacetSlot(facet);\r\n facet.init(facetSlot);\r\n facet.showSettingsDialog()\r\n .then(submited => {\r\n if (submited) { \r\n this.facets.push(facet);\r\n this.activeFacetIndex = this.facets.length - 1;\r\n \r\n this.renderFacetTab(facet); \r\n this.renderActiveFacet();\r\n \r\n this.saveFacets();\r\n }\r\n else {\r\n this.bodyDiv.removeChild(facetSlot);\r\n }\r\n\r\n //this.validateAddFacetButton();\r\n })\r\n .catch(error => console.error(error));\r\n }\r\n });\r\n }\r\n\r\n private selectClickHandler(facet: ResultFacet) {\r\n const index = this.facets.indexOf(facet);\r\n this.setActiveFacet(index);\r\n }\r\n\r\n private settingsClickHandler(facet: ResultFacet) {\r\n facet.showSettingsDialog()\r\n .then(submited => {\r\n if (submited) { \r\n this.refreshFacetTabs();\r\n this.renderActiveFacet();\r\n this.saveFacets();\r\n }\r\n })\r\n .catch(error => console.error(error));\r\n }\r\n\r\n private closeClickHandler(facet: ResultFacet) {\r\n const ds = this.getDialogService();\r\n ds.openConfirm(i18n.getText('Facets', 'RemoveFacetDlgTitle'), \r\n i18n.getText('Facets', 'RemoveFacetDlgContent')\r\n .replace('{facetTitle}', facet.title))\r\n .then(confirmed => {\r\n if (confirmed) {\r\n this.removeFacet(facet);\r\n this.saveFacets();\r\n }\r\n })\r\n .catch(error => console.error(error));\r\n }\r\n\r\n public clear() {\r\n this.firstRender = true;\r\n this.slot.innerHTML = \"\";\r\n }\r\n\r\n protected createDefaultFacetIfNotExist() {\r\n if (this.facets.length === 0) {\r\n const facet = this.createFacetTab(FacetType.DataGrid);\r\n this.facets.push(facet);\r\n this.activeFacetIndex = 0;\r\n }\r\n }\r\n\r\n protected validateAddFacetButton() {\r\n this.addFacetButton.hidden = this.addMenu.getItems()\r\n .filter(this.menuItemsFilter).length == 0;\r\n }\r\n\r\n protected setActiveFacet(index: number) {\r\n if (this.activeFacetIndex != index) {\r\n this.activeFacetIndex = index;\r\n this.renderActiveFacet();\r\n this.saveFacets(true);\r\n }\r\n }\r\n\r\n protected setOptions(options?: ResultFacetsPanelOptions) {\r\n dataUtils.assignDeep(this.options, options);\r\n }\r\n\r\n protected getDialogService(): DialogService {\r\n return this.getContext()\r\n .getServices()\r\n .getDialogService();\r\n }\r\n\r\n protected saveFacets(isActivate = false) {\r\n const query = this.getQuery();\r\n query.innerData = query.innerData || {};\r\n query.innerData.facets = {\r\n active: this.activeFacetIndex,\r\n items: this.facets.map(f => f.saveToData())\r\n };\r\n query.fireChangedEvent({\r\n part: QueryChangePart.Facets,\r\n action: isActivate ? QueryChangeAction.Activate : QueryChangeAction.All,\r\n source: this\r\n });\r\n }\r\n\r\n private reloadFacets() {\r\n for(const facet of this.facets) {\r\n facet.destroy();\r\n }\r\n this.loadFacets();\r\n }\r\n\r\n protected loadFacets() {\r\n const query = this.getQuery();\r\n this.facets = [];\r\n if (query.innerData && query.innerData.facets) {\r\n const items = query.innerData.facets.items;\r\n for(const fd of items) {\r\n const facet = this.createFacetTab(fd.type);\r\n facet.loadFromData(fd);\r\n this.facets.push(facet);\r\n }\r\n\r\n const active = query.innerData.facets.active;\r\n this.activeFacetIndex = (active >= 0) \r\n ? active\r\n : this.facets.length - 1;\r\n }\r\n else {\r\n this.createDefaultFacetIfNotExist();\r\n }\r\n }\r\n}","import { utils as dataUtils } from '@easydata/core';\r\nimport { EqContext, Widget, WidgetGroup } from '@easyquery/core';\r\n\r\nimport { ExportDialog } from '../dialog/export_dialog';\r\n\r\nexport class ExportWidget extends Widget {\r\n\r\n getWidgetType(): string {\r\n return 'exportWidget';\r\n }\r\n\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n this.group = WidgetGroup.All;\r\n }\r\n\r\n private options = {\r\n defFormat: 'csv',\r\n enableExport: true\r\n };\r\n\r\n public init(context: EqContext, options: any) {\r\n super.init(context, options);\r\n\r\n this.options = dataUtils.assignDeep(this.options, options);\r\n\r\n this.slot.addEventListener('click', this.clickHandler);\r\n }\r\n\r\n protected refreshCore() {\r\n if (this.options.enableExport && this.context.resultTable \r\n && this.context.resultTable.getCachedCount() > 0) {\r\n this.slot.removeAttribute('disabled');\r\n }\r\n else {\r\n this.slot.setAttribute('disabled', '');\r\n }\r\n }\r\n\r\n protected destroyCore() {\r\n this.slot.removeAttribute('disabled');\r\n this.slot.removeEventListener('click', this.clickHandler);\r\n }\r\n\r\n private clickHandler = (ev: MouseEvent) => {\r\n if (!this.slot.hasAttribute('disabled'))\r\n new ExportDialog(this.context).show(this.options.defFormat);\r\n }\r\n\r\n}","import { AggregationSettings, utils as dataUtils } from '@easydata/core';\r\nimport { domel, DomElementBuilder } from '@easydata/ui';\r\n\r\nimport { AggrFunction, ExprTag, Query, QueryColumn } from '@easyquery/core';\r\nimport { PopupMenu } from '../../../utils/popup_menu';\r\n\r\nimport { i18n } from '@easyquery/core';\r\n\r\nexport interface AggrSettingsRendererOptions {\r\n slot: HTMLElement,\r\n query: Query,\r\n onChanged?: () => void;\r\n}\r\n\r\nexport class AggrSettingsRenderer { \r\n protected state: {\r\n groups: {\r\n columns: string[]\r\n }[],\r\n aggregates: {\r\n colId: string,\r\n funcId: string\r\n }[],\r\n recordCount: boolean;\r\n grandTotals: boolean\r\n };\r\n\r\n protected slot: HTMLElement;\r\n\r\n protected query: Query;\r\n\r\n private onChanged?: () => void;\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-as';\r\n }\r\n\r\n constructor(options: AggrSettingsRendererOptions) {\r\n if (!options || !options.slot)\r\n throw new Error('slot is required');\r\n\r\n if (!options || !options.query)\r\n throw new Error('query is required');\r\n\r\n this.slot = options.slot;\r\n this.query = options.query;\r\n\r\n this.onChanged = options.onChanged;\r\n\r\n this.dropSelectState();\r\n this.dropState();\r\n }\r\n\r\n public render() {\r\n this.createFunctionMenu();\r\n this.setInitialState();\r\n this.changed();\r\n }\r\n\r\n private setInitialState() {\r\n const aggrSettings = this.query.getAggregationSettings();\r\n const groups = aggrSettings.getInternalGroups();\r\n const aggrs = aggrSettings.getAggregates();\r\n\r\n for(const group of groups) {\r\n this.state.groups.push({\r\n columns: group.columns\r\n });\r\n }\r\n\r\n for(const aggr of aggrs) {\r\n this.state.aggregates.push({\r\n colId: aggr.colId,\r\n funcId: aggr.funcId\r\n })\r\n }\r\n\r\n this.state.grandTotals = aggrSettings.hasGrandTotals();\r\n\r\n this.state.recordCount = aggrSettings.hasRecordCount();\r\n }\r\n\r\n protected getAvailableColumns() {\r\n return this.query.getColumns().filter(c => c.enabled);\r\n }\r\n\r\n private selectState = {\r\n columns: []\r\n };\r\n\r\n protected renderCore() {\r\n this.slot.innerHTML = '';\r\n\r\n const cols = this.getAvailableColumns();\r\n\r\n const slotb = domel(this.slot as HTMLDivElement);\r\n let currentGroup = null;\r\n let groupBlockColumns: DomElementBuilder<HTMLDivElement> = null;\r\n let selectedBlockColumns: DomElementBuilder<HTMLDivElement> = null;\r\n\r\n const aggregates = this.state.aggregates;\r\n\r\n let groupCounter = -1;\r\n for(const col of cols) {\r\n if (currentGroup) {\r\n if (currentGroup.columns.indexOf(col.id) >= 0) {\r\n // render to current group div\r\n this.renderColumn(groupBlockColumns, col, true);\r\n continue;\r\n }\r\n }\r\n\r\n currentGroup = this.getGroupForColumn(col.id);\r\n if (currentGroup != null) {\r\n groupCounter++;\r\n // create groupDiv\r\n const groupBlock = domel('div', this.slot)\r\n .addClass(`${this.cssPrefix}-group`)\r\n .data('gindex', `${groupCounter}`);\r\n\r\n groupBlockColumns = domel('div', groupBlock.toDOM())\r\n .addClass(`${this.cssPrefix}-columns`);\r\n\r\n this.renderColumn(groupBlockColumns, col, true);\r\n \r\n continue;\r\n }\r\n \r\n const aggr = aggregates.filter(a => a.colId == col.id)[0];\r\n if (aggr) {\r\n const aggrBlock = domel('div', this.slot)\r\n .addClass(`${this.cssPrefix}-aggr`)\r\n\r\n this.renderColumn(aggrBlock, col, true, aggr.funcId);\r\n\r\n aggrBlock\r\n .addChild('div', b => b\r\n .addClass(`${this.cssPrefix}-buttons`)\r\n .addChild('button', b => b\r\n .addClass(`${this.cssPrefix}-unaggr-btn`)\r\n .title(i18n.getText('AggrSettings', 'UnaggrBtn'))\r\n .on('click', this.removeAggrBtnClickHandler.bind(this))\r\n )\r\n )\r\n\r\n continue;\r\n }\r\n\r\n if (this.selectState.columns.indexOf(col.id) >= 0) {\r\n // create selectedDiv\r\n if (selectedBlockColumns == null) {\r\n const selectedBlock = domel('div', this.slot)\r\n .addClass(`${this.cssPrefix}-selected`)\r\n\r\n selectedBlockColumns = domel('div', selectedBlock.toDOM())\r\n .addClass(`${this.cssPrefix}-columns`);\r\n }\r\n\r\n this.renderColumn(selectedBlockColumns, col, false);\r\n continue;\r\n }\r\n\r\n // render column as is\r\n this.renderColumn(slotb, col, false);\r\n }\r\n\r\n if (selectedBlockColumns) {\r\n const buttonsContainer = domel('div', selectedBlockColumns.toDOM().parentElement) \r\n .addClass(`${this.cssPrefix}-buttons`);\r\n\r\n buttonsContainer.addChild('button', b => b\r\n .addClass(`${this.cssPrefix}-group-btn`)\r\n .title(i18n.getText('AggrSettings', 'GroupBtn'))\r\n .on('click', this.groupBtnClickHandler.bind(this))\r\n );\r\n\r\n if (this.selectState.columns.length == 1) {\r\n buttonsContainer.addChild('button', b => b\r\n .addClass(`${this.cssPrefix}-aggr-btn`)\r\n .title(i18n.getText('AggrSettings', 'AggrBtn'))\r\n .on('click', this.aggrBtnClickHandler.bind(this))\r\n );\r\n }\r\n }\r\n\r\n domel(this.slot)\r\n .addChild('div', b => b\r\n .addClass(`${this.cssPrefix}-counts`)\r\n .addChild('label', b => b\r\n .addClass('eqjs-ctrl-switch')\r\n .addChild('input', b => {\r\n b.attr('type', 'checkbox');\r\n if (this.state.recordCount) {\r\n b.attr('checked', '')\r\n }\r\n\r\n b.on('change', this.countsCheckboxChangeHandler.bind(this))\r\n })\r\n .addChild('span', b => b\r\n .addClass('slider round')\r\n )\r\n .addChild('span', b => b\r\n .addClass('switch-text')\r\n .addText(i18n.getText('AggrSettings', 'GroupCountsLabel'))\r\n )\r\n )\r\n )\r\n .addChild('div', b => b\r\n .addClass(`${this.cssPrefix}-grandtotals`)\r\n .addChild('label', b => b\r\n .addClass('eqjs-ctrl-switch')\r\n .addChild('input', b => {\r\n b.attr('type', 'checkbox');\r\n if (this.state.grandTotals) {\r\n b.attr('checked', '')\r\n }\r\n\r\n b.on('change', this.grandCheckboxChangeHandler.bind(this))\r\n })\r\n .addChild('span', b => b\r\n .addClass('slider round')\r\n )\r\n .addChild('span', b => b\r\n .addClass('switch-text')\r\n .addText(i18n.getText('AggrSettings', 'GrandTotalsLabel'))\r\n )\r\n )\r\n );\r\n\r\n const groups = this.slot.querySelectorAll(`.${this.cssPrefix}-group`);\r\n groups.forEach(el => {\r\n domel(el as HTMLElement)\r\n .addChild('div', b => b\r\n .addClass(`${this.cssPrefix}-buttons`)\r\n .addChild('button', b => b\r\n .addClass(`${this.cssPrefix}-ungroup-btn`)\r\n .title(i18n.getText('AggrSettings', 'UngroupBtn'))\r\n .on('click', this.removeGroupBtnClickHandler.bind(this))\r\n )\r\n );\r\n });\r\n\r\n this.validateCheckboxes();\r\n }\r\n\r\n private validateCheckboxes() { \r\n\r\n if (this.selectState.columns.length === 0)\r\n return;\r\n\r\n let prevElement: HTMLElement, prevInputEl: HTMLElement, \r\n nextInputEl: HTMLElement = null;\r\n for (let i = 0; i < this.slot.childNodes.length; i++) {\r\n const el = this.slot.childNodes[i] as HTMLElement;\r\n if (el.classList.contains(`${this.cssPrefix}-selected`)) {\r\n if (prevElement && prevElement.classList.contains(`${this.cssPrefix}-column`)) {\r\n prevInputEl = prevElement;\r\n } \r\n } \r\n else if (el.classList.contains(`${this.cssPrefix}-column`)) {\r\n if (prevElement && prevElement.classList.contains(`${this.cssPrefix}-selected`)) {\r\n nextInputEl = el;\r\n }\r\n } \r\n\r\n prevElement = el;\r\n };\r\n\r\n for (let i = 0; i < this.slot.childNodes.length; i++) {\r\n const el = this.slot.childNodes[i] as HTMLElement;\r\n\r\n if (el.classList.contains(`${this.cssPrefix}-column`) && el != prevInputEl && el != nextInputEl) {\r\n el.firstElementChild.firstElementChild.setAttribute('disabled', '');\r\n }\r\n };\r\n\r\n const selector = `.${this.cssPrefix}-selected>.${this.cssPrefix}-columns>.${this.cssPrefix}-column`\r\n const selectedCols = this.slot.querySelectorAll(selector);\r\n for (let i = 1; i < selectedCols.length - 1; i++) {\r\n const el = selectedCols[i];\r\n el.firstElementChild.firstElementChild.setAttribute('disabled', '');\r\n }\r\n \r\n }\r\n\r\n public isValid(): boolean {\r\n const hasSelected = this.selectState.columns.length;\r\n const hasAggrs = this.state.aggregates.length > 0;\r\n const hasGroups = this.state.groups.length > 0;\r\n const hasTotals = this.state.grandTotals;\r\n const hasCounts = this.state.recordCount;\r\n\r\n if (hasSelected)\r\n return false;\r\n\r\n if (hasGroups) {\r\n return hasAggrs || hasCounts;\r\n }\r\n\r\n if (hasAggrs) {\r\n return hasGroups || hasTotals;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public getValidationMessage() {\r\n const hasSelected = this.selectState.columns.length;\r\n const hasAggrs = this.state.aggregates.length > 0;\r\n const hasGroups = this.state.groups.length > 0;\r\n const hasTotals = this.state.grandTotals;\r\n const hasRecCount = this.state.recordCount;\r\n\r\n if (hasSelected)\r\n return `${i18n.getText('AggrSettings', 'SelectedError')} `;\r\n\r\n if (hasGroups && !hasAggrs && !hasRecCount)\r\n return `${i18n.getText('AggrSettings', 'NoAggrOrCountError')} `;\r\n\r\n if (hasAggrs && !hasGroups && !hasTotals)\r\n return `${i18n.getText('AggrSettings', 'NoGroupsOrGrandError')} `;\r\n\r\n return `${i18n.getText('AggrSettings', 'NoGroupsOrAggrError')} `;\r\n }\r\n\r\n public getSettings(): AggregationSettings {\r\n const settings = new AggregationSettings(this.query);\r\n for(const group of this.state.groups) {\r\n settings.addGroup({ columns: group.columns });\r\n }\r\n\r\n for(const aggr of this.state.aggregates) {\r\n settings.addAggregateColumn(aggr.colId, aggr.funcId);\r\n }\r\n\r\n if (this.state.grandTotals) {\r\n settings.addGrandTotals();\r\n }\r\n\r\n if (this.state.recordCount) {\r\n settings.addCounts();\r\n }\r\n\r\n return settings;\r\n }\r\n\r\n protected renderColumn(b: DomElementBuilder<HTMLDivElement>, col: QueryColumn, isTaken: boolean, funcId: string = null) {\r\n b.addChild('div', b => {\r\n b.data('colid', col.id);\r\n\r\n const caption = funcId \r\n ? `${col.caption} (${this.funcMap[funcId].caption})`\r\n : col.caption;\r\n\r\n if (!isTaken) {\r\n b\r\n .addClass(`${this.cssPrefix}-column`)\r\n .addChild('label', b => b\r\n .addClass('checkbox')\r\n .addChild('input', b => { \r\n b.attr('type', 'checkbox');\r\n if (this.selectState.columns.indexOf(col.id) >= 0) {\r\n b.attr('checked', '')\r\n }\r\n\r\n b.on('change', this.colCheckboxChangeHandler.bind(this))\r\n })\r\n .addText(caption)\r\n );\r\n }\r\n else {\r\n b\r\n .addClass(`${this.cssPrefix}-column-used`)\r\n .addText(caption)\r\n }\r\n });\r\n }\r\n\r\n protected getGroupForColumn(colId: string) {\r\n const index = this.getGroupIndexForColumn(colId);\r\n if (index >= 0)\r\n return this.state.groups[index];\r\n return null;\r\n }\r\n\r\n protected getGroupIndexForColumn(colId: string): number {\r\n for(var i = 0; i < this.state.groups.length; i ++) {\r\n const group = this.state.groups[i];\r\n if (group.columns.indexOf(colId) >= 0)\r\n return i;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n protected grandCheckboxChangeHandler(ev: Event) {\r\n this.state.grandTotals = !this.state.grandTotals;\r\n this.onChanged && this.onChanged();\r\n }\r\n\r\n protected countsCheckboxChangeHandler(ev: Event) {\r\n this.state.recordCount = !this.state.recordCount;\r\n this.onChanged && this.onChanged();\r\n }\r\n\r\n protected colCheckboxChangeHandler(ev: Event) {\r\n const input = ev.target as HTMLInputElement;\r\n const colId = input.parentElement.parentElement.getAttribute('data-colid');\r\n\r\n // toggle column to track state\r\n const index = this.selectState.columns.indexOf(colId);\r\n if (index >= 0) {\r\n this.selectState.columns.splice(index, 1);\r\n }\r\n else {\r\n this.selectState.columns.push(colId);\r\n const cols = this.getAvailableColumns();\r\n this.selectState.columns = this.selectState.columns.sort((col1, col2) => {\r\n const index1 = cols.findIndex(c => c.id == col1);\r\n const index2 = cols.findIndex(c => c.id == col2);\r\n return index1 - index2;\r\n });\r\n }\r\n\r\n this.changed();\r\n }\r\n\r\n protected groupBtnClickHandler() {\r\n this.state.groups.push({ columns: this.selectState.columns });\r\n\r\n const cols = this.getAvailableColumns();\r\n this.state.groups = this.state.groups.sort((g1, g2) => {\r\n const g1Index = cols.findIndex(c => c.id == g1.columns[0]);\r\n const g2Index = cols.findIndex(c => c.id == g2.columns[0]);\r\n return g1Index - g2Index;\r\n });\r\n\r\n this.dropSelectState();\r\n\r\n this.changed();\r\n }\r\n\r\n protected removeGroupBtnClickHandler(ev: Event) {\r\n const btn = ev.target as HTMLElement;\r\n const index = Number.parseInt(btn.parentElement.parentElement.getAttribute('data-gindex'));\r\n this.state.groups.splice(index, 1);\r\n\r\n this.changed();\r\n }\r\n\r\n protected removeAggrBtnClickHandler(ev: Event) {\r\n const btn = ev.target as HTMLElement;\r\n const colId = btn.parentElement.parentElement.querySelector(`.${this.cssPrefix}-column-used`)\r\n .getAttribute('data-colid');\r\n\r\n const index = this.state.aggregates.findIndex(a => a.colId == colId);\r\n if (index >= 0) {\r\n this.state.aggregates.splice(index, 1);\r\n this.changed();\r\n }\r\n }\r\n\r\n protected aggrBtnClickHandler(ev: Event) {\r\n const model = this.query.getModel();\r\n const colId = this.selectState.columns[0];\r\n const col = this.getAvailableColumns().filter(c => c.id == colId)[0];\r\n\r\n this.functionMenu.showMenu({\r\n anchor: ev.target as HTMLElement,\r\n itemFilterCallback: (item) => {\r\n return this.funcMap[item.id].appliedTypes.indexOf(col.expr.dataType) >= 0;\r\n },\r\n itemSelectedCallback: (data) => {\r\n this.state.aggregates.push({\r\n colId: colId,\r\n funcId: data.id\r\n });\r\n\r\n this.dropSelectState();\r\n\r\n this.changed();\r\n }\r\n });\r\n\r\n }\r\n\r\n protected clear() {\r\n this.dropSelectState();\r\n this.dropState();\r\n\r\n this.changed();\r\n }\r\n\r\n private dropSelectState() {\r\n this.selectState = {\r\n columns: []\r\n };\r\n }\r\n\r\n private dropState() {\r\n this.state = {\r\n groups: [],\r\n aggregates: [],\r\n recordCount: true,\r\n grandTotals: false\r\n };\r\n }\r\n\r\n private changed() {\r\n this.onChanged && this.onChanged();\r\n this.renderCore();\r\n }\r\n\r\n private functionMenu: PopupMenu;\r\n\r\n private funcMap: {\r\n [funcId: string]: AggrFunction\r\n } = {}\r\n\r\n private createFunctionMenu() {\r\n const model = this.query.getModel();\r\n const funcs = this.query.getModel().getAggrFunctions();\r\n\r\n const items = [];\r\n for (const func of funcs) {\r\n if (!func) continue;\r\n\r\n this.funcMap[func.id] = func;\r\n\r\n const funcCaption = model\r\n .getAggrFunctionCaption(func.id);\r\n\r\n const item = {\r\n id: func.id,\r\n text: funcCaption\r\n };\r\n\r\n items.push(item);\r\n }\r\n\r\n let menuId = this.slot.id;\r\n if (menuId) {\r\n menuId += '-FunctionsMenu';\r\n }\r\n\r\n const menuOptions = {\r\n items: items,\r\n id: menuId,\r\n searchBoxAlwaysShown: false,\r\n domWriteItemsId: true\r\n };\r\n\r\n this.functionMenu = new PopupMenu(menuOptions);\r\n }\r\n}","import { domel } from '@easydata/ui';\r\nimport { EqContext, i18n, Query, QueryChangePart } from '@easyquery/core';\r\nimport { AggrSettingsRenderer } from '../widgets/renderers/aggr_settings/aggr_settings_renderer';\r\n\r\nexport class AggrSettingsDialog {\r\n\r\n private query: Query;\r\n\r\n private renderer: AggrSettingsRenderer;\r\n\r\n private body: HTMLElement;\r\n\r\n constructor(protected context: EqContext) {\r\n \r\n }\r\n\r\n private promise: Promise<void> = null;\r\n\r\n public show(query?: Query) {\r\n const initQuery = query || this.context.getQuery();\r\n // copy query to prevent changes\r\n this.query = this.context.createQuery();\r\n this.query.loadFromData(initQuery.toJSONData());\r\n\r\n // to rewrite with returning new aggrsettigns \r\n // structure instead of apply on submit\r\n if (!this.promise) {\r\n this.promise = new Promise((resolve, reject) => {\r\n const ds = this.context.getServices().getDialogService();\r\n this.body = this.renderBody();\r\n var dlg = ds.open({\r\n title: i18n.getText('AggrSettings', 'AggrDialogTitle'),\r\n body: this.body,\r\n onSubmit: () => {\r\n if (this.query.enableAggregation && !this.renderer.isValid())\r\n return false;\r\n \r\n initQuery.enableAggregation = this.query.enableAggregation;\r\n if (initQuery.enableAggregation) {\r\n initQuery.useAggregation(settings => {\r\n const s = this.renderer.getSettings();\r\n settings.loadFromData(s.saveToData());\r\n });\r\n }\r\n\r\n initQuery.fireChangedEvent({\r\n part: QueryChangePart.Aggregation,\r\n wasModified: false\r\n });\r\n\r\n resolve();\r\n return true;\r\n },\r\n onCancel: () => {\r\n resolve();\r\n }\r\n });\r\n\r\n this.renderer = new AggrSettingsRenderer({\r\n slot: this.body.querySelector('#AggrSettingsComponent'),\r\n query: this.query,\r\n onChanged: () => {\r\n dlg.clearAlert();\r\n const isValid = this.renderer.isValid();\r\n if (!isValid) {\r\n const error = this.renderer.getValidationMessage();\r\n dlg.showAlert(error, 'warning');\r\n }\r\n \r\n const btn = dlg.getRootElement()\r\n .querySelector<HTMLButtonElement>('.kfrm-button.is-info');\r\n btn.disabled = !isValid && this.query.enableAggregation;\r\n }\r\n });\r\n if (this.query.enableAggregation) {\r\n this.renderer.render();\r\n }\r\n });\r\n }\r\n\r\n return this.promise.catch(e => console.error(e))\r\n .finally(() => this.promise = null);\r\n }\r\n\r\n protected renderBody(): HTMLElement {\r\n const b = domel('div')\r\n .addChild('div', b => b\r\n .addClass(`eqjs-as-enableaggr`)\r\n .addChild('label', b => b\r\n .addClass('eqjs-ctrl-switch')\r\n .addChild('input', b => {\r\n b.attr('type', 'checkbox');\r\n if (this.query.enableAggregation) {\r\n b.attr('checked', '')\r\n }\r\n\r\n b.on('change', this.enableAggrCheckBoxChangeHandler.bind(this))\r\n })\r\n .addChild('span', b => b\r\n .addClass('slider round')\r\n )\r\n .addChild('span', b => b\r\n .addClass('switch-text')\r\n .addText(i18n.getText('AggrSettings', 'EnableAggrLabel'))\r\n )\r\n )\r\n )\r\n .addChild('div', b => b\r\n .id('AggrSettingsComponent')\r\n );\r\n \r\n\r\n return b.toDOM();\r\n }\r\n\r\n protected enableAggrCheckBoxChangeHandler(e: Event) {\r\n this.query.enableAggregation = !this.query.enableAggregation;\r\n this.body.querySelector('#AggrSettingsComponent').innerHTML = '';\r\n if (this.query.enableAggregation) {\r\n this.renderer.render();\r\n }\r\n else {\r\n const btn = this.body ? this.body.closest('.kdlg-modal').querySelector<HTMLButtonElement>('footer .kfrm-button.is-info') : null;\r\n if (btn) {\r\n btn.disabled = false; \r\n }\r\n }\r\n }\r\n}","import { Widget, WidgetGroup, EqContext, i18n, Query } from '@easyquery/core';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { AggrSettingsDialog } from \"../dialog/aggr_settings_dialog\";\r\n\r\n/**\r\n * The widget responsed for rendering the name of the current query.\r\n */\r\nexport class AggregationBar extends Widget {\r\n private dialogLink: HTMLAnchorElement;\r\n private linkClickCallback = () => {\r\n new AggrSettingsDialog(this.context).show(this.getQuery());\r\n }\r\n\r\n private queryEventCallbackId: string = null;\r\n\r\n private customQuery?: Query;\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The HTML element where our widget should be placed.\r\n * @param customQuery The custom query\r\n */\r\n constructor(slot: HTMLElement, customQuery?: Query) {\r\n super(slot);\r\n\r\n this.customQuery = customQuery;\r\n this.group = WidgetGroup.Query | WidgetGroup.QueryStatus;\r\n } \r\n\r\n public init(context: EqContext, options: any) {\r\n super.init(context, options);\r\n\r\n this.destroyCore();\r\n this.attachQueryObserver();\r\n }\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-aggrb';\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'aggregationBar';\r\n }\r\n\r\n /**\r\n * Refresh widget implementation\r\n */\r\n protected refreshCore() {\r\n this.render();\r\n }\r\n\r\n protected getLinkText(): string {\r\n const query = this.getQuery();;\r\n if (query.enableAggregation) {\r\n const aggrSettings = query.getAggregationSettings();\r\n const groups = aggrSettings.getInternalGroups();\r\n const aggrs = aggrSettings.getAggregates();\r\n\r\n let groupArr = [];\r\n const cols = query.getColumns();\r\n for(const group of groups) {\r\n const colNames = group.columns.map(value => {\r\n const col = cols.find(c => c.id == value);\r\n if (col) {\r\n return col.caption;\r\n }\r\n else {\r\n return ''\r\n }\r\n })\r\n\r\n groupArr.push(`[${colNames.join(', ')}]`); \r\n }\r\n\r\n const groupString = groupArr.join(', ');\r\n \r\n let aggrArr = [];\r\n const funcs = query.getModel().getAggrFunctions();\r\n for(const aggr of aggrs) {\r\n const col = cols.find(c => c.id == aggr.colId);\r\n const func = funcs.find(f => f.id == aggr.funcId);\r\n\r\n if (col && func) {\r\n aggrArr.push(`${col.caption} (${func.caption})`); \r\n }\r\n }\r\n\r\n const aggrString = aggrArr.join(', ');\r\n\r\n return `${groupString || i18n.getText('AggrSettings', 'NoGroupsLabel')} ::: ${aggrString ? `<${aggrString}>` : i18n.getText('AggrSettings', 'NoAggrsLabel')}`;\r\n }\r\n else {\r\n return i18n.getText('AggrSettings', 'EmptySettingsLabel');\r\n }\r\n\r\n }\r\n\r\n private render() {\r\n this.slot.classList.add(`${this.cssPrefix}-panel`);\r\n const mobClass = browserUtils.getMobileCssClass();\r\n if (mobClass) {\r\n this.slot.classList.add(mobClass)\r\n }\r\n \r\n if (!this.dialogLink) {\r\n this.dialogLink = document.createElement('a');\r\n this.dialogLink.setAttribute('href', 'javascript:void(0)');\r\n this.slot.appendChild(this.dialogLink);\r\n }\r\n\r\n // Update\r\n\r\n this.dialogLink.textContent = this.getLinkText();\r\n this.dialogLink.removeEventListener('click', this.linkClickCallback);\r\n this.dialogLink.addEventListener('click', this.linkClickCallback);\r\n }\r\n\r\n private clear() {\r\n this.slot.innerHTML = \"\";\r\n this.dialogLink = null;\r\n }\r\n\r\n private attachQueryObserver() {\r\n const query = this.getQuery();\r\n this.queryEventCallbackId = query.addChangedCallback(event => {\r\n this.refreshCore();\r\n });\r\n }\r\n\r\n private detachQueryObserver() {\r\n if (this.queryEventCallbackId) {\r\n const query = this.getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n }\r\n\r\n protected destroyCore() {\r\n this.clear();\r\n this.detachQueryObserver();\r\n }\r\n\r\n public getQuery(): Query {\r\n return this.customQuery || this.context.getQuery();\r\n }\r\n}\r\n","import { i18n } from '@easydata/core';\r\n\r\nimport { EqContext, Widget, WidgetGroup } from '@easyquery/core'\r\n\r\nexport class LocaleWidget extends Widget {\r\n\r\n private selectEl: HTMLSelectElement;\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The html element.\r\n */\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n\r\n this.group = WidgetGroup.None;\r\n }\r\n\r\n public init(context: EqContext, options: any) {\r\n super.init(context, options);\r\n\r\n this.clear();\r\n this.render();\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'changeLocale';\r\n }\r\n\r\n private render() {\r\n const locales = i18n.getLocales();\r\n if (locales.length > 1) {\r\n\r\n this.selectEl = document.createElement('select');\r\n for(let locale of locales) {\r\n let optionEl = document.createElement('option');\r\n optionEl.value = locale.locale;\r\n optionEl.innerHTML = this.displayLocaleName(locale);\r\n this.selectEl.appendChild(optionEl)\r\n }\r\n\r\n this.selectEl.value = i18n.getCurrentLocale();\r\n this.selectEl.classList.add('eqv-select');\r\n this.selectEl.addEventListener('change', this.changeLocale);\r\n\r\n this.slot.appendChild(this.selectEl);\r\n }\r\n }\r\n\r\n private changeLocale = () => {\r\n const newLocale = this.selectEl.value;\r\n i18n.setCurrentLocale(newLocale);\r\n\r\n this.context.refreshWidgets(WidgetGroup.All);\r\n }\r\n\r\n private displayLocaleName(locale: i18n.LocaleInfoItem): string {\r\n if (locale.englishName && locale.displayName) {\r\n return `${locale.englishName} - ${locale.displayName}`;\r\n } \r\n else if (locale.englishName) {\r\n return locale.englishName;\r\n }\r\n else if (locale.displayName) {\r\n return locale.displayName;\r\n }\r\n\r\n return locale.locale;\r\n }\r\n\r\n private clear(){\r\n this.slot.innerHTML = \"\";\r\n }\r\n\r\n protected destroyCore() {\r\n this.clear();\r\n }\r\n}","import { Widget, WidgetGroup, EqContext } from '@easyquery/core';\r\nimport { browserUtils } from '../utils/browser_utils';\r\n/**\r\n * The widget responsed for rendering the name of the current query.\r\n */\r\nexport class QueryNameWidget extends Widget {\r\n private nameSlot: HTMLElement;\r\n private tooltipSlot: HTMLElement;\r\n private asteriskSlot: HTMLElement;\r\n\r\n private queryEventCallbackId: string = null;\r\n\r\n /**\r\n * The default constructor.\r\n * @param slot The HTML element where our widget should be placed.\r\n */\r\n constructor(slot: HTMLElement) {\r\n super(slot);\r\n this.group = WidgetGroup.Query | WidgetGroup.QueryStatus;\r\n } \r\n\r\n public init(context: EqContext, options: any) {\r\n super.init(context, options);\r\n\r\n this.destroyCore();\r\n this.attachQueryObserver();\r\n }\r\n\r\n protected get cssPrefix(): string {\r\n return 'eqjs-query-name';\r\n }\r\n\r\n public getWidgetType(): string {\r\n return 'queryName';\r\n }\r\n\r\n /**\r\n * Refresh widget implementation\r\n */\r\n protected refreshCore() {\r\n this.render();\r\n }\r\n\r\n private render() {\r\n this.slot.classList.add(`${this.cssPrefix}`);\r\n const mobClass = browserUtils.getMobileCssClass();\r\n if (mobClass) {\r\n this.slot.classList.add(mobClass)\r\n }\r\n \r\n if (!this.nameSlot) {\r\n this.nameSlot = document.createElement('div');\r\n this.nameSlot.classList.add(`${this.cssPrefix}-text`);\r\n this.nameSlot.classList.add(`${this.cssPrefix}-theme`);\r\n this.slot.appendChild(this.nameSlot);\r\n }\r\n\r\n if (!this.asteriskSlot) {\r\n this.asteriskSlot = document.createElement('span');\r\n this.asteriskSlot.innerHTML = \"*\";\r\n this.asteriskSlot.classList.add(`${this.cssPrefix}-asterisk`);\r\n this.slot.appendChild(this.asteriskSlot);\r\n }\r\n\r\n if (!this.tooltipSlot) {\r\n this.tooltipSlot = document.createElement('span');\r\n this.tooltipSlot.classList.add(`${this.cssPrefix}-tooltip`);\r\n this.tooltipSlot.classList.add(`${this.cssPrefix}-theme`);\r\n this.slot.appendChild(this.tooltipSlot);\r\n }\r\n\r\n\r\n // Update\r\n const queryName = this.context.getQuery().getName();\r\n this.nameSlot.textContent = queryName;\r\n this.tooltipSlot.textContent = queryName;\r\n\r\n this.asteriskSlot.style.visibility = this.context.getQuery().isModified() ? \"visible\" : \"hidden\";\r\n }\r\n\r\n private clear() {\r\n this.slot.innerHTML = \"\";\r\n this.nameSlot = null;\r\n this.tooltipSlot = null;\r\n this.asteriskSlot = null;\r\n \r\n }\r\n\r\n private attachQueryObserver() {\r\n const query = this.context.getQuery();\r\n\r\n this.queryEventCallbackId = query.addChangedCallback(event => {\r\n this.refreshCore();\r\n });\r\n }\r\n\r\n private detachQueryObserver() {\r\n if (this.queryEventCallbackId) {\r\n const query = this.context.getQuery();\r\n query.removeChangedCallback(this.queryEventCallbackId);\r\n }\r\n }\r\n\r\n protected destroyCore() {\r\n this.clear();\r\n this.detachQueryObserver();\r\n }\r\n}\r\n","import { i18n } from '@easydata/core';\r\nimport { utils as dataUtils } from '@easydata/core';\r\nimport { Widget, EqContext, \r\n WidgetGroup\r\n} from '@easyquery/core';\r\n\r\nimport { \r\n DialogService, DefaultDialogService, \r\n addElement, domel \r\n} from '@easydata/ui';\r\n\r\nimport { EasyGridWidget } from '../widgets/easy_grid_widget';\r\nimport { ChartJsWidget } from '../widgets/charts/chart_widget_chartjs';\r\nimport { EntitiesPanel } from '../widgets/entities_panel';\r\nimport { ColumnsPanel } from '../widgets/columns_panel';\r\nimport { ColumnsBar } from '../widgets/columns_bar';\r\nimport { LocaleWidget } from '../widgets/locale_widget';\r\nimport { QueryPanel } from '../widgets/query_panel';\r\nimport { ProcessWidget } from '../widgets/process_widget';\r\nimport { FilterBar } from '../widgets/filter_bar';\r\nimport { SortingBar } from '../widgets/sorting_bar';\r\nimport { QueryNameWidget } from '../widgets/queryname_widget';\r\nimport { StatementPanel } from '../widgets/statement_panel';\r\nimport { ResultFacetsPanel } from '../widgets/result_facets_panel';\r\n\r\nimport { EqViewOptions, EqResultOptions } from './view_options';\r\nimport { eqCssPrefix } from '../utils/utils';\r\nimport { browserUtils } from '../utils/browser_utils';\r\nimport { ExportWidget } from '../widgets/export_widget';\r\n\r\nimport { AggregationBar } from '../widgets/aggregation_bar';\r\n\r\nexport abstract class View {\r\n protected context: EqContext;\r\n \r\n protected domRoots: Array<Document | ShadowRoot> = [ document ];\r\n\r\n protected defaultViewOptions: EqViewOptions = {\r\n enableExport : true,\r\n disableConfirmationOnQueryChange: false,\r\n queryFileExtensions : 'text/xml,application/json',\r\n result: {\r\n clearResultOnQueryChange: true,\r\n showChart: true,\r\n showProcessIndicator: true\r\n },\r\n widgets: {\r\n resultGrid: {\r\n addColumns: false\r\n }\r\n },\r\n handlers: { \r\n }\r\n };\r\n\r\n protected viewOptions : EqViewOptions = {};\r\n protected resultOptions: EqResultOptions = {};\r\n\r\n // Widgets START\r\n protected entitiesPanelWidget?: Widget;\r\n protected columnsPanelWidget?: Widget;\r\n protected columnsBarWidget?: Widget;\r\n protected queryPanelWidget?: Widget;\r\n protected resultGridWidget?: Widget;\r\n protected chartWidget?: Widget;\r\n protected queryNameWidget?: Widget;\r\n protected processWidget?: Widget;\r\n protected localeWidget?: Widget;\r\n protected statementPanelWidget?: Widget;\r\n protected filterBarWidget?: Widget;\r\n protected sortingBarWidget?: Widget;\r\n protected statementWidget?: Widget;\r\n protected exportWidget?: Widget;\r\n protected aggregationBarWidget?: Widget;\r\n protected resultFacetPanelWidget?: Widget;\r\n protected resultCountSlot?: HTMLElement;\r\n protected resultPanelSlot?: HTMLElement;\r\n // Widgets END\r\n\r\n constructor() {\r\n this.resetContext();\r\n\r\n this.renderSpinner();\r\n }\r\n\r\n private resetContext() {\r\n this.context = new EqContext();\r\n\r\n this.context\r\n .getServices()\r\n .registerDialogServiceResolver(\r\n () => new DefaultDialogService()\r\n );\r\n }\r\n\r\n public init(options: EqViewOptions) {\r\n try {\r\n this.context.initStart();\r\n \r\n // to support shadow DOM rendering\r\n if (options && options.shadowRoots)\r\n this.domRoots = this.domRoots.concat(options.shadowRoots);\r\n \r\n this.viewOptions = this.initOptions(options);\r\n this.resultOptions = dataUtils.assignDeep(this.defaultViewOptions.result, this.viewOptions.result);\r\n \r\n this.initWidgets(this.viewOptions);\r\n \r\n this.context.init(this.viewOptions);\r\n \r\n this.initDone(); \r\n }\r\n catch (err) {\r\n this.context.throwError({ action: 'Init', sourceError : err as Error });\r\n }\r\n }\r\n\r\n protected initOptions(options?: EqViewOptions): EqViewOptions {\r\n options = dataUtils.assignDeep(this.defaultViewOptions, options);\r\n\r\n // support old format \r\n if (!options.widgets.easyGrid) {\r\n options.widgets.easyGrid = options.widgets.resultGrid || {};\r\n }\r\n\r\n // map columnTitleFormat option to widgets that have similar option\r\n if (options.columnTitleFormat) {\r\n this.context.options.columnTitleFormat = options.columnTitleFormat;\r\n }\r\n\r\n //to support old paging options (should be removed in the next versions)\r\n options.widgets.easyGrid.paging = \r\n dataUtils.assignDeep({}, options.result.paging, options.widgets.easyGrid.paging);\r\n\r\n this.enableExport = options.enableExport || false;\r\n\r\n if (!options.widgets.exportWidget) {\r\n options.widgets.exportWidget = {};\r\n }\r\n \r\n options.widgets.exportWidget.enableExport = this.enableExport;\r\n \r\n return options;\r\n }\r\n\r\n protected initWidgets(options?: EqViewOptions) {\r\n let queryPanel: string | HTMLElement = \"QueryPanel\"\r\n let columnsPanel: string | HTMLElement = \"ColumnsPanel\";\r\n let entitiesPanel: string | HTMLElement = \"EntitiesPanel\";\r\n let resultPanel: string | HTMLElement = \"ResultPanel\";\r\n let columnsBar: string | HTMLElement = \"ColumnsBar\";\r\n let sortingBar: string | HTMLElement = \"SortingBar\";\r\n let filterBar: string | HTMLElement = \"FilterBar\";\r\n let processBar: string | HTMLElement = \"ProcessBar\";\r\n let statementPanel: string | HTMLElement = \"StatementPanel\";\r\n let changeLocale: string | HTMLElement = \"ChangeLocale\";\r\n let queryNameLabel: string | HTMLElement = \"QueryNameLabel\";\r\n let facetsPanel: string | HTMLElement = \"ResultFacetsPanel\";\r\n let resultCount: string | HTMLElement = \"ResultCount\";\r\n let exportButton: string | HTMLElement = \"ExportButton\";\r\n let aggregationBar: string | HTMLElement = \"AggregationBar\";\r\n\r\n if (options.slots) {\r\n queryNameLabel = options.slots.queryNameLabel || queryNameLabel;\r\n queryPanel = options.slots.queryPanel || queryPanel;\r\n columnsPanel = options.slots.columnsPanel || columnsPanel;\r\n columnsBar = options.slots.columnsBar || columnsBar;\r\n entitiesPanel = options.slots.entitiesPanel || entitiesPanel;\r\n resultPanel = options.slots.resultPanel || resultPanel;\r\n statementPanel = options.slots.statementPanel || statementPanel;\r\n processBar = options.slots.processBar || processBar;\r\n changeLocale = options.slots.changeLocale || changeLocale;\r\n facetsPanel = options.slots.facetsPanel || facetsPanel;\r\n resultCount = options.slots.resultCountSpan || resultCount;\r\n filterBar = options.slots.filterBar || filterBar;\r\n exportButton = options.slots.exportButtons || exportButton;\r\n aggregationBar = options.slots.aggregationBar || aggregationBar;\r\n }\r\n\r\n const epElement = this.resolveElement(entitiesPanel);\r\n if (epElement && !this.entitiesPanelWidget) {\r\n this.entitiesPanelWidget = this.createEntitiesPanelWidget(epElement);\r\n this.context.addWidget(this.entitiesPanelWidget);\r\n }\r\n\r\n const cpElement = this.resolveElement(columnsPanel);\r\n if (cpElement && !this.columnsPanelWidget) {\r\n this.columnsPanelWidget = this.createColumnsPanelWidget(cpElement);\r\n this.context.addWidget(this.columnsPanelWidget);\r\n }\r\n\r\n const cbElement = this.resolveElement(columnsBar);\r\n if (cbElement && !this.columnsBarWidget) {\r\n this.columnsBarWidget = this.createColumnsBarWidget(cbElement);\r\n this.context.addWidget(this.columnsBarWidget);\r\n }\r\n \r\n const qpElement = this.resolveElement(queryPanel);\r\n if (qpElement && !this.queryPanelWidget) {\r\n this.queryPanelWidget = this.createQueryPanelWidget(qpElement);\r\n this.context.addWidget(this.queryPanelWidget);\r\n } \r\n\r\n this.resultPanelSlot = this.resolveElement(resultPanel);\r\n if (this.resultPanelSlot) {\r\n if (!this.resultGridWidget) {\r\n let gridPanel = addElement(this.resultPanelSlot, 'div', { cssClass: 'eqv-result-grid' });\r\n this.resultGridWidget = this.createResultGridWidget(gridPanel);\r\n this.context.addWidget(this.resultGridWidget); \r\n }\r\n \r\n if (this.resultOptions.showChart && !this.chartWidget) {\r\n let chartPanel = addElement(this.resultPanelSlot, 'div', { cssClass: 'eqv-chart-panel' });\r\n chartPanel.style.display = 'none';\r\n this.chartWidget = this.createChartWidget(chartPanel);\r\n this.context.addWidget(this.chartWidget);\r\n }\r\n }\r\n\r\n const qnElement = this.resolveElement(queryNameLabel);\r\n if (qnElement && !this.queryNameWidget) {\r\n this.queryNameWidget = this.createQueryNameWidget(qnElement);\r\n this.context.addWidget(this.queryNameWidget);\r\n }\r\n\r\n const fbElement = this.resolveElement(filterBar);\r\n if (fbElement && !this.filterBarWidget) {\r\n this.filterBarWidget = this.createFilterBarWidget(fbElement);\r\n this.context.addWidget(this.filterBarWidget);\r\n }\r\n\r\n const sbElement = this.resolveElement(sortingBar);\r\n if (sbElement && !this.sortingBarWidget) {\r\n this.sortingBarWidget = this.createSortingBarWidget(sbElement);\r\n this.context.addWidget(this.sortingBarWidget);\r\n }\r\n\r\n const pbElement = this.resolveElement(processBar);\r\n if (pbElement && !this.processWidget) {\r\n this.processWidget = this.createProcessWidget(pbElement);\r\n this.context.addWidget(this.processWidget);\r\n }\r\n\r\n const stElement = this.resolveElement(statementPanel);\r\n if (stElement && !this.statementPanelWidget) {\r\n this.statementPanelWidget = this.createStatementPanelWidget(stElement);\r\n this.context.addWidget(this.statementPanelWidget);\r\n }\r\n\r\n const clElement = this.resolveElement(changeLocale);\r\n if (clElement) {\r\n const widget = this.createLocaleWidget(clElement);\r\n this.context.addWidget(widget);\r\n }\r\n\r\n const fpElement = this.resolveElement(facetsPanel);\r\n if (fpElement && !this.resultFacetPanelWidget) {\r\n this.resultFacetPanelWidget = this.createResultFacetsPanel(fpElement);\r\n this.context.addWidget(this.resultFacetPanelWidget);\r\n }\r\n\r\n const ewElement = this.resolveElement(exportButton);\r\n if (ewElement && !this.exportWidget) {\r\n this.exportWidget = this.createExportWidget(ewElement);\r\n this.context.addWidget(this.exportWidget);\r\n }\r\n\r\n this.resultCountSlot = this.resolveElement(resultCount);\r\n\r\n const aggrbElement = this.resolveElement(aggregationBar);\r\n if (aggrbElement && !this.aggregationBarWidget) {\r\n this.aggregationBarWidget = this.createAggregationBarWidget(aggrbElement);\r\n this.context.addWidget(this.aggregationBarWidget);\r\n }\r\n }\r\n\r\n protected initDone() : void {}\r\n\r\n protected resolveElement(elementOrId: string | HTMLElement): HTMLElement {\r\n if (typeof elementOrId === 'string') {\r\n for(const domRoot of this.domRoots) {\r\n const el = domRoot.getElementById(elementOrId);\r\n if (el)\r\n return el;\r\n }\r\n return null;\r\n }\r\n\r\n return elementOrId;\r\n }\r\n\r\n protected resolveElementsByClassName(className: string): Element[] {\r\n let result: Element[] = [];\r\n for(const domRoot of this.domRoots) {\r\n const elemList = domRoot.querySelectorAll('.' + className);\r\n for (let i = 0; i < elemList.length; i++) {\r\n result.push(elemList[i]);\r\n }\r\n }\r\n return result\r\n }\r\n\r\n /**\r\n\t* Shows records count.\r\n * @param count The value to show.\r\n\t*/\r\n protected displayRecordsCount(count: number) {\r\n if (this.resultCountSlot && (typeof count !== 'undefined')) {\r\n this.resultCountSlot.style.display = \"inline\";\r\n this.resultCountSlot.innerHTML = i18n.getText(\"MsgResultCount\").replace(\"{0}\", count.toString());\r\n }\r\n }\r\n\r\n public getContext(): EqContext {\r\n return this.context;\r\n }\r\n\r\n /**\r\n * Sets dialog service for the view\r\n * @param dialogService The dialog service.\r\n */\r\n public setDialogService(dialogService: DialogService) {\r\n this.context.getServices()\r\n .registerDialogServiceResolver(() => dialogService);\r\n }\r\n\r\n\r\n /** @deprecated `executeQuery` is deprecated. Use `fetchData` instead*/\r\n public executeQuery (options?: any) {\r\n console.warn('`executeQuery` is deprecated. Use `fetchData` instead')\r\n this.fetchData(options);\r\n }\r\n\r\n /**\r\n\t* Fetches the data according to the query and other options defined in the context.\r\n * @param options The options. \r\n\t*/\r\n public fetchData (options?: any) {\r\n options = options || { refresh: true };\r\n this.context.clearResult();\r\n\r\n //don't run fetch if the query is empty\r\n if (this.context.getQuery().isEmpty() && !this.resultOptions.fetchEmptyQueries) return;\r\n\r\n this.showResultSpinner();\r\n this.context.fetchData({\r\n elasticPaging: options.elasticPaging,\r\n success: (result) => { \r\n this.hideResultSpinner();\r\n\r\n this.toggleExportButtons();\r\n\r\n this.displayRecordsCount(this.context.resultTable.getTotal());\r\n\r\n if (options.refresh === true) {\r\n this.context.refreshWidgets(WidgetGroup.Result);\r\n }\r\n\r\n if (options.callback) {\r\n options.callback();\r\n }\r\n\r\n if (options.success) {\r\n options.success();\r\n }\r\n },\r\n error: () => {\r\n this.hideResultSpinner();\r\n }\r\n });\r\n }\r\n\r\n protected enableExport = false;\r\n\r\n protected toggleExportButtons() {\r\n if (this.enableExport && this.context.resultTable \r\n && this.context.resultTable.getCachedCount() > 0) {\r\n this.enableExportButtons();\r\n } \r\n else {\r\n this.disableExportButtons();\r\n }\r\n\r\n }\r\n\r\n protected enableExportButtons() {\r\n // Nothing to do\r\n }\r\n\r\n protected disableExportButtons() {\r\n // Nothing to do\r\n }\r\n\r\n private _spinnerDiv: HTMLElement;\r\n\r\n private renderSpinner() {\r\n const html = '<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>';;\r\n\r\n this._spinnerDiv = domel('div')\r\n .addClass(`eqjs-result-spinner`)\r\n .addChild('div', b => b\r\n .addClass(`${eqCssPrefix}-progress-win8`, browserUtils.getMobileCssClass())\r\n .addHtml(html)\r\n )\r\n .toDOM();\r\n }\r\n\r\n protected showResultSpinner() {\r\n if (this.resultOptions.showProcessIndicator && this.resultPanelSlot) {\r\n if (!this._spinnerDiv.parentNode) {\r\n for (let i = 0; i < this.resultPanelSlot.children.length; i++) {\r\n const el = this.resultPanelSlot.children[i] as HTMLElement;\r\n domel(el).hide();\r\n }\r\n this.resultPanelSlot.appendChild(this._spinnerDiv);\r\n }\r\n }\r\n }\r\n\r\n protected hideResultSpinner() {\r\n if (this.resultOptions.showProcessIndicator && this.resultPanelSlot) {\r\n if (this._spinnerDiv.parentNode) {\r\n this._spinnerDiv.parentNode.removeChild(this._spinnerDiv);\r\n for (let i = 0; i < this.resultPanelSlot.children.length; i++) {\r\n const el = this.resultPanelSlot.children[i] as HTMLElement;\r\n domel(el).show();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n\t* Creates the widget that represents Chart Widget.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n\t*/\r\n protected createChartWidget(slotElement: HTMLElement): Widget {\r\n if (this.resultOptions.chartWidgetResolver) {\r\n return this.resultOptions.chartWidgetResolver(slotElement);\r\n }\r\n else {\r\n return new ChartJsWidget(slotElement);\r\n }\r\n }\r\n\r\n /**\r\n\t* Creates the widget that represents Grid Widget.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n\t*/\r\n protected createResultGridWidget(slotElement: HTMLElement): Widget {\r\n if (this.resultOptions.resultGridResolver) {\r\n return this.resultOptions.resultGridResolver(slotElement);\r\n }\r\n else {\r\n return new EasyGridWidget(slotElement);\r\n }\r\n }\r\n\r\n\t/**\r\n\t* Creates the widget that represents Entity Panel.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n\t*/\r\n protected createEntitiesPanelWidget(slot: HTMLElement): Widget {\r\n return new EntitiesPanel(slot);\r\n }\r\n\r\n\t/**\r\n\t* Creates the widget that represents Columns Panel.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n\t*/\r\n protected createColumnsPanelWidget(slot: HTMLElement): Widget {\r\n return new ColumnsPanel(slot);\r\n }\r\n\r\n\t/**\r\n\t* Creates the widget that represents Query Panel.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n\t*/\r\n protected createQueryPanelWidget(slot: HTMLElement): Widget {\r\n return new QueryPanel(slot);\r\n }\r\n\r\n /**\r\n\t* Creates the widget that represents Locale Widget.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n\t*/\r\n protected createLocaleWidget(slot: HTMLElement): Widget {\r\n return new LocaleWidget(slot);\r\n }\r\n\r\n /**\r\n\t* Creates the widget that represents Process Widget.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n\t*/\r\n protected createProcessWidget(slot: HTMLElement): Widget {\r\n return new ProcessWidget(slot);\r\n }\r\n\r\n /**\r\n\t* Creates the widget that represents Columns Bar.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n\t*/\r\n protected createColumnsBarWidget(slot: HTMLElement): Widget {\r\n return new ColumnsBar(slot);\r\n }\r\n\r\n /**\r\n\t* Creates the widget that represents Filter Bar.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n\t*/\r\n protected createFilterBarWidget(slot: HTMLElement): Widget {\r\n return new FilterBar(slot);\r\n }\r\n\r\n /**\r\n\t* Creates the widget that represents Sorting Bar.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n\t*/\r\n protected createSortingBarWidget(slot: HTMLElement): Widget {\r\n return new SortingBar(slot);\r\n }\r\n\r\n /**\r\n\t* Creates the widget that represents Query Name Widget.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n\t*/\r\n protected createQueryNameWidget(slot: HTMLElement): Widget {\r\n return new QueryNameWidget(slot);\r\n }\r\n\r\n /**\r\n * Creates the widget that represents Statement Panel Widget.\r\n * @param slot \r\n */\r\n protected createStatementPanelWidget(slot: HTMLElement): Widget {\r\n return new StatementPanel(slot);\r\n }\r\n\r\n /**\r\n * Creates the widget that represents Result Facets Panel Widget.\r\n * @param slot \r\n */\r\n protected createResultFacetsPanel(slot: HTMLElement): Widget {\r\n return new ResultFacetsPanel(slot);\r\n }\r\n\r\n /**\r\n * Creates the widget that represents Export funcionality.\r\n * @param slot \r\n */\r\n protected createExportWidget(slot: HTMLElement): Widget {\r\n return new ExportWidget(slot);\r\n }\r\n\r\n /**\r\n * Creates the widget that represents Aggregation Bar Widget.\r\n * @param slot \r\n */\r\n protected createAggregationBarWidget(slot: HTMLElement): Widget {\r\n return new AggregationBar(slot);\r\n }\r\n\r\n public detach() {\r\n if (this.entitiesPanelWidget) {\r\n this.entitiesPanelWidget.destroy();\r\n this.entitiesPanelWidget = null;\r\n }\r\n\r\n if (this.columnsPanelWidget) {\r\n this.columnsPanelWidget.destroy();\r\n this.columnsPanelWidget = null;\r\n }\r\n\r\n if (this.queryPanelWidget) {\r\n this.queryPanelWidget.destroy();\r\n this.queryPanelWidget = null;\r\n }\r\n\r\n if (this.columnsBarWidget) {\r\n this.columnsBarWidget.destroy();\r\n this.columnsBarWidget = null;\r\n }\r\n\r\n if (this.resultGridWidget) {\r\n this.resultGridWidget.destroy();\r\n this.resultGridWidget = null;\r\n }\r\n\r\n if (this.chartWidget) {\r\n this.chartWidget.destroy();\r\n this.chartWidget = null;\r\n }\r\n\r\n if (this.queryNameWidget) {\r\n this.queryNameWidget.destroy();\r\n this.queryNameWidget = null;\r\n }\r\n\r\n if (this.processWidget) {\r\n this.processWidget.destroy();\r\n this.processWidget = null;\r\n }\r\n\r\n if (this.localeWidget) {\r\n this.localeWidget.destroy();\r\n this.localeWidget = null;\r\n }\r\n\r\n if (this.statementPanelWidget) {\r\n this.statementPanelWidget.destroy();\r\n this.statementPanelWidget = null;\r\n }\r\n\r\n if (this.filterBarWidget) {\r\n this.filterBarWidget.destroy();\r\n this.filterBarWidget = null;\r\n }\r\n\r\n if (this.sortingBarWidget) {\r\n this.sortingBarWidget.destroy();\r\n this.sortingBarWidget = null;\r\n }\r\n\r\n if (this.statementWidget) {\r\n this.statementWidget.destroy();\r\n this.statementWidget = null;\r\n }\r\n\r\n if (this.exportWidget) {\r\n this.exportWidget.destroy();\r\n this.exportWidget = null;\r\n }\r\n\r\n if (this.resultFacetPanelWidget) {\r\n this.resultFacetPanelWidget.destroy();\r\n this.resultFacetPanelWidget = null;\r\n }\r\n\r\n if (this.resultCountSlot) {\r\n this.resultCountSlot.innerHTML = '';\r\n this.resultCountSlot = null;\r\n }\r\n\r\n if (this.resultPanelSlot) {\r\n this.resultPanelSlot.innerHTML = '';\r\n this.resultPanelSlot = null;\r\n }\r\n\r\n this.domRoots = [ document ];\r\n this.resetContext();\r\n }\r\n}","import { i18n, EqEvent} from '@easydata/core';\r\nimport { ContextNewQueryOptions, Query, \r\n QueryChangeEventData, QueryChangePart, WidgetGroup \r\n} from '@easyquery/core';\r\n\r\nimport { domel } from '@easydata/ui';\r\n\r\nimport { PopupMenu } from '../utils/popup_menu';\r\nimport { browserUtils } from '../utils/browser_utils';\r\n\r\nimport { EqViewOptions } from './view_options';\r\nimport { View } from '../views/view'; \r\n\r\ntype DlgCallbackResult = {\r\n success: boolean;\r\n message?: string\r\n}\r\n\r\n/**\r\n * The EasyQuery client-side view that represents the UI for advanced search page\r\n */\r\nexport class AdvancedSearchView extends View { \r\n protected queryNameLabel: HTMLElement;\r\n protected clearQueryButton: HTMLElement;\r\n protected newQueryButton: HTMLElement;\r\n protected queryListSelector: HTMLSelectElement;\r\n protected loadQueryButton: HTMLElement;\r\n protected saveQueryButton: HTMLElement;\r\n protected copyQueryButton: HTMLElement;\r\n protected removeQueryButton: HTMLElement;\r\n protected storageDropButton: HTMLElement;\r\n protected queryListPanel: HTMLElement;\r\n\r\n protected saveQueryToFileButton: HTMLElement;\r\n protected loadQueryFromFileButton: HTMLElement;\r\n protected loadQueryFromFileInput: HTMLInputElement;\r\n\r\n protected fetchDataButton: HTMLElement;\r\n\r\n protected exportButtons: HTMLElement[] = [];\r\n\r\n\t// Name of the class to add to disabled elements.\r\n protected disabledClass = \"eqjs-disabled\";\r\n\r\n protected dropdownContainerClass = \"eqv-dropdown-container\";\r\n protected dropdownButtonClass = \"eqv-drop-button\";\r\n protected dropdownContentClass = \"eqv-dropdown-content\";\r\n protected dropdownShowClass = \"eqv-dropdown-show\";\r\n\r\n //handlers\r\n private fetchDataButtonClickHandler: any;\r\n private clearQueryButtonClickHandler: any;\r\n private newQueryButtonClickHandler: any;\r\n private loadQueryButtonClickHandler: any;\r\n private saveQueryButtonClickHandler: any;\r\n private copyQueryButtonClickHandler: any;\r\n private removeQueryButtonClickHandler: any;\r\n private saveQueryToFileButtonClickHandler: any;\r\n private loadQueryFromFileButtonClickHandler: any;\r\n private exportButtonClickHandler: any;\r\n\r\n private storageButtonClickHandler: any;\r\n\r\n private queryChangedHandler: (ev: EqEvent) => void;\r\n\r\n private outsideClickHandler: (ev: MouseEvent) => any;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.fetchDataButtonClickHandler = this.fetchDataButtonClick.bind(this);\r\n this.clearQueryButtonClickHandler = this.clearQueryButtonClick.bind(this);\r\n this.newQueryButtonClickHandler = this.newQueryButtonClick.bind(this);\r\n this.loadQueryButtonClickHandler = this.loadQueryButtonClick.bind(this);\r\n this.saveQueryButtonClickHandler = this.saveQueryButtonClick.bind(this);\r\n this.copyQueryButtonClickHandler = this.copyQueryButtonClick.bind(this);\r\n this.removeQueryButtonClickHandler = this.removeQueryButtonClick.bind(this);\r\n \r\n this.storageButtonClickHandler = this.storageDropButtonClick.bind(this);\r\n\r\n this.saveQueryToFileButtonClickHandler = this.saveQueryToFileButtonClick.bind(this);\r\n this.loadQueryFromFileButtonClickHandler = this.loadQueryFromFileButtonClick.bind(this);\r\n\r\n const self = this;\r\n this.exportButtonClickHandler = function (this: HTMLElement, e) {\r\n if (!this.classList.contains(self.disabledClass)) {\r\n const format = this.getAttribute(\"data-format\");\r\n self.getContext().exportResult({ format: format });\r\n }\r\n }\r\n\r\n this.queryChangedHandler = (ev) => {\r\n const eventData = ev.data as QueryChangeEventData;\r\n\r\n if (this.resultOptions.clearResultOnQueryChange) {\r\n this.context.clearResult();\r\n this.context.refreshWidgets(WidgetGroup.Result);\r\n }\r\n \r\n this.disableExportButtons(); \r\n if (this.resultCountSlot) {\r\n this.resultCountSlot.style.display = \"none\";\r\n } \r\n\r\n if (this.viewOptions.syncQueryOnChange) {\r\n this.syncQuery(); \r\n }\r\n\r\n if (this.viewOptions.fetchDataOnChange) {\r\n if (!eventData || (eventData.part != QueryChangePart.ExtraData \r\n && eventData.part != QueryChangePart.Facets)) {\r\n this.fetchData();\r\n }\r\n }\r\n };\r\n\r\n this.outsideClickHandler = (event) => {\r\n let currentContent = null;\r\n if ((event.target as HTMLElement).matches(`.${this.dropdownButtonClass}`)) {\r\n currentContent = (event.target as HTMLElement).parentElement.querySelector(`.${this.dropdownContentClass}`);\r\n }\r\n else if ((event.target as HTMLElement).matches(`.${this.dropdownButtonClass} > span`)) {\r\n currentContent = (event.target as HTMLElement).parentElement.parentElement.querySelector(`.${this.dropdownContentClass}`);\r\n }\r\n\r\n var dropdowns = this.resolveElementsByClassName(this.dropdownContentClass);\r\n for (let i = 0; i < dropdowns.length; i++) {\r\n var openDropdown = dropdowns[i];\r\n if (currentContent != openDropdown) {\r\n if (openDropdown.classList.contains(this.dropdownShowClass)) {\r\n openDropdown.classList.remove(this.dropdownShowClass);\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n protected refreshQueryList() {\r\n if (this.queryListPanel) {\r\n this.queryListPanel.innerHTML = '';\r\n \r\n this.context.loadQueryList({\r\n success: (data) => {\r\n const b = domel('ul',this.queryListPanel)\r\n .addClass('list-group list-group-flush');\r\n\r\n data.map(item => {\r\n b.addChild('li', b => {\r\n b.addClass('list-group-item')\r\n .setStyle('cursor', 'pointer')\r\n .data('id', item.id)\r\n .text(item.name)\r\n .on('click', () => {\r\n this.checkIfQueryModified(() => this.loadQuery(item.id));\r\n });\r\n });\r\n }); \r\n }\r\n });\r\n }\r\n }\r\n\r\n protected initOptions(options: EqViewOptions) {\r\n options = super.initOptions(options);\r\n\r\n if (typeof (options.syncQueryOnChange) == 'undefined') {\r\n options.syncQueryOnChange = true;\r\n }\r\n\r\n return options;\r\n }\r\n\r\n protected initWidgets(options?: EqViewOptions) {\r\n super.initWidgets(options);\r\n\r\n let exportClass = \"eqjs-export\";\r\n let queryContentInputId: string | HTMLElement = \"QueryContentJson\";\r\n let clearQueryButtonId: string | HTMLElement = \"ClearQueryButton\";\r\n let newQueryButtonId: string | HTMLElement = \"NewQueryButton\";\r\n let loadQueryButtonId: string | HTMLElement = \"LoadQueryButton\";\r\n let saveQueryButtonId: string | HTMLElement = \"SaveQueryButton\";\r\n let copyQueryButtonId: string | HTMLElement = \"CopyQueryButton\";\r\n let removeQueryButtonId: string | HTMLElement = \"RemoveQueryButton\";\r\n let storageButtonId: string | HTMLElement = \"StorageDropButton\";\r\n let fetchDataButtonId: string | HTMLElement = \"FetchDataButton\";\r\n let loadQueryFromFileButtonId: string | HTMLElement = \"LoadQueryFromFileButton\";\r\n let saveQueryToFileButtonId: string | HTMLElement = \"SaveQueryToFileButton\";\r\n let queryListPanelId: string | HTMLElement = \"QueryListPanel\";\r\n\r\n if (options.slots) {\r\n queryContentInputId = options.slots.queryContentInput || queryContentInputId;\r\n fetchDataButtonId = options.slots.fetchDataButton || fetchDataButtonId;\r\n clearQueryButtonId = options.slots.clearQueryButton || clearQueryButtonId;\r\n newQueryButtonId = options.slots.newQueryButton || newQueryButtonId;\r\n loadQueryButtonId = options.slots.loadQueryButton || loadQueryButtonId;\r\n saveQueryButtonId = options.slots.saveQueryButton || saveQueryButtonId;\r\n copyQueryButtonId = options.slots.copyQueryButton || copyQueryButtonId;\r\n removeQueryButtonId = options.slots.removeQueryButton || removeQueryButtonId;\r\n storageButtonId = options.slots.storageButton || storageButtonId;\r\n exportClass = options.slots.exportClass || exportClass;\r\n loadQueryFromFileButtonId = options.slots.loadQueryFromFileButton || loadQueryFromFileButtonId;\r\n saveQueryToFileButtonId = options.slots.saveQueryToFileButton || saveQueryToFileButtonId;\r\n queryListPanelId = options.slots.queryListPanel || queryListPanelId;\r\n }\r\n\r\n this.exportButtons = this.domRoots.reduce((elems, root) => \r\n elems.concat(Array.from(root.querySelectorAll(`.${exportClass}`))) ,[]);\r\n\r\n if (!options.enableExport) {\r\n this.hideExportButtons();\r\n }\r\n\r\n this.disableExportButtons();\r\n //Add event listener for export buttons\r\n const self = this;\r\n this.exportButtons.forEach((button) => {\r\n button.addEventListener('click', this.exportButtonClickHandler);\r\n });\r\n\r\n if (!this.fetchDataButton) {\r\n this.fetchDataButton = this.resolveElement(fetchDataButtonId);\r\n if (!this.fetchDataButton) {\r\n this.fetchDataButton = this.resolveElement('ExecuteQueryButton'); //deprecated, should be removed on the next major update\r\n } \r\n if (this.fetchDataButton) {\r\n this.fetchDataButton.addEventListener('click', this.fetchDataButtonClickHandler);\r\n } \r\n }\r\n\r\n if (!this.clearQueryButton) {\r\n this.clearQueryButton = this.resolveElement(clearQueryButtonId);\r\n if (this.clearQueryButton) {\r\n this.clearQueryButton.addEventListener('click', this.clearQueryButtonClickHandler);\r\n } \r\n }\r\n\r\n if (!this.newQueryButton) {\r\n this.newQueryButton = this.resolveElement(newQueryButtonId);\r\n if (this.newQueryButton) {\r\n this.newQueryButton.addEventListener('click', this.newQueryButtonClickHandler);\r\n } \r\n }\r\n \r\n if (!this.loadQueryButton) {\r\n this.loadQueryButton = this.resolveElement(loadQueryButtonId);\r\n if (this.loadQueryButton) {\r\n this.loadQueryButton.addEventListener('click', this.loadQueryButtonClickHandler);\r\n }\r\n }\r\n\r\n if (!this.saveQueryButton) {\r\n this.saveQueryButton = this.resolveElement(saveQueryButtonId);\r\n if (this.saveQueryButton) {\r\n this.saveQueryButton.addEventListener('click', this.saveQueryButtonClickHandler);\r\n } \r\n } \r\n\r\n if (!this.copyQueryButton) {\r\n this.copyQueryButton = this.resolveElement(copyQueryButtonId);\r\n if (this.copyQueryButton) {\r\n this.copyQueryButton.addEventListener('click', this.copyQueryButtonClickHandler);\r\n }\r\n }\r\n\r\n if (!this.removeQueryButton) {\r\n this.removeQueryButton = this.resolveElement(removeQueryButtonId);\r\n if (this.removeQueryButton) {\r\n this.removeQueryButton.addEventListener('click', this.removeQueryButtonClickHandler);\r\n }\r\n }\r\n\r\n if (!this.storageDropButton) {\r\n this.storageDropButton = this.resolveElement(storageButtonId);\r\n if (this.storageDropButton) {\r\n this.storageDropButton.addEventListener('click', this.storageButtonClickHandler);\r\n } \r\n }\r\n\r\n if (!this.saveQueryToFileButton) {\r\n this.saveQueryToFileButton = this.resolveElement(saveQueryToFileButtonId);\r\n if (this.saveQueryToFileButton) {\r\n this.saveQueryToFileButton.addEventListener('click', this.saveQueryToFileButtonClickHandler);\r\n }\r\n }\r\n\r\n if (!this.queryListPanel) {\r\n this.queryListPanel = this.resolveElement(queryListPanelId);\r\n \r\n //For backward compatibility. Remove on the next update\r\n if (!this.queryListPanel) {\r\n this.queryListPanel = this.resolveElement('QueryListSlot');\r\n }\r\n\r\n if (this.queryListPanel) {\r\n this.context.addEventListener('ready', () => {\r\n this.refreshQueryList();\r\n }); \r\n }\r\n } \r\n\r\n if (!this.loadQueryFromFileButton) {\r\n this.loadQueryFromFileButton = this.resolveElement(loadQueryFromFileButtonId);\r\n if (this.loadQueryFromFileButton) {\r\n this.loadQueryFromFileInput = document.createElement('input');\r\n this.loadQueryFromFileInput.type = 'file';\r\n this.loadQueryFromFileInput.accept = options.queryFileExtensions;\r\n this.loadQueryFromFileInput.style.display = 'none';\r\n\r\n document.body.appendChild(this.loadQueryFromFileInput);\r\n this.loadQueryFromFileInput.addEventListener('change', this.loadQueryFromFileInputSelect.bind(this));\r\n this.loadQueryFromFileButton.addEventListener('click', this.loadQueryFromFileButtonClickHandler);\r\n }\r\n }\r\n\r\n // hide any dropdown menu when user clicks somewhere\r\n window.addEventListener('click', this.outsideClickHandler);\r\n }\r\n \r\n protected initDone() {\r\n super.initDone();\r\n const query = this.context.getQuery();\r\n query.addChangedCallback(this.queryChangedHandler);\r\n }\r\n\r\n\t/**\r\n\t* Sends current query to the backend.\r\n\t*/\r\n public syncQuery() {\r\n this.context.syncQuery({\r\n success: (responseData) => {\r\n if (responseData.statement) {\r\n this.context.refreshWidgets(WidgetGroup.Statement);\r\n }\r\n }\r\n });\r\n }\r\n\r\n\t/**\r\n\t* Disables export buttons.\r\n\t*/\r\n protected disableExportButtons() {\r\n this.exportButtons.forEach((button) => {\r\n (button as HTMLButtonElement).disabled = true;\r\n if (!button.classList.contains(this.disabledClass)) {\r\n button.classList.add(this.disabledClass);\r\n }\r\n })\r\n }\r\n\r\n\t/**\r\n\t* Enables export buttons.\r\n\t*/\r\n protected enableExportButtons() {\r\n this.exportButtons.forEach((button) => {\r\n (button as HTMLButtonElement).disabled = false;\r\n if (button.classList.contains(this.disabledClass)) {\r\n button.classList.remove(this.disabledClass);\r\n }\r\n })\r\n }\r\n\r\n\t/**\r\n\t* Hides export buttons.\r\n\t*/\r\n protected hideExportButtons() {\r\n this.exportButtons.forEach((button) => {\r\n button.style.display = \"none\";\r\n })\r\n }\r\n\r\n protected clearQueryButtonClick() {\r\n this.context.clearQuery();\r\n this.context.refreshWidgets(WidgetGroup.Statement);\r\n }\r\n\r\n protected createNewQuery(options?: ContextNewQueryOptions) : Query {\r\n return this.context.newQuery(options);\r\n }\r\n\r\n public loadQuery(queryId: string) {\r\n if (!queryId) return;\r\n this.context.loadQuery({\r\n queryId: queryId,\r\n silent: false\r\n });\r\n }\r\n\r\n protected saveQuery(success, error?) {\r\n this.context.saveQuery({\r\n success: () => {\r\n if (success)\r\n success();\r\n\r\n this.context.getQuery().fireChangedEvent({\r\n part: QueryChangePart.Properties,\r\n wasModified: false\r\n });\r\n this.refreshQueryList();\r\n },\r\n error: error\r\n });\r\n }\r\n\r\n protected saveCurrentQuery(copyQuery: boolean = false, callback?) {\r\n const query = this.context.getQuery();\r\n if (query.isNewbie || copyQuery) {\r\n this.showSaveQueryDialog((result) => new Promise(resolve => {\r\n if (!result)\r\n return;\r\n \r\n query.regenerateId();\r\n query.setName(result);\r\n query.fireChangedEvent({\r\n part: QueryChangePart.Properties,\r\n wasModified: true\r\n });\r\n this.saveQuery(\r\n () => { resolve({success: true}); callback; },\r\n (error) => resolve({success: false, message: error}));\r\n }));\r\n }\r\n else {\r\n this.saveQuery(callback);\r\n } \r\n }\r\n\r\n public checkIfQueryModified(callback) {\r\n if (this.context.getQuery().isModified() \r\n && !this.viewOptions.disableConfirmationOnQueryChange) {\r\n this.showQueryChangedDialog((result) => {\r\n if (result) {\r\n this.saveCurrentQuery(false, callback); \r\n }\r\n else {\r\n callback();\r\n }\r\n });\r\n }\r\n else {\r\n callback();\r\n }\r\n }\r\n\r\n protected removeCurrentQuery() {\r\n this.context.removeQuery({\r\n success: () => {\r\n this.createNewQuery({\r\n useStorage: false\r\n });\r\n if (this.resultCountSlot) {\r\n this.resultCountSlot.style.display = \"none\";\r\n } \r\n this.context.clearResult();\r\n this.refreshQueryList();\r\n }\r\n });\r\n }\r\n\r\n private _querySaveTemplate = `<div id=\"kdlg-dialog-form\" class=\"kfrm-form\">\r\n <div class=\"kfrm-fields label-above\">\r\n <label for=\"kdlg-dialog-form-input\" id=\"kdlg-dialog-form-content\"></label>\r\n <input type=\"text\" name=\"kdlg-dialog-form-input\" id=\"kdlg-dialog-form-input\" />\r\n </div>\r\n </div>`;\r\n\r\n // ------------------ Dialog wrappers ---------------------\r\n protected showNewQueryDialog(callback: (result: string) => Promise<DlgCallbackResult>) {\r\n const ds = this.context.getServices().getDialogService();\r\n const defVal = i18n.getText('NewQueryDefName');\r\n const dlg = ds.open({\r\n title: i18n.getText('NewQueryTitle'),\r\n body: this. _querySaveTemplate,\r\n submitable: true,\r\n closable: true,\r\n cancelable: true,\r\n submitOnEnter: true,\r\n arrangeParents: false,\r\n beforeOpen: () => {\r\n const input = document.getElementById(`kdlg-dialog-form-input`) as HTMLInputElement;\r\n if (defVal) {\r\n input.value = defVal;\r\n }\r\n const content = document.getElementById('kdlg-dialog-form-content');\r\n content.innerHTML = i18n.getText('NewQueryContent');\r\n input.focus();\r\n },\r\n onSubmit: () => {\r\n const input = document.getElementById(`kdlg-dialog-form-input`) as HTMLInputElement;\r\n const value = input.value;\r\n if (value && value.replace(/\\s/g, '').length > 0) {\r\n if (!callback)\r\n return true;\r\n\r\n dlg.disableButtons();\r\n const header = dlg.getRootElement().querySelector<HTMLElement>('header');\r\n const processEl = domel('div', header)\r\n .addClass('eqjs-process-bar local')\r\n .toDOM();\r\n callback(value)\r\n .then(result => {\r\n header.removeChild(processEl);\r\n dlg.enableButtons();\r\n if (result.success) {\r\n dlg.close();\r\n }\r\n else {\r\n dlg.showAlert(result.message, 'error');\r\n }\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n protected showQueryChangedDialog(callback: (result: boolean) => void) {\r\n const ds = this.context.getServices().getDialogService();\r\n ds.openConfirm(i18n.getText('QueryChangedTitle'), i18n.getText('QueryChangedContent'), callback);\r\n }\r\n\r\n protected showSaveQueryDialog(callback: (result: string) => Promise<DlgCallbackResult>) {\r\n const ds = this.context.getServices().getDialogService();\r\n const query = this.context.getQuery();\r\n const newQueryName = query.isNewbie\r\n ? query.getName()\r\n : i18n.getText('SaveQueryDefName').replace('{queryName}', query.getName());\r\n\r\n const dlg = ds.open({\r\n title: i18n.getText('SaveQueryTitle'),\r\n body: this._querySaveTemplate,\r\n submitable: true,\r\n closable: true,\r\n cancelable: true,\r\n submitOnEnter: true,\r\n arrangeParents: false,\r\n beforeOpen: () => {\r\n const input = document.getElementById(`kdlg-dialog-form-input`) as HTMLInputElement;\r\n input.value = newQueryName;\r\n const content = document.getElementById('kdlg-dialog-form-content');\r\n content.innerHTML = i18n.getText('SaveQueryContent');\r\n input.focus();\r\n },\r\n onSubmit: () => {\r\n const input = document.getElementById(`kdlg-dialog-form-input`) as HTMLInputElement;\r\n const value = input.value;\r\n if (value && value.replace(/\\s/g, '').length > 0) {\r\n if (!callback)\r\n return true;\r\n\r\n dlg.disableButtons();\r\n const header = dlg.getRootElement().querySelector<HTMLElement>('header');\r\n const processEl = domel('div', header)\r\n .addClass('eqjs-process-bar local')\r\n .toDOM();\r\n callback(value)\r\n .then(result => {\r\n dlg.enableButtons();\r\n header.removeChild(processEl);\r\n if (result.success) {\r\n dlg.close();\r\n }\r\n else {\r\n dlg.showAlert(result.message, 'error');\r\n }\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n protected showRemoveQueryDialog(callback: (result: boolean) => void) {\r\n const ds = this.context.getServices().getDialogService();\r\n const query = this.context.getQuery();\r\n ds.openConfirm(i18n.getText('RemoveQueryTitle'), i18n.getText('RemoveQueryContent').replace('{queryName}', query.getName()), callback);\r\n }\r\n\r\n protected showSaveQueryToFileDialog(callback: (fileName: string, format: string) => Promise<DlgCallbackResult>) : void {\r\n const ds = this.getContext().getServices().getDialogService();\r\n const query = this.context.getQuery();\r\n const body = this.renderSaveToFileDialogBody(query.getName());\r\n const dlg = ds.open({\r\n title: i18n.getText('SaveQueryToFileDlgTitle'),\r\n body: body,\r\n onSubmit: () => {\r\n const fileNameInput = body.querySelector('#kdlgFileNameInput') as HTMLInputElement;\r\n\r\n const fileName = fileNameInput ? fileNameInput.value : \"Query\";\r\n\r\n const formatSelector = body.querySelector('#kdlgFileFormatSelector') as HTMLInputElement;\r\n const format = formatSelector ? formatSelector.value : 'json';\r\n\r\n if (callback) {\r\n dlg.disableButtons();\r\n const header = dlg.getRootElement().querySelector<HTMLElement>('header');\r\n const processEl = domel('div', header)\r\n .addClass('eqjs-process-bar local')\r\n .toDOM();\r\n callback(fileName, format)\r\n .then(result => {\r\n dlg.enableButtons();\r\n header.removeChild(processEl);\r\n if (result.success) {\r\n dlg.close();\r\n }\r\n else {\r\n dlg.showAlert(result.message, 'error');\r\n }\r\n });\r\n return false;\r\n }\r\n \r\n return true;\r\n }\r\n });\r\n }\r\n\r\n protected renderSaveToFileDialogBody(name: string, format = \"json\"): HTMLElement {\r\n const isIE = browserUtils.isIE();\r\n const fieldsClass = isIE \r\n ? 'kfrm-fields-ie col-ie-1-4 label-align-right' \r\n : 'kfrm-fields col-a-1 label-align-right'\r\n const horizClass = isIE \r\n ? 'kfrm-fields-ie is-horizontal' \r\n : 'kfrm-fields is-horizontal';\r\n\r\n return domel('div')\r\n .addClass('kfrm-form')\r\n .addChild('div', b => {\r\n b.addClass(fieldsClass)\r\n .addChild('label', b => b \r\n .attr('for', 'file_name')\r\n .addText(i18n.getText('FileNameLabel'))\r\n )\r\n .addChild('div', b => b\r\n .addClass(horizClass)\r\n\r\n .addChild('input', b => b\r\n .id('kdlgFileNameInput')\r\n .name('file_name')\r\n .type('text')\r\n .attr('value', name)\r\n )\r\n .addChild('label', b => b \r\n .addText('.')\r\n )\r\n .addChild('div', b => b\r\n .addClass('kfrm-select')\r\n .addChild('select', b => b\r\n .id('kdlgFileFormatSelector')\r\n .addClass('kdlg-form-control')\r\n .addOption({ \r\n value: 'xml',\r\n selected: 'xml' === format\r\n })\r\n .addOption({ \r\n value: 'json',\r\n selected: 'json' === format\r\n })\r\n )\r\n )\r\n );\r\n })\r\n .toDOM();\r\n }\r\n \r\n // ------------------ Query management buttons handler ---------------------\r\n protected newQueryButtonClick() {\r\n this.checkIfQueryModified(() => {\r\n this.createNewQuery();\r\n });\r\n }\r\n\r\n protected saveQueryToFileButtonClick() {\r\n this.showSaveQueryToFileDialog((fileName, format) => new Promise((resolve) => {\r\n this.context.getQueryFile({\r\n fileName: fileName,\r\n format: format,\r\n success: () => resolve({success: true}),\r\n error: (error) => resolve({ success: false, message: error})\r\n });\r\n }));\r\n }\r\n\r\n protected loadQueryFromFileButtonClick() {\r\n this.checkIfQueryModified(() => {\r\n this.showLoadQueryFromFileDialog();\r\n });\r\n }\r\n\r\n public showLoadQueryFromFileDialog(): void {\r\n this.loadQueryFromFileInput.click();\r\n }\r\n\r\n protected loadQueryFromFileInputSelect() {\r\n const files = this.loadQueryFromFileInput.files;\r\n const file = files.item(0);\r\n\r\n const data = new FormData();\r\n data.append(file.name, file);\r\n\r\n this.loadQueryFromFileInput.value = \"\";\r\n\r\n this.context.uploadQueryFile({\r\n data: data,\r\n success: () => {\r\n this.syncQuery();\r\n this.refreshQueryList();\r\n }\r\n });\r\n }\r\n\r\n protected loadQueryButtonClick() { \r\n this.context.loadQueryList({\r\n success: (data) => {\r\n this.fillLoadQueryButtonMenu(data);\r\n this.queryListMenu.showMenu({\r\n anchor: this.loadQueryButton,\r\n adjustHeight: false,\r\n itemSelectedCallback: (data) => {\r\n this.checkIfQueryModified(() => this.loadQuery(data.id));\r\n }\r\n }); \r\n }\r\n });\r\n }\r\n\r\n private queryListMenu: PopupMenu = null;\r\n\r\n protected fillLoadQueryButtonMenu(queryList: any) {\r\n const query = this.getContext().getQuery();\r\n this.queryListMenu = new PopupMenu({\r\n items: queryList.map(item => ({ id: item.id, text: item.name })),\r\n selectedIds: query.getId()\r\n });\r\n }\r\n\r\n protected saveQueryButtonClick() {\r\n this.saveCurrentQuery();\r\n }\r\n\r\n protected copyQueryButtonClick() {\r\n this.saveCurrentQuery(true);\r\n }\r\n\r\n protected removeQueryButtonClick() {\r\n this.showRemoveQueryDialog((result) => {\r\n if (result) {\r\n this.removeCurrentQuery();\r\n }\r\n });\r\n }\r\n\r\n protected storageDropButtonClick() {\r\n let container = this.storageDropButton.parentElement;\r\n let content = container.querySelector(`.${this.dropdownContentClass}`);\r\n if (content) {\r\n window.setTimeout(() => content.classList.toggle(this.dropdownShowClass), 100);\r\n }\r\n }\r\n\r\n protected fetchDataButtonClick() {\r\n this.fetchData(); \r\n }\r\n\r\n\r\n public detach() {\r\n this.enableExportButtons();\r\n this.exportButtons.forEach((button) => {\r\n button.removeEventListener('click', this.exportButtonClickHandler);\r\n });\r\n this.exportButtons = [];\r\n\r\n if (this.fetchDataButton) {\r\n this.fetchDataButton.removeEventListener('click', this.fetchDataButtonClickHandler);\r\n this.fetchDataButton = null;\r\n }\r\n\r\n if (this.clearQueryButton) {\r\n this.clearQueryButton.removeEventListener('click', this.clearQueryButtonClickHandler);\r\n this.clearQueryButton = null;\r\n }\r\n\r\n if (this.newQueryButton) {\r\n this.newQueryButton.removeEventListener('click', this.newQueryButtonClickHandler);\r\n this.newQueryButton = null;\r\n }\r\n\r\n if (this.loadQueryButton) {\r\n this.loadQueryButton.removeEventListener('click', this.loadQueryButtonClickHandler);\r\n this.loadQueryButton = null;\r\n }\r\n\r\n if (this.saveQueryButton) {\r\n this.saveQueryButton.removeEventListener('click', this.saveQueryButtonClickHandler);\r\n this.saveQueryButton = null;\r\n }\r\n\r\n if (this.copyQueryButton) {\r\n this.copyQueryButton.removeEventListener('click', this.copyQueryButtonClickHandler);\r\n this.copyQueryButton = null;\r\n }\r\n\r\n if (this.removeQueryButton) {\r\n this.removeQueryButton.removeEventListener('click', this.removeQueryButtonClickHandler);\r\n this.removeQueryButton = null;\r\n }\r\n\r\n if (this.storageDropButton) {\r\n this.storageDropButton.removeEventListener('click', this.storageButtonClickHandler);\r\n this.storageDropButton = null;\r\n }\r\n\r\n if (this.saveQueryToFileButton) {\r\n this.saveQueryToFileButton.removeEventListener('click', this.saveQueryToFileButtonClickHandler);\r\n this.saveQueryToFileButton = null;\r\n }\r\n\r\n if (this.queryListPanel) {\r\n this.queryListPanel = null;\r\n }\r\n\r\n if (this.loadQueryFromFileButton) {\r\n if (this.loadQueryFromFileInput) {\r\n document.body.removeChild(this.loadQueryFromFileInput);\r\n }\r\n this.loadQueryFromFileButton.removeEventListener('click', this.loadQueryFromFileButtonClickHandler);\r\n this.loadQueryFromFileButton = null;\r\n }\r\n\r\n super.detach();\r\n }\r\n}\r\n","import { \r\n WidgetGroup, QueryChangeEventData, QueryChangePart \r\n} from '@easyquery/core';\r\n\r\nimport { EqViewOptions } from './view_options';\r\n\r\nimport { View } from './view';\r\n\r\n/**\r\n * The view that represents a data-filtering scenario (a text search for one entity/table)\r\n */\r\nexport class DataFilterView extends View {\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected initOptions(options?: EqViewOptions): EqViewOptions {\r\n options = super.initOptions(options);\r\n options.result.fetchEmptyQueries = true;\r\n\r\n const query = this.context.getQuery();\r\n query.addChangedCallback(() => {\r\n if (this.resultOptions.clearResultOnQueryChange){\r\n this.context.clearResult();\r\n }\r\n\r\n if (options.syncQueryOnChange) {\r\n this.context.syncQuery();\r\n }\r\n });\r\n\r\n this.context.addEventListener('ready', this.fetchData.bind(this));\r\n\r\n return options;\r\n }\r\n\r\n protected initWidgets(options?: EqViewOptions) {\r\n super.initWidgets(options);\r\n\r\n if (this.sortingBarWidget) {\r\n this.context.getQuery().addChangedCallback((ev) => {\r\n const edata = ev.data as QueryChangeEventData;\r\n if (!edata || (edata.part != QueryChangePart.SortingColumns \r\n && edata.part != QueryChangePart.Columns && edata.part != QueryChangePart.All)) {\r\n return;\r\n }\r\n this.fetchData();\r\n });\r\n }\r\n\r\n if (this.filterBarWidget) {\r\n const widgetType = this.filterBarWidget.getWidgetType();\r\n options.widgets[widgetType] = options.widgets[widgetType] || {};\r\n if (!options.widgets[widgetType].applyFilterCallback) {\r\n options.widgets[widgetType].applyFilterCallback = () => {\r\n this.fetchData();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Obsolete. Left for backward compatibility. \r\n * Use fetchData() instead\r\n * @deprecated Use `fetchData()`\r\n */\r\n public applyQueryFilter() {\r\n console.warn('applyQueryFilter is obsolete. Use fetchData instead');\r\n this.fetchData();\r\n }\r\n\r\n public fetchData() {\r\n super.fetchData({ refresh: true });\r\n }\r\n}","import { Widget } from \"@easyquery/core\"\r\nimport { EqHtmlGrid } from \"../widgets/eq_result_html_grid\" \r\nimport { DataFilterView } from \"./data_filter_view\";\r\n\r\n/**\r\n * The EasyQuery client-side view that represents the UI for data filtering page\r\n */\r\nexport class HtmlDataFilterView extends DataFilterView {\r\n constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n\t* Creates the widget that represents Grid Widget.\r\n * @param slot The HTMLElement to place the created widget in.\r\n * @returns the created Widget object.\r\n\t*/\r\n protected createResultGridWidget(element: HTMLElement): Widget {\r\n return new EqHtmlGrid(element);\r\n }\r\n\r\n /**\r\n * Obsolete. Left for backward compatibility. \r\n * Use fetchData() instead\r\n */\r\n public applyQueryFilter() {\r\n console.warn('applyQueryFilter is obsolete. Use fetchData instead');\r\n this.fetchData();\r\n }\r\n}\r\n","import {\r\n WidgetGroup, QueryChangePart, QueryChangeEventData\r\n} from '@easyquery/core';\r\nimport { i18n, utils as dataUtils } from '@easydata/core';\r\n\r\nimport { domel } from '@easydata/ui';\r\n\r\nimport { ReportViewOptions } from './view_options';\r\nimport { browserUtils } from '../utils/browser_utils';\r\n\r\nimport { View } from './view';\r\n\r\n/**\r\n * Represents single report in the view\r\n */\r\nexport interface Report {\r\n id: string,\r\n name?: string,\r\n description?: string,\r\n lastUpdated?: number\r\n} \r\n\r\nexport interface ReportCacheItem {\r\n id: string,\r\n lastUpdated?: number,\r\n content?: string\r\n}\r\n\r\n/**\r\n * The view that represents the \"ad-hoc reporting\" scenario\r\n */\r\nexport class ReportView extends View {\r\n private reports: Report[] = [];\r\n\r\n private reportCache: ReportCacheItem[] = [];\r\n\r\n //controls\r\n private newReportButton: HTMLElement;\r\n private loadReportButton: HTMLElement;\r\n private saveReportButton: HTMLElement;\r\n private reloadReportDataButton: HTMLElement;\r\n private removeReportButton: HTMLElement;\r\n private clearReportButton: HTMLElement;\r\n\r\n private reportListSlot: HTMLElement;\r\n\r\n private exportButtonsContainer: HTMLElement;\r\n private exportButtons: HTMLElement[] = [];\r\n private exportClass = \"eqjs-export\";\r\n private disabledClass = \"eqjs-disabled\";\r\n\r\n\r\n // handlers\r\n private exportButtonClickHandler: any;\r\n private clearReportButtonClickHandler: any;\r\n private newReportButtonClickHandler: any;\r\n private loadReportButtonClickHandler: any;\r\n private saveReportButtonClickHandler: any;\r\n private removeReportButtonClickHandler: any;\r\n private reloadReportDataButtonClickHandler: any;\r\n\r\n protected enableExport: boolean = false;\r\n\r\n private useReportCache: boolean = true;\r\n\r\n private syncReportOnChange: boolean = true;\r\n\r\n private defaultReportId?: string;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.context.useStoredQueryOnFetch = true;\r\n\r\n this.exportButtonClickHandler = (srcElement: HTMLElement, e) => {\r\n if (!srcElement.classList.contains(this.disabledClass)) {\r\n const format = srcElement.getAttribute(\"data-format\");\r\n this.context.exportResult({ format: format });\r\n }\r\n }\r\n\r\n this.clearReportButtonClickHandler = this.clearReportButtonClick.bind(this);\r\n this.newReportButtonClickHandler = this.newReportButtonClick.bind(this);\r\n this.loadReportButtonClickHandler = this.loadReportButtonClick.bind(this);\r\n this.saveReportButtonClickHandler = this.saveReportButtonClick.bind(this);\r\n this.removeReportButtonClickHandler = this.removeReportButtonClick.bind(this);\r\n this.reloadReportDataButtonClickHandler = this.reloadReportDataButtonClick.bind(this);\r\n\r\n browserUtils.onMobileModeChanged(_ => {\r\n document.location.reload();\r\n });\r\n }\r\n\r\n protected initOptions(options?: ReportViewOptions): ReportViewOptions {\r\n options = super.initOptions(options);\r\n\r\n if (typeof(options.syncQueryOnChange) !== \"undefined\") {\r\n this.syncReportOnChange = options.syncQueryOnChange;\r\n }\r\n\r\n if (typeof(options.syncReportOnChange) !== \"undefined\") {\r\n this.syncReportOnChange = options.syncReportOnChange;\r\n }\r\n\r\n options.syncQueryOnChange = this.syncReportOnChange;\r\n\r\n \r\n if (typeof (options.useReportCache) !== \"undefined\") {\r\n this.useReportCache = options.useReportCache;\r\n }\r\n\r\n this.defaultReportId = options.defaultReportId;\r\n return options;\r\n }\r\n\r\n protected initDone() {\r\n super.initDone();\r\n \r\n const query = this.context.getQuery();\r\n query.addChangedCallback((event) => {\r\n const eventData = event.data as QueryChangeEventData;\r\n\r\n if (eventData) {\r\n if (eventData.changeType == \"query.switched\") {\r\n this.context.clearResult();\r\n this.context.refreshWidgets(WidgetGroup.Result);\r\n this.context.refreshWidgets(WidgetGroup.Query);\r\n }\r\n else {\r\n this.disableExportButtons(); \r\n if (this.resultCountSlot) {\r\n this.resultCountSlot.style.display = \"none\";\r\n }\r\n }\r\n }\r\n\r\n //true if we just switched the report or changed facets (query was not changed)\r\n let isLiteUpdate = !eventData\r\n || eventData.changeType == \"query.switched\"\r\n || eventData.part == QueryChangePart.ExtraData\r\n || eventData.part == QueryChangePart.Facets;\r\n\r\n let syncStarted = false;\r\n\r\n if (this.syncReportOnChange) {\r\n const needSync = eventData && eventData.changeType != \"query.switched\" && !eventData.noSync; \r\n if (needSync) {\r\n syncStarted = true;\r\n this.syncReport({\r\n success: () => {\r\n // fetch data on query change\r\n if (!isLiteUpdate && this.viewOptions.fetchDataOnChange) { \r\n this.fetchData();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n // clear dataset result on query change\r\n if (!isLiteUpdate && this.resultOptions.clearResultOnQueryChange) { \r\n this.context.clearResult();\r\n this.context.refreshWidgets(WidgetGroup.Result);\r\n }\r\n\r\n if (!isLiteUpdate && !syncStarted && this.viewOptions.fetchDataOnChange) { \r\n this.fetchData();\r\n }\r\n });\r\n\r\n window.setTimeout(() => {\r\n this.context.loadQueryList({\r\n success: (data) => {\r\n if (Array.isArray(data)) {\r\n this.reports = data\r\n\r\n const exists = this.reports.filter(r => r.id == this.defaultReportId).length > 0;\r\n if (exists) {\r\n this.renderReportList({ reportId: this.defaultReportId });\r\n }\r\n else {\r\n this.renderReportList();\r\n }\r\n }\r\n }\r\n })\r\n }, 100);\r\n }\r\n\r\n protected initWidgets(options?: ReportViewOptions) {\r\n super.initWidgets(options);\r\n\r\n let clearReportButton: string | HTMLElement = \"ClearReportButton\";\r\n let newReportButton: string | HTMLElement = \"NewReportButton\";\r\n let loadReportButton: string | HTMLElement = \"LoadReportButton\";\r\n let saveReportButton: string | HTMLElement = \"SaveReportButton\";\r\n let removeReportButton: string | HTMLElement = \"RemoveReportButton\";\r\n let reloadReportDataButton: string | HTMLElement = \"ReloadReportDataButton\";\r\n\r\n let resultCountSpan: string | HTMLElement = \"ResultCount\";\r\n let exportButtons: string | HTMLElement = \"ResultExportButtons\";\r\n\r\n let exportClass = this.exportClass;\r\n\r\n if (options.slots) {\r\n resultCountSpan = options.slots.resultCountSpan || resultCountSpan;\r\n exportButtons = options.slots.exportButtons || exportButtons;\r\n \r\n clearReportButton = options.slots.clearReportButton || clearReportButton;\r\n newReportButton = options.slots.newReportButton || newReportButton;\r\n loadReportButton = options.slots.loadReportButton || loadReportButton;\r\n saveReportButton = options.slots.saveReportButton || saveReportButton;\r\n removeReportButton = options.slots.removeReportButton || removeReportButton;\r\n reloadReportDataButton = options.slots.reloadReportDataButton || reloadReportDataButton;\r\n exportClass = options.slots.exportClass || exportClass;\r\n }\r\n\r\n this.exportButtons = this.domRoots.reduce((elems, root) => \r\n elems.concat(Array.from(root.querySelectorAll(`.${exportClass}`))) ,[]);\r\n\r\n this.enableExport = options.enableExport;\r\n if (this.enableExport) {\r\n //Add event listener for export buttons\r\n this.exportButtons.forEach((button) => {\r\n button.addEventListener('click', this.exportButtonClickHandler);\r\n });\r\n \r\n }\r\n else {\r\n this.hideExportButtons();\r\n }\r\n this.exportButtonsContainer = this.resolveElement(exportButtons);\r\n\r\n if (!this.clearReportButton) {\r\n this.clearReportButton = this.resolveElement(clearReportButton);\r\n if (this.clearReportButton) {\r\n this.clearReportButton.addEventListener('click', this.clearReportButtonClickHandler);\r\n }\r\n }\r\n\r\n if (!this.newReportButton) {\r\n this.newReportButton = this.resolveElement(newReportButton);\r\n if (this.newReportButton) {\r\n this.newReportButton.addEventListener('click', this.newReportButtonClickHandler);\r\n } \r\n }\r\n \r\n if (!this.loadReportButton) {\r\n this.loadReportButton = this.resolveElement(loadReportButton);\r\n if (this.loadReportButton) {\r\n this.loadReportButton.addEventListener('click', this.loadReportButtonClickHandler);\r\n }\r\n }\r\n\r\n if (!this.saveReportButton) {\r\n this.saveReportButton = this.resolveElement(saveReportButton);\r\n if (this.saveReportButton) {\r\n this.saveReportButton.addEventListener('click', this.saveReportButtonClickHandler);\r\n }\r\n }\r\n\r\n if (!this.removeReportButton) {\r\n this.removeReportButton = this.resolveElement(removeReportButton);\r\n if (this.removeReportButton) {\r\n this.removeReportButton.addEventListener('click', this.removeReportButtonClickHandler);\r\n }\r\n }\r\n\r\n if (!this.reloadReportDataButton) {\r\n this.reloadReportDataButton = this.resolveElement(reloadReportDataButton);\r\n \r\n //OBSOLETE: remove the next 3 lines. We just support the old default button ID here\r\n if (!this.reloadReportDataButton) {\r\n this.reloadReportDataButton = this.resolveElement('UpdateReportButton'); \r\n }\r\n\r\n if (this.reloadReportDataButton) {\r\n this.reloadReportDataButton.addEventListener('click', this.reloadReportDataButtonClickHandler);\r\n }\r\n }\r\n\r\n this.reportListSlot = document.getElementById('ReportList');\r\n this.resultCountSlot = this.resolveElement(resultCountSpan);\r\n }\r\n\r\n private _reportSaveTemplate = `<div id=\"kdlg-dialog-form\" class=\"kfrm-form\">\r\n <div class=\"kfrm-fields label-above\">\r\n <label for=\"kdlg-dialog-form-input\" id=\"kdlg-dialog-form-content\"></label>\r\n <input type=\"text\" name=\"kdlg-dialog-form-input\" id=\"kdlg-dialog-form-input\" />\r\n <label for=\"kdlg-dialog-form-textarea\" id=\"kdlg-dialog-form-desc-label\"></label>\r\n <textarea type=\"text\" name=\"kdlg-dialog-form-textarea\" id=\"kdlg-dialog-form-textarea\"></textarea>\r\n </div>\r\n </div>`;\r\n\r\n\t/**\r\n\t* Creates a new report.\r\n\t*/\r\n public newReport() {\r\n const ds = this.context.getServices().getDialogService();\r\n const dlg = ds.open({\r\n title: i18n.getText('NewReportDlgTitle'),\r\n body: this._reportSaveTemplate,\r\n submitable: true,\r\n closable: true,\r\n cancelable: true,\r\n submitOnEnter: true,\r\n arrangeParents: false,\r\n beforeOpen: () => {\r\n const input = document.getElementById(`kdlg-dialog-form-input`) as HTMLInputElement;\r\n input.value = i18n.getText('NewReportDefName');\r\n const content = document.getElementById('kdlg-dialog-form-content');\r\n content.innerHTML = i18n.getText('SaveReportDlgLabel');\r\n const label = document.getElementById('kdlg-dialog-form-desc-label');\r\n label.innerHTML = i18n.getText('ReportDescLabel');\r\n input.focus();\r\n },\r\n onSubmit: () => {\r\n const nameInput = document.getElementById(`kdlg-dialog-form-input`) as HTMLInputElement;\r\n const queryName = nameInput.value;\r\n if (queryName && queryName.replace(/\\s/g, '').length > 0) {\r\n dlg.clearAlert();\r\n dlg.disableButtons();\r\n const header = dlg.getRootElement().querySelector<HTMLElement>('header');\r\n const processEl = domel('div', header)\r\n .addClass('eqjs-process-bar local')\r\n .toDOM();\r\n\r\n const descInput = document.getElementById(`kdlg-dialog-form-textarea`) as HTMLTextAreaElement;\r\n const queryDesc = descInput.value;\r\n\r\n this.context.newQuery({\r\n name: queryName,\r\n description: queryDesc,\r\n success: () => {\r\n dlg.close();\r\n\r\n const query = this.context.getQuery();\r\n const reportId = query.getId();\r\n\r\n this.insertIntoReportList({ id: reportId, name: query.getName(), description: query.getDescription() });\r\n this.renderReportList({ reportId: reportId });\r\n },\r\n error: (error) => {\r\n header.removeChild(processEl);\r\n dlg.enableButtons();\r\n\r\n dlg.showAlert(error, 'error');\r\n }\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n\t/**\r\n\t* Loads report by ID.\r\n * @param reportId The ID of the report to load.\r\n\t*/\r\n public loadReport(reportId: string) {\r\n if (!reportId) {\r\n throw 'Empty report ID!';\r\n }\r\n\r\n let reportToLoad = this.findReportById(reportId);\r\n if (!reportToLoad) return;\r\n\r\n const self = this;\r\n const query = self.context.getQuery();\r\n\r\n const reportLoaded = () => {\r\n this.renderReportProps();\r\n this.context.resultTable.clear();\r\n query.fireChangedEvent({ \r\n part : QueryChangePart.All,\r\n noSync: true,\r\n changeType: 'query.switched'\r\n });\r\n this.fetchData();\r\n }\r\n\r\n let reportContent = this.useReportCache ? this.getReportContentFromCache(reportToLoad) : null;\r\n if (reportContent) {\r\n query.clear();\r\n query.loadFromJson(reportContent, { validate: false });\r\n reportLoaded();\r\n }\r\n else {\r\n this.context.loadQuery({\r\n queryId: reportId,\r\n silent: true,\r\n success: () => {\r\n this.saveReportContentInCache(reportToLoad, query.toJSON());\r\n reportLoaded();\r\n }\r\n });\r\n }\r\n \r\n this.setActiveReport(reportId);\r\n }\r\n\r\n\t/**\r\n\t* Shows the dialog to save the report with new name.\r\n\t*/\r\n public saveCurrentReportAs() {\r\n const query = this.context.getQuery();\r\n const ds = this.context.getServices().getDialogService();\r\n const dlg = ds.open({\r\n title: i18n.getText('SaveReportDlgTitle'),\r\n body: this._reportSaveTemplate,\r\n submitable: true,\r\n closable: true,\r\n cancelable: true,\r\n submitOnEnter: true,\r\n arrangeParents: false,\r\n beforeOpen: () => {\r\n const input = document.getElementById(`kdlg-dialog-form-input`) as HTMLInputElement;\r\n input.value = query.getName();\r\n const content = document.getElementById('kdlg-dialog-form-content');\r\n content.innerHTML = i18n.getText('SaveReportDlgLabel');\r\n const label = document.getElementById('kdlg-dialog-form-desc-label');\r\n label.innerHTML = i18n.getText('ReportDescLabel');\r\n const text = document.getElementById(`kdlg-dialog-form-textarea`) as HTMLTextAreaElement;\r\n text.value = query.getDescription();\r\n input.focus();\r\n },\r\n onSubmit: () => {\r\n const input = document.getElementById(`kdlg-dialog-form-input`) as HTMLInputElement;\r\n const value = input.value;\r\n if (value && value.replace(/\\s/g, '').length > 0) {\r\n query.setId(\r\n dataUtils.generateId(\r\n value.replace(/\\s/g, '')));\r\n\r\n dlg.clearAlert();\r\n dlg.disableButtons();\r\n const header = dlg.getRootElement().querySelector<HTMLElement>('header');\r\n const processEl = domel('div', header)\r\n .addClass('eqjs-process-bar local')\r\n .toDOM();\r\n\r\n const text = document.getElementById(`kdlg-dialog-form-textarea`) as HTMLTextAreaElement;\r\n const desc = text.value;\r\n\r\n query.setDescription(desc);\r\n\r\n this.context.newQuery({\r\n clearQuery: false,\r\n name: value,\r\n success: () => {\r\n dlg.close();\r\n\r\n this.context.refreshWidgets(WidgetGroup.Query);\r\n\r\n const savedQuery = this.context.getQuery();\r\n\r\n const reportId = savedQuery.getId();\r\n this.fetchData();\r\n this.insertIntoReportList({ id: reportId, name: query.getName(), description: query.getDescription() });\r\n this.renderReportList({ reportId: reportId });\r\n this.setActiveReport(reportId);\r\n this.renderReportProps();\r\n },\r\n error: (error) => {\r\n header.removeChild(processEl);\r\n dlg.enableButtons();\r\n\r\n dlg.showAlert(error, 'error');\r\n }\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n\t/**\r\n\t* Removes current report.\r\n\t*/\r\n public removeCurrentReport() {\r\n const report = this.context.getQuery();\r\n const ds = this.context.getServices().getDialogService();\r\n ds.openConfirm(\r\n i18n.getText('RemoveReportDlgTitle'), \r\n i18n.getText('RemoveReportContent').replace('{reportName}',report.getName()))\r\n .then(result => {\r\n if (result) {\r\n const reportId = report.getId();\r\n this.context.removeQuery({\r\n queryId: reportId,\r\n success: () => {\r\n const index = this.removeFromReportList(reportId);\r\n this.renderReportList({ reportIndex: index });\r\n }\r\n });\r\n }\r\n })\r\n }\r\n\r\n\t/**\r\n\t* Sends current report's query to back-end.\r\n\t*/\r\n public syncReport(options?: any) {\r\n if (this.useReportCache) {\r\n const query = this.context.getQuery();\r\n\r\n const currentReport = this.findReportById(query.getId());\r\n if (currentReport) {\r\n currentReport.lastUpdated = Date.now();\r\n this.saveReportContentInCache(currentReport, query.toJSON()); \r\n }\r\n }\r\n \r\n this.context.syncQuery({\r\n success: (responseData) => {\r\n if (responseData.query) {\r\n this.context.refreshWidgets(WidgetGroup.Query);\r\n }\r\n \r\n if (responseData.statement) {\r\n this.context.refreshWidgets(WidgetGroup.Statement);\r\n }\r\n\r\n if (options && options.success) {\r\n options.success(responseData);\r\n }\r\n }\r\n });\r\n }\r\n\r\n\t/**\r\n\t* Sets active report.\r\n * @param reportId The ID of the report to make active.\r\n\t*/\r\n public setActiveReport(reportId: string) {\r\n let rlItems = this.reportListSlot.querySelectorAll('li');\r\n\r\n for (let i = 0; i < rlItems.length; i++) {\r\n const item: HTMLLIElement = rlItems[i]; \r\n item.classList.remove('active');\r\n\r\n const rid = item.getAttribute('data-rid');\r\n if (rid === reportId) {\r\n item.classList.add('active');\r\n }\r\n };\r\n }\r\n\r\n\t/**\r\n\t* Renders current report.\r\n\t*/\r\n public renderReportProps() { \r\n let query = this.context.getQuery();\r\n let titleElem = document.getElementById('ReportTitle');\r\n titleElem.innerHTML = query.getName();\r\n\r\n const columnsPanel = document.querySelector('.columns-bar') as HTMLElement;\r\n if (columnsPanel) {\r\n columnsPanel.innerHTML = '<strong>Columns:</strong>';\r\n let columns = query.getColumns();\r\n for (let column of columns) {\r\n columnsPanel.innerHTML += '<span class=\"label label-default\">' + column.caption + '</span> ';\r\n }\r\n } \r\n }\r\n\r\n\t/**\r\n\t* Renders the list of reports.\r\n * @param options The options. In particular, `options.reportIndex` defines which report should be active.\r\n\t*/\r\n public renderReportList(options?: any) {\r\n this.renderReportPanels();\r\n\r\n if (!this.reportListSlot.matches('li')) {\r\n this.reportListSlot.innerHTML = \"\";\r\n\r\n options = options || { reportId: (this.reports.length > 0 ? this.reports[0].id : null) };\r\n var ul = document.createElement('ul');\r\n ul.className = 'list-group list-group-flush';\r\n\r\n this.reportListSlot.appendChild(ul);\r\n\r\n for (let report of this.reports) {\r\n this.renderReportItemInList(report, ul);\r\n }\r\n\r\n if (options.reportId) {\r\n this.loadReport(options.reportId);\r\n }\r\n if (typeof (options.reportIndex) !== \"undefined\") {\r\n let idx = options.reportIndex;\r\n if (idx >= this.reports.length)\r\n idx = this.reports.length - 1;\r\n if (idx < 0 && this.reports.length > 0)\r\n idx = 0;\r\n if (idx >= 0)\r\n this.loadReport(this.reports[idx].id);\r\n }\r\n }\r\n }\r\n\r\n public detach() {\r\n if (this.exportButtonsContainer) {\r\n this.showExportButtons();\r\n this.exportButtons.forEach((button) => {\r\n button.removeEventListener('click', this.exportButtonClickHandler);\r\n });\r\n this.exportButtons = [];\r\n this.exportButtonsContainer = null;\r\n }\r\n\r\n if (this.clearReportButton) {\r\n this.clearReportButton.removeEventListener('click', this.clearReportButtonClickHandler);\r\n this.clearReportButton = null;\r\n }\r\n\r\n if (this.newReportButton) {\r\n this.newReportButton.removeEventListener('click', this.newReportButtonClickHandler);\r\n this.newReportButton = null;\r\n }\r\n\r\n if (this.loadReportButton) {\r\n this.loadReportButton.removeEventListener('click', this.loadReportButtonClickHandler);\r\n this.loadReportButton = null;\r\n }\r\n\r\n if (this.saveReportButton) {\r\n this.saveReportButton.addEventListener('click', this.saveReportButtonClickHandler);\r\n this.saveReportButton = null;\r\n }\r\n\r\n if (this.removeReportButton) {\r\n this.removeReportButton.removeEventListener('click', this.removeReportButtonClickHandler);\r\n this.removeReportButton = null;\r\n }\r\n\r\n if (this.reloadReportDataButton) {\r\n this.reloadReportDataButton.removeEventListener('click', this.reloadReportDataButtonClickHandler);\r\n this.removeReportButton = null;\r\n }\r\n\r\n if (this.reportListSlot) {\r\n this.reportListSlot.innerHTML = '';\r\n this.reportListSlot = null;\r\n }\r\n\r\n if (this.resultCountSlot) {\r\n this.resultCountSlot.innerHTML = '';\r\n this.resultCountSlot = null;\r\n }\r\n\r\n super.detach();\r\n }\r\n\r\n\t/**\r\n\t* Renders a single item in the list of reports.\r\n * @param report The [[Report]] object to render.\r\n * @param ul The [[HTMLUListElement]] to add the item to.\r\n\t*/\r\n protected renderReportItemInList(report: Report, ul: HTMLUListElement) {\r\n if (!ul) {\r\n ul = this.reportListSlot.querySelector(\"ul\") as HTMLUListElement; \r\n }\r\n\r\n let reportName = report.name || report.description || \"\";\r\n let li = document.createElement('li');\r\n li.className = \"list-group-item\";\r\n li.style.cursor = 'pointer';\r\n li.setAttribute('data-rid', report.id);\r\n li.innerText = reportName;\r\n\r\n if (report.description) {\r\n li.title = report.description;\r\n }\r\n\r\n li.addEventListener('click', (e: MouseEvent) => {\r\n const target = e.target as HTMLElement;\r\n const rid = target.getAttribute('data-rid');\r\n\r\n this.loadReport(rid);\r\n });\r\n\r\n ul.appendChild(li);\r\n }\r\n\r\n\t/**\r\n\t* Renders report panels.\r\n\t*/\r\n protected renderReportPanels() {\r\n const reportsContainer = document.getElementById(\"ReportsContainer\");\r\n const noReportPanel = document.getElementById(\"NoReportPanel\");\r\n\r\n if (this.reports.length > 0) {\r\n this.hideElement(noReportPanel);\r\n this.showElement(reportsContainer);\r\n } \r\n else {\r\n this.hideElement(reportsContainer);\r\n this.showElement(noReportPanel);\r\n }\r\n }\r\n\r\n\r\n //TODO: Move these two functions to @easydata/ui\r\n private hideElement(element: HTMLElement): void {\r\n if (element) {\r\n element.style.visibility = 'hidden';\r\n }\r\n }\r\n\r\n private showElement(element: HTMLElement): void {\r\n if (element) {\r\n element.style.removeProperty('visibility');\r\n }\r\n }\r\n \r\n\r\n\t/**\r\n\t* Inserts the report to the list of reports.\r\n * @param report The [[Report]] object to be inserted.\r\n\t*/\r\n protected insertIntoReportList(report: Report) {\r\n this.reports.push(report);\r\n }\r\n\r\n\t/**\r\n\t* Removes the report from the list of reports.\r\n * @param reportId The ID of the report to be removed.\r\n\t* @returns the index of removed report.\r\n\t*/\r\n protected removeFromReportList(reportId: string): number {\r\n let index = this.indexOfReportById(reportId);\r\n if (index >= 0)\r\n this.reports.splice(index, 1);\r\n\r\n return index;\r\n\r\n }\r\n\r\n private indexOfReportById(reportId: string): number {\r\n for (let i = 0; i < this.reports.length; i++) {\r\n if (this.reports[i].id === reportId)\r\n return i;\r\n }\r\n return -1;\r\n }\r\n\r\n\t/**\r\n\t* The handler of the \"Clear\" button click.\r\n\t*/\r\n protected clearReportButtonClick() {\r\n this.clearErrors();\r\n this.context.clearQuery();\r\n }\r\n\r\n\t/**\r\n\t* The handler of the \"Update\" button click.\r\n\t*/\r\n protected reloadReportDataButtonClick() {\r\n this.fetchData();\r\n }\r\n\r\n\t/**\r\n\t* The handler of the \"Save\" button click.\r\n\t*/\r\n protected saveReportButtonClick() {\r\n this.saveCurrentReportAs();\r\n }\r\n\r\n\t/**\r\n\t* The handler of the \"Load\" button click.\r\n\t*/\r\n protected loadReportButtonClick() {\r\n this.loadReport(\"LastQuery\");\r\n }\r\n\r\n\t/**\r\n\t* The handler of the \"Remove\" button click.\r\n\t*/\r\n protected removeReportButtonClick() {\r\n this.removeCurrentReport();\r\n }\r\n\r\n\t/**\r\n\t* The handler of the \"New\" button click.\r\n\t*/\r\n protected newReportButtonClick() {\r\n this.newReport();\r\n }\r\n\r\n\t/**\r\n\t* The handler of errors.\r\n * @param error The error object.\r\n\t*/\r\n protected errorHandler(error) {\r\n\r\n }\r\n\r\n\t/**\r\n\t* Clears the errors.\r\n\t*/\r\n protected clearErrors() {\r\n\r\n }\r\n\r\n\t/**\r\n\t* Disables export buttons.\r\n\t*/\r\n protected disableExportButtons() {\r\n this.hideExportButtons();\r\n }\r\n\r\n\t/**\r\n\t* Enables export buttons.\r\n\t*/\r\n protected enableExportButtons() {\r\n this.showExportButtons();\r\n }\r\n\r\n\t/**\r\n\t* Hides export buttons.\r\n\t*/\r\n protected hideExportButtons() {\r\n if (this.exportButtonsContainer) {\r\n this.exportButtonsContainer.style.display = \"none\"; \r\n }\r\n }\r\n\r\n\t/**\r\n\t* Shows export buttons.\r\n\t*/\r\n protected showExportButtons() {\r\n if (this.exportButtonsContainer) {\r\n this.exportButtonsContainer.style.display = \"initial\"; \r\n }\r\n }\r\n\r\n /**\r\n * Saves reports content to the cache.\r\n * @param report The report.\r\n * @param content The content (Query serialized into JSON).\r\n */\r\n protected saveReportContentInCache(report: Report, content: string) {\r\n let item = this.findReportCacheItem(report.id);\r\n if (!item) {\r\n item = { id: report.id };\r\n\r\n this.reportCache.push(item);\r\n }\r\n\r\n item.lastUpdated = report.lastUpdated;\r\n item.content = content;\r\n }\r\n\r\n /**\r\n * Gets the report content from cache.\r\n * @param report The report.\r\n * @returns Content of the report (Query in JSOn string)\r\n */\r\n protected getReportContentFromCache(report: Report): string | null {\r\n let item = this.findReportCacheItem(report.id);\r\n if (item && item.lastUpdated === report.lastUpdated) {\r\n return item.content;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private findReportById(id: string):Report | null {\r\n for(let item of this.reports) {\r\n if (item.id === id) {\r\n return item;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private findReportCacheItem(id: string):ReportCacheItem | null {\r\n for(let item of this.reportCache) {\r\n if (item.id === id) {\r\n return item;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}","import { i18n } from '@easydata/core'\r\n\r\nfunction addOldEasyQueryUIMapper() {\r\n i18n.addMapper((info: i18n.LocaleInfo) => {\r\n if (!info && !info.texts)\r\n return;\r\n\r\n for (let prop in info.texts) {\r\n switch(prop) {\r\n case 'PredicateTitle':\r\n info.texts['ConditionGroupTitle'] = info.texts[prop];\r\n break;\r\n case 'RootPredicateTitle':\r\n info.texts['RootConditionGroupTitle'] = info.texts[prop];\r\n break;\r\n case 'ErrIncorrectPredicateTitleFormat':\r\n info.texts['ErrIncorrectGroupTitleFormat'] = info.texts[prop];\r\n break;\r\n case 'ButtonAddPredicate':\r\n info.texts['ButtonAddGroup'] = info.texts[prop];\r\n break;\r\n case 'ButtonDelete':\r\n info.texts['CmdDelete'] = info.texts[prop];\r\n break; \r\n case 'ButtonClear':\r\n info.texts['CmdClear'] = info.texts[prop];\r\n break;\r\n case 'ButtonEnable':\r\n info.texts['CmdToggleEnable'] = info.texts[prop];\r\n break; \r\n case 'ButtonAddCondition':\r\n info.texts['CmdAddCondition'] = info.texts[prop];\r\n break; \r\n case 'ButtonAddGroup':\r\n info.texts['CmdAddCondGroup'] = info.texts[prop];\r\n break; \r\n \r\n default:\r\n //do nothing\r\n break;\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction addEasyQueryUITexts() {\r\n i18n.updateDefaultTexts({\r\n AltMenuAttribute: 'Attribute',\r\n AltMenuConstantExpression: 'Constant expression',\r\n ButtonApply: 'Apply',\r\n ButtonCancel: 'Cancel',\r\n ButtonClose: 'Close',\r\n ButtonNext: 'Next',\r\n ButtonPrev: 'Prev',\r\n ButtonNow: 'Now',\r\n ButtonOK: 'OK',\r\n\r\n MenuEnable: 'Enabled',\r\n MenuParameterization: 'Parameterized',\r\n MenuJoinCond: 'Use in JOIN',\r\n \r\n CmdClear: 'Clear',\r\n CmdDelete: 'Delete',\r\n CmdToggleEnable: 'Toggle enable',\r\n CmdToggleEnableCustom: 'Custom Expression columns are not supported',\r\n\r\n CmdAddCondition: 'Add condition',\r\n CmdAddCondGroup: 'Add group of conditions',\r\n\r\n ButtonSelectAll: 'Select all',\r\n ButtonDeselectAll: 'Clear selection',\r\n ButtonAddColumns: 'Add column(s)',\r\n ButtonAddConditions: 'Add condition(s)',\r\n\r\n CmdClickToAddCondition: '[Add new condition]',\r\n CmdDeleteRow: 'Delete this row',\r\n ErrIncorrectGroupTitleFormat: 'Incorrect condition group title format',\r\n ErrNotNumber: ' is not a number',\r\n ErrIncorrectInteger: 'Incorrect integer value',\r\n ErrIncorrectNumberList: 'Incorrect list format',\r\n False: 'False',\r\n LinkTypeAll: 'all',\r\n LinkTypeAny: 'any',\r\n LinkTypeNone: 'none',\r\n LinkTypeNotAll: 'not all',\r\n ConjAll: 'and',\r\n ConjAny: 'or',\r\n ConjNotAll: 'and',\r\n ConjNone: 'or',\r\n MsgApplySelection: '[Apply selection]',\r\n MsgAs: 'as',\r\n MsgEmptyList: '(empty list)',\r\n MsgEmptyListValue: '[select value]',\r\n MsgEmptyScalarValue: '[enter value]',\r\n MsgSubQueryValue: '[edit sub-query]',\r\n MsgEmptyAttrValue: '[select attribute]',\r\n MsgEmptyOperator: '[Unrecognized operator]',\r\n MsgEmptyCustomSql: '[enter SQL expression]',\r\n MsgCustomSql: '[Custom SQL]',\r\n MsgNoResult: 'No result',\r\n MsgResultCount: '{0} records found',\r\n\r\n MsgOf: 'of',\r\n ConditionGroupTitle: '{lt} of the following apply',\r\n RootConditionGroupTitle: 'Select records where {lt} of the following apply',\r\n StrAddConditions: 'Add conditions',\r\n SubQueryDialogTitle: 'Edit sub-query',\r\n SubQueryColumnTitle: 'Column:',\r\n SubQueryEmptyColumn: '[select column]',\r\n SubQueryQueryPanelCaption: 'Conditions',\r\n True: 'True',\r\n\r\n ButtonSorting: 'Sorting',\r\n ButtonToAggr: 'Change to aggregate column',\r\n ButtonToSimple: 'Change to simple column',\r\n ButtonFormat: 'Display format',\r\n CmdAscending: 'Ascending',\r\n CmdClickToAddColumn: '[Add new column]',\r\n CmdDeleteColumn: 'Delete column',\r\n CmdDeleteSorting: 'Delete sorting',\r\n CmdDescending: 'Descending',\r\n CmdGroupSort: 'Sorting',\r\n CmdGroupFormat: 'Display format',\r\n CmdNotSorted: 'Not sorted',\r\n ColTypeAggrFunc: 'Aggregate function',\r\n ColTypeCompound: 'Calculated',\r\n ColTypeGroup: 'Column type',\r\n ColTypeSimple: 'Simple column',\r\n HeaderExpression: 'Expression',\r\n HeaderSorting: 'Sorting',\r\n HeaderTitle: 'Title',\r\n SortHeaderColumn: 'Column',\r\n SortHeaderSorting: 'Sorting',\r\n StrAddColumns: 'Add columns',\r\n CustomExpression: 'Custom Expression',\r\n AddAllForEntityText: '[Add all attributes]',\r\n\r\n CmdMoveToStart: 'Move to start',\r\n CmdMoveRight: 'Move right',\r\n CmdMoveLeft: 'Move left',\r\n CmdMoveToEnd: 'Move to the end',\r\n CmdMoveUp: 'Move up',\r\n CmdMoveDown: 'Move down',\r\n\r\n ButtonMenu: 'Show menu',\r\n CmdToSimple: 'Not aggregated',\r\n\r\n CmdMoveToFirst: 'Move to the first',\r\n CmdMoveToPrev: 'Move to the previous',\r\n CmdMoveToNext: 'Move to the next',\r\n CmdMoveToLast: 'Move to the last',\r\n\r\n CmdHiddenColumn: 'Hidden',\r\n\r\n RowButtonTitle: 'Click to see the available options',\r\n\r\n EntityToggle: 'Toggle entity',\r\n\r\n //FilterBar\r\n StrNoFilterDefined: 'No filter defined',\r\n StrNoFilterClickToAdd: 'No filter defined. Click to add a new condition',\r\n\r\n //Time picker\r\n HintHours: 'Hours',\r\n HintMinutes: 'Minutes',\r\n\r\n //advanced search view texts\r\n RemoveQueryTitle: 'Confirmation',\r\n RemoveQueryContent: 'Remove query [{queryName}]?',\r\n NewQueryTitle: 'New query',\r\n NewQueryContent: 'New query name: ',\r\n NewQueryDefName: 'New query',\r\n SaveQueryTitle: 'Save query',\r\n SaveQueryContent: 'Query name: ',\r\n SaveQueryDefName: '{queryName} copy',\r\n QueryChangedTitle: 'Confirmation',\r\n QueryChangedContent: 'The query was changed. Do you want to save it first?',\r\n UpdateQuerySelector: '[click here to load the query]',\r\n FileNameLabel: 'File name: ',\r\n SaveQueryToFileDlgTitle: 'Save query to file',\r\n\r\n //report view texts\r\n NewReportDefName: 'New report',\r\n NewReportDlgTitle: 'New report',\r\n SaveReportDlgTitle: 'Save report',\r\n SaveReportDlgLabel: 'Report name:',\r\n ReportDescLabel: 'Description: ',\r\n RemoveReportDlgTitle: 'Remove report',\r\n RemoveReportContent: 'Are you sure you want to remove \\'{reportName}\\'?',\r\n\r\n //facets\r\n Facets: {\r\n TotalRecordsLabel: 'Total records:',\r\n AddMenuItems: {\r\n Chart: 'Chart',\r\n Pivot: 'Pivot table',\r\n DataTable: 'Data table'\r\n },\r\n LoadDataDlgTitle: 'Downloading data',\r\n LoadDataDlgContent: 'Records loaded: {loadedRecs}/{totalRecs}',\r\n RefreshBtnTitle: 'Refresh',\r\n ExportBtnTitle: 'Export',\r\n MaximizeBtnTitle: 'Maximize',\r\n RestoreBtnTitle: 'Restore Down',\r\n RemoveFacetDlgTitle: 'Remove facet',\r\n RemoveFacetDlgContent: `Are you sure, that you want to delete {facetTitle} tab?`,\r\n DefaultDlgTitle: 'Setup facet',\r\n DefaultFacetTitle: '',\r\n NewFacetTitle: 'New Facet',\r\n TabNameLabel: 'Tab name',\r\n ErrQueryChanged: 'FAILED TO DISPLAY. QUERY WAS CHANGED',\r\n ErrNotEnoughData: `We can't display the graph because not all data for this query is loaded. \r\n The total number of records: {totalRecs}, currently loaded: {cachedRecs}. \r\n You can [download the result]. Please note: this may take some time and consume a lot of memory.`,\r\n ErrTooMuchData: 'Too much data. The grid is not able to display it',\r\n Chart: {\r\n FacetTitle: 'Chart',\r\n DlgTitle: 'Chart settings',\r\n DataColumnSelectorLabel: 'Data column',\r\n LabelColumnSelectorLabel: 'Label column',\r\n ChartTypeSelectorLabel: 'Chart type',\r\n ShowLegendLabel: 'Show legend (if available)'\r\n },\r\n Pivot: {\r\n FacetTitle: 'Pivot table',\r\n DlgTitle: 'Pivot settings',\r\n SwapBtnTitle: 'Swap column and row fields',\r\n ColumnFieldSelectorLabel: 'Column field',\r\n RowFieldSelectorLabel: 'Row field',\r\n CellDataSelectorLabel: 'Cell data',\r\n TotalsRowLabel: 'Totals row',\r\n TotalsColLabel: 'Totals column',\r\n TotalGridLabel: 'Total'\r\n },\r\n DataTable: {\r\n FacetTitle: 'Result table',\r\n DlgTitle: 'Table facet settings'\r\n }\r\n },\r\n TotalsDlgLabel: 'Totals',\r\n GrandTotalsLabel: 'Grand totals',\r\n TotalsDlgTitle: 'Select totals',\r\n //formats\r\n ExportDlgTitle: 'Export result',\r\n ExportDlgFmtLabel: 'Format',\r\n 'csv': 'CSV',\r\n 'excel': 'Excel',\r\n 'pdf': 'PDF',\r\n 'excel-html': 'HTML (Excel-compatible)',\r\n \r\n // Aggregation settings\r\n AggrSettings: {\r\n GroupBtn: 'Group selected column(s)',\r\n UngroupBtn: 'Ungroup columns',\r\n AggrBtn: 'Aggregate selected column',\r\n UnaggrBtn: 'Remove column aggregation',\r\n GrandTotalsLabel: 'Show grand totals',\r\n GroupCountsLabel: 'Show record count for groups',\r\n AggrDialogTitle: 'Aggregation/grouping',\r\n EnableAggrLabel: 'Enable aggregation',\r\n SelectedError: 'Complete the action with selected column(s)',\r\n NoGroupsOrAggrError: 'Add at least one group or aggregation',\r\n NoGroupsOrGrandError: 'Add at least one group, or enable grand totals',\r\n NoAggrOrCountError: 'Add at least one aggregation, or enable records count',\r\n\r\n NoGroupsLabel: 'No groups',\r\n NoAggrsLabel: 'No aggregations',\r\n EmptySettingsLabel: '[ Click to setup ]'\r\n },\r\n\r\n ChartType: {\r\n Area: 'Area chart',\r\n Bar: 'Bar chart',\r\n Column: 'Column chart',\r\n Combo: 'Combo chart',\r\n Doughnut: 'Doughnut chart',\r\n Polar: 'Polar chart',\r\n Radar: 'Radar chart',\r\n Histogram: 'Histogram chart',\r\n Line: 'Line chart',\r\n SteppedLine: 'Stepped line chart',\r\n Pie: 'Pie chart'\r\n }\r\n });\r\n}\r\n\r\naddOldEasyQueryUIMapper();\r\naddEasyQueryUITexts();","import { EqServiceProvider } from '@easyquery/core';\r\n\r\nimport { DialogService } from '@easydata/ui';\r\n\r\ndeclare module '@easyquery/core/dist/lib/common/eq_services' {\r\n interface EqServiceProvider {\r\n registerDialogServiceResolver(this: EqServiceProvider, resolver: () => DialogService);\r\n getDialogService(this: EqServiceProvider): DialogService;\r\n }\r\n}\r\n\r\nEqServiceProvider.prototype.registerDialogServiceResolver = function (this: EqServiceProvider, resolver: () => DialogService) {\r\n this['dialogServiceResolver'] = resolver;\r\n}\r\n\r\nEqServiceProvider.prototype.getDialogService = function (this: EqServiceProvider) {\r\n if (!this['dialogService']) {\r\n if (!this['dialogServiceResolver']) {\r\n throw 'DialogServiceResolver is not defined';\r\n }\r\n this['dialogService'] = this['dialogServiceResolver']();\r\n }\r\n\r\n return this['dialogService'];\r\n}","export * from './widgets/entities_panel'\r\nexport * from './widgets/columns_panel'\r\nexport * from './widgets/columns_bar'\r\nexport * from './widgets/sorting_bar'\r\nexport * from './widgets/query_panel'\r\nexport * from './widgets/filter_bar'\r\nexport * from './widgets/html_content_widget'\r\nexport * from './widgets/eq_result_html_grid'\r\nexport * from './widgets/grid'\r\nexport * from './widgets/easy_grid_widget'\r\nexport * from './widgets/statement_panel'\r\nexport * from './widgets/widget_options'\r\nexport * from './widgets/process_widget'\r\nexport * from './widgets/manage_drilldown_widget'\r\nexport * from './widgets/result_facets_panel'\r\nexport * from './widgets/export_widget'\r\nexport * from './widgets/aggregation_bar'\r\n\r\nexport * from './widgets/charts/chart_type'\r\nexport * from './widgets/charts/chart_widget'\r\nexport * from './widgets/charts/chart_widget_google'\r\nexport * from './widgets/charts/chart_widget_chartjs'\r\n\r\nexport * from './widgets/renderers/base_element_renderer'\r\nexport * from './widgets/renderers/dropdown_renderer'\r\n\r\nexport * from './widgets/renderers/aggr_settings/aggr_settings_renderer'\r\nexport * from './widgets/renderers/columnsbar/aggrfunc_column_renderer_cb'\r\nexport * from './widgets/renderers/columnsbar/attr_column_renderer_cb'\r\nexport * from './widgets/renderers/columnsbar/column_renderer_cb'\r\n\r\nexport * from './widgets/renderers/columnspanel/aggrfunc_column_renderer_cp'\r\nexport * from './widgets/renderers/columnspanel/attr_column_renderer_cp'\r\nexport * from './widgets/renderers/columnspanel/column_renderer_cp'\r\nexport * from './widgets/renderers/columnspanel/editable_column_renderer_cp'\r\n\r\nexport * from './widgets/renderers/querypanel/input_expression_renderer'\r\nexport * from './widgets/renderers/querypanel/datetime_expression_render'\r\nexport * from './widgets/renderers/querypanel/condition_renderer'\r\nexport * from './widgets/renderers/querypanel/condition_group_renderer'\r\nexport * from './widgets/renderers/querypanel/attribute_expression_renderer'\r\nexport * from './widgets/renderers/querypanel/expression_renderer'\r\nexport * from './widgets/renderers/querypanel/operator_renderer'\r\nexport * from './widgets/renderers/querypanel/subquery_expression_renderer'\r\nexport * from './widgets/renderers/querypanel/list_expression_renderer'\r\nexport * from './widgets/renderers/querypanel/text_renderer'\r\nexport * from './widgets/renderers/querypanel/addrow_renderer'\r\n\r\nexport * from './facets/result_facet'\r\nexport * from './facets/datatable_facet'\r\nexport * from './facets/chart_facet'\r\nexport * from './facets/pivot_table_facet'\r\n\r\nexport * from './views/view_options'\r\nexport * from './views/view'\r\nexport * from './views/adv_search_view'\r\nexport * from './views/data_filter_view'\r\nexport * from './views/html_data_filter_view'\r\nexport * from './views/report_view'\r\n\r\nexport * from './utils/dropdown'\r\nexport * from './utils/popup_menu'\r\nexport * from './utils/browser_utils'\r\n\r\nexport * from './types/qp_editable_part'\r\nexport * from './types/facet_type'\r\n\r\nexport * from './dialog/export_dialog'\r\nexport * from './dialog/aggr_settings_dialog'\r\n\r\nimport './i18n/text_resources'\r\nimport './extensions'\r\n\r\nif (!Element.prototype.matches) {\r\n Element.prototype.matches = \r\n (Element.prototype as any).msMatchesSelector \r\n || (Element.prototype as any).webkitMatchesSelector;\r\n}\r\n// support NodeList forEach in IE11\r\nif (window['NodeList'] && !window['NodeList'].prototype.forEach) {\r\n window['NodeList'].prototype.forEach = Array.prototype.forEach as any;\r\n}\r\n\r\n//find index in IE11\r\nif (!Array.prototype.findIndex) {\r\n Array.prototype.findIndex = function (predicate) {\r\n if (this == null) {\r\n throw new TypeError('Array.prototype.findIndex called on null or undefined');\r\n }\r\n if (typeof predicate !== 'function') {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n var list = Object(this);\r\n var length = list.length >>> 0;\r\n var thisArg = arguments[1];\r\n var value;\r\n\r\n for (var i = 0; i < length; i++) {\r\n value = list[i];\r\n if (predicate.call(thisArg, value, i, list)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n}"],"names":[],"sourceRoot":""}
|