From 967ac6902b8b4029777c06b57554a1f9b6fc22cc Mon Sep 17 00:00:00 2001 From: Tristan Cavelier <tristan.cavelier@nexedi.com> Date: Thu, 14 Feb 2019 15:00:26 +0000 Subject: [PATCH] [erp5_web_renderjs_ui] allow filter editor to select searched unknown column ids - local_roles: ( Assignee OR Assignor ) AND other_unknown_id: value [All criterions (AND)_______ v] [-][local_roles_____________ v] -> |Type | -. [Equal to (at least one)_ v] |Modification Date| : [Assignee________________ ] |Title | : [Assignor________________ ] |Reference | : [________________________ ] |Description | : search_column_list |State | : [-][other_unknown_id________ v] |Searchable Text | : [Equal to________________ v] |Search Expression| -' [value___________________ ] |local_roles | -. |other_unknown_id | -' additional_search_column_list --- .../rjs_gadget_erp5_searcheditor_js.js | 41 +++++++++++++++---- .../rjs_gadget_erp5_searcheditor_js.xml | 4 +- .../testFilterMultiValuedOperator.zpt | 6 +-- .../testFilterUnknownDomain.zpt | 2 +- .../testFilterUnknownKey.zpt | 8 +++- 5 files changed, 44 insertions(+), 17 deletions(-) diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searcheditor_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searcheditor_js.js index e011b6dad1..a29a852309 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searcheditor_js.js +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searcheditor_js.js @@ -427,7 +427,16 @@ sub_jio_query_detail_dict, search_column_list = [], search_column_dict = {}, - search_domain_dict = {}; + search_domain_dict = {}, + additional_search_column_list = [], + additional_search_column_dict = {}; + + function addAdditionalSearchColumn(key, prefixed_key, title) { + if (additional_search_column_dict.hasOwnProperty(key)) { return false; } + additional_search_column_dict[key] = true; + additional_search_column_list.push([prefixed_key, title]); + return true; + } len = options.search_column_list.length; for (i = 0; i < len; i += 1) { @@ -477,9 +486,15 @@ operator: jio_query.operator }); } else { + addAdditionalSearchColumn( + jio_query.key, + PREFIX_COLUMN + jio_query.key, + jio_query.key + ); query_list.push({ - key: PREFIX_RAW, - value: Query.objectToSearchText(jio_query) + key: PREFIX_COLUMN + jio_query.key, + value: jio_query.value, + operator: jio_query.operator }); } } else { @@ -520,9 +535,15 @@ operator: sub_jio_query.operator }); } else { + addAdditionalSearchColumn( + sub_jio_query.key, + PREFIX_COLUMN + sub_jio_query.key, + sub_jio_query.key + ); query_list.push({ - key: PREFIX_RAW, - value: Query.objectToSearchText(sub_jio_query) + key: PREFIX_COLUMN + sub_jio_query.key, + value: sub_jio_query.value, + operator: sub_jio_query.operator }); } } else { @@ -535,8 +556,12 @@ sub_jio_query_dict = sub_jio_query.toJSON(); sub_jio_query_detail_dict = detectAtleastoneexactmatchComplexQuery(sub_jio_query_dict); - if (sub_jio_query_detail_dict && - search_column_dict.hasOwnProperty(sub_jio_query_detail_dict.key)) { + if (sub_jio_query_detail_dict) { + addAdditionalSearchColumn( + sub_jio_query_detail_dict.key, + PREFIX_COLUMN + sub_jio_query_detail_dict.key, + sub_jio_query_detail_dict.key + ); querySetKeyInDeep( sub_jio_query_dict, PREFIX_COLUMN + sub_jio_query_detail_dict.key @@ -559,7 +584,7 @@ } return this.changeState({ - search_column_list: search_column_list, + search_column_list: search_column_list.concat(additional_search_column_list), begin_from_key: options.begin_from, // [{key: 'title', value: 'Foo', operator: 'like'}] query_list: query_list, diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searcheditor_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searcheditor_js.xml index e6c9c78be5..5be3869467 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searcheditor_js.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searcheditor_js.xml @@ -228,7 +228,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>973.42226.24018.7099</string> </value> + <value> <string>974.50067.21616.14233</string> </value> </item> <item> <key> <string>state</string> </key> @@ -246,7 +246,7 @@ </tuple> <state> <tuple> - <float>1550070921.26</float> + <float>1554214739.75</float> <string>UTC</string> </tuple> </state> diff --git a/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_listbox_zuite/testFilterMultiValuedOperator.zpt b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_listbox_zuite/testFilterMultiValuedOperator.zpt index ee65a0875f..fbcba274ca 100644 --- a/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_listbox_zuite/testFilterMultiValuedOperator.zpt +++ b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_listbox_zuite/testFilterMultiValuedOperator.zpt @@ -42,11 +42,7 @@ <td>${base_url}/web_site_module/renderjs_runner/#/bar_module</td> <td></td> </tr> -<tr> - <td>waitForElementPresent</td> - <td>//a[@data-i18n='Previous']</td> - <td></td> -</tr> +<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_listbox_loaded" /> <!-- Prepare panel with a multi-valued operator --> <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/triggle_filter_and" /> diff --git a/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_listbox_zuite/testFilterUnknownDomain.zpt b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_listbox_zuite/testFilterUnknownDomain.zpt index cca3bcfa18..1e5f4a7d8e 100644 --- a/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_listbox_zuite/testFilterUnknownDomain.zpt +++ b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_listbox_zuite/testFilterUnknownDomain.zpt @@ -50,7 +50,7 @@ <!-- Open the panel and submit it. Check that the new query string is not to much changed --> <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/triggle_filter_and" /> -<tal:block tal:define="filter_section_configuration python: {'key': 'RAW', 'value': 'selection_domain_bar_domain: "a"', 'index': 0}"> +<tal:block tal:define="filter_section_configuration python: {'key': 'COLUMN_selection_domain_bar_domain', 'value': 'a', 'index': 0}"> <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/check_filter_section" /> </tal:block> <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/submit_filter" /> diff --git a/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_listbox_zuite/testFilterUnknownKey.zpt b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_listbox_zuite/testFilterUnknownKey.zpt index 89b62bc203..c793632679 100644 --- a/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_listbox_zuite/testFilterUnknownKey.zpt +++ b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_listbox_zuite/testFilterUnknownKey.zpt @@ -50,7 +50,7 @@ <!-- Open the panel and submit it. Check that the new query string is not to much changed --> <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/triggle_filter_and" /> -<tal:block tal:define="filter_section_configuration python: {'key': 'RAW', 'value': 'foo: "31085"', 'index': 0}"> +<tal:block tal:define="filter_section_configuration python: {'key': 'COLUMN_foo', 'value': '31085', 'index': 0}"> <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/check_filter_section" /> </tal:block> <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/submit_filter" /> @@ -100,6 +100,12 @@ <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/triggle_filter_and" /> +<tal:block tal:define="filter_section_configuration python: {'key': 'COLUMN_bar', 'value': '31084', 'index': 0}"> + <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/check_filter_section" /> +</tal:block> +<tal:block tal:define="filter_section_configuration python: {'key': 'COLUMN_foo', 'value': ['31085', '31086'], 'index': 1}"> + <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/check_filter_section" /> +</tal:block> <tal:block tal:define="filter_section_configuration python: {'index': 1}"> <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/remove_filter_section" /> </tal:block> -- 2.30.9