From 46cadaa9c1501d599d4a45118ebfa0cf37d6a45b Mon Sep 17 00:00:00 2001 From: Jaime Pajuelo Date: Tue, 18 Oct 2016 16:56:56 +0200 Subject: [PATCH] Support for searching components using their endpoints --- src/wirecloud/catalogue/searchers.py | 8 ++++ .../static/js/wirecloud/ui/MACSearch.js | 4 ++ ...ecloud_TestOperator_FriendcodeList_2.1.zip | Bin 0 -> 40335 bytes .../Wirecloud_Test_FriendcodeList_3.1.wgt | Bin 0 -> 40212 bytes src/wirecloud/commons/utils/remote.py | 6 ++- .../static/js/wirecloud/ui/WiringEditor.js | 28 ++++++++++++ src/wirecloud/platform/wiring/tests.py | 42 ++++++++++++++++++ 7 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 src/wirecloud/commons/test-data/Wirecloud_TestOperator_FriendcodeList_2.1.zip create mode 100644 src/wirecloud/commons/test-data/Wirecloud_Test_FriendcodeList_3.1.wgt diff --git a/src/wirecloud/catalogue/searchers.py b/src/wirecloud/catalogue/searchers.py index 62a0d18bbc..774c89a3cb 100644 --- a/src/wirecloud/catalogue/searchers.py +++ b/src/wirecloud/catalogue/searchers.py @@ -52,6 +52,8 @@ class CatalogueResourceSchema(fields.SchemaClass): users = fields.KEYWORD(commas=True) groups = fields.KEYWORD(commas=True) content = fields.NGRAMWORDS() + input_friendcodes = fields.KEYWORD() + output_friendcodes = fields.KEYWORD() class CatalogueResourceSearcher(BaseSearcher): @@ -66,12 +68,16 @@ def build_compatible_fields(self, resource): resource_info = resource.get_processed_info(process_urls=False) endpoint_descriptions = '' + input_friendcodes = [] + output_friendcodes = [] for endpoint in resource_info['wiring']['inputs']: endpoint_descriptions += endpoint['description'] + ' ' + input_friendcodes.extend(endpoint['friendcode'].split(' ')) for endpoint in resource_info['wiring']['outputs']: endpoint_descriptions += endpoint['description'] + ' ' + output_friendcodes.extend(endpoint['friendcode'].split(' ')) fields = { 'pk': '%s' % resource.pk, @@ -90,6 +96,8 @@ def build_compatible_fields(self, resource): 'smartphoneimage': resource_info['smartphoneimage'], 'users': ', '.join(resource.users.all().values_list('username', flat=True)), 'groups': ', '.join(resource.groups.all().values_list('name', flat=True)), + 'input_friendcodes': ' '.join(set(input_friendcodes)), + 'output_friendcodes': ' '.join(set(output_friendcodes)), } return fields diff --git a/src/wirecloud/commons/static/js/wirecloud/ui/MACSearch.js b/src/wirecloud/commons/static/js/wirecloud/ui/MACSearch.js index 8260e7b64f..701d4295f3 100644 --- a/src/wirecloud/commons/static/js/wirecloud/ui/MACSearch.js +++ b/src/wirecloud/commons/static/js/wirecloud/ui/MACSearch.js @@ -78,6 +78,10 @@ }; utils.inherit(MACSearch, StyledElements.StyledElement); + MACSearch.prototype.search = function search(keywords) { + this.inputField.setValue(keywords); + }; + MACSearch.prototype.paintInfo = function paintInfo(message, context) { if (context != null) { message = builder.parse(builder.DEFAULT_OPENING + message + builder.DEFAULT_CLOSING, context); diff --git a/src/wirecloud/commons/test-data/Wirecloud_TestOperator_FriendcodeList_2.1.zip b/src/wirecloud/commons/test-data/Wirecloud_TestOperator_FriendcodeList_2.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..b52a14b4777c9ccfd8f9a56d74142a523e5edfb2 GIT binary patch literal 40335 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 ChKWf4 literal 0 HcmV?d00001 diff --git a/src/wirecloud/commons/test-data/Wirecloud_Test_FriendcodeList_3.1.wgt b/src/wirecloud/commons/test-data/Wirecloud_Test_FriendcodeList_3.1.wgt new file mode 100644 index 0000000000000000000000000000000000000000..b4d0e7f5853b35bd39c2a378376821598710d5c0 GIT binary patch literal 40212 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
    2+UBYva<{@ZDi{@ZE( z<3ju`(0}0mCky`@ZZZq-|8bIt_m`9Z;NySe{m%yaZ#~F0| PiE{|CW|73>0D%7k6_JCU literal 0 HcmV?d00001 diff --git a/src/wirecloud/commons/utils/remote.py b/src/wirecloud/commons/utils/remote.py index 1732c1b06a..01e57990e7 100644 --- a/src/wirecloud/commons/utils/remote.py +++ b/src/wirecloud/commons/utils/remote.py @@ -1881,13 +1881,15 @@ def has_behaviours(self): class WiringComponentSidebarTester(BaseWiringViewTester): def __enter__(self): - self.btn_components.click() + if not self.btn_components.is_active: + self.btn_components.click() self.element = self.testcase.driver.find_element_by_css_selector(".wc-workspace-wiring .we-panel-components") WebDriverWait(self.testcase.driver, timeout=5).until(WEC.element_be_still(self.element)) return self def __exit__(self, type, value, traceback): - self.btn_components.click() + if self.btn_components.is_active: + self.btn_components.click() WebDriverWait(self.testcase.driver, timeout=5).until(WEC.element_be_still(self.element)) @property diff --git a/src/wirecloud/platform/static/js/wirecloud/ui/WiringEditor.js b/src/wirecloud/platform/static/js/wirecloud/ui/WiringEditor.js index 4d46e4428a..059eee9319 100644 --- a/src/wirecloud/platform/static/js/wirecloud/ui/WiringEditor.js +++ b/src/wirecloud/platform/static/js/wirecloud/ui/WiringEditor.js @@ -129,6 +129,34 @@ Wirecloud.ui = Wirecloud.ui || {}; component.forEachEndpoint(bindEndpoint.bind(this)); this.initialMessage.hide(); + var subMenuItem = new se.SubMenuItem(utils.gettext("Search component...")); + subMenuItem.menuItem.addIconClass("fa fa-search"); + + var menuItem1 = new se.MenuItem(utils.gettext("For both endpoints"), function () { + if (!this.btnFindComponents.active) { + this.btnFindComponents.click(); + } + this.componentManager.searchComponents.search("input_friendcodes:(" + component.sourceFriendcodes.join(" OR ") + ") OR " + "output_friendcodes:(" + component.targetFriendcodes.join(" OR ") + ") NOT (vendor:" + component._component.meta.vendor + " AND name:" + component._component.meta.name + ")"); + }.bind(this)); + var menuItem2 = new se.MenuItem(utils.gettext("For input endpoints"), function () { + if (!this.btnFindComponents.active) { + this.btnFindComponents.click(); + } + this.componentManager.searchComponents.search("output_friendcodes:(" + component.targetFriendcodes.join(" OR ") + ") NOT (vendor:" + component._component.meta.vendor + " AND name:" + component._component.meta.name + ")"); + }.bind(this)); + var menuItem3 = new se.MenuItem(utils.gettext("For output endpoints"), function () { + if (!this.btnFindComponents.active) { + this.btnFindComponents.click(); + } + this.componentManager.searchComponents.search("input_friendcodes:(" + component.sourceFriendcodes.join(" OR ") + ") NOT (vendor:" + component._component.meta.vendor + " AND name:" + component._component.meta.name + ")"); + }.bind(this)); + + subMenuItem.append(menuItem1); + subMenuItem.append(menuItem2); + subMenuItem.append(menuItem3); + + component.btnPrefs.popup_menu.append(subMenuItem); + if (options.commit) { this.layout.content.appendChild(component); this.behaviourEngine.updateComponent(component, component.toJSON()); diff --git a/src/wirecloud/platform/wiring/tests.py b/src/wirecloud/platform/wiring/tests.py index b9c65c86da..7c8977c2be 100644 --- a/src/wirecloud/platform/wiring/tests.py +++ b/src/wirecloud/platform/wiring/tests.py @@ -1772,6 +1772,48 @@ def test_ordering_widget_endpoints(self): self.assertEqual(targets_count, len(widget.find_endpoints('target'))) self.assertEqual(sources_count, len(widget.find_endpoints('source'))) + @uses_extra_resources(('Wirecloud_TestOperator_FriendcodeList_2.1.zip','Wirecloud_Test_FriendcodeList_3.1.wgt'), shared=True) + def test_search_components_by_component_both_endpoints(self): + self.login(username='user_with_workspaces', next='/user_with_workspaces/ExistingWorkspace') + + with self.wiring_view as wiring: + with wiring.component_sidebar as sidebar: + operator = sidebar.add_component('operator', "Wirecloud/TestOperator") + + operator.show_preferences().click_entry(("Search component...", "For both endpoints")) + + with wiring.component_sidebar as sidebar: + self.assertEqual(len(sidebar.find_component_groups('operator')), 0) + self.assertEqual(len(sidebar.find_component_groups('widget')), 1) + + @uses_extra_resources(('Wirecloud_TestOperator_FriendcodeList_2.1.zip','Wirecloud_Test_FriendcodeList_3.1.wgt'), shared=True) + def test_search_components_by_component_input_endpoints(self): + self.login(username='user_with_workspaces', next='/user_with_workspaces/ExistingWorkspace') + + with self.wiring_view as wiring: + with wiring.component_sidebar as sidebar: + operator = sidebar.add_component('operator', "Wirecloud/TestOperator") + + operator.show_preferences().click_entry(("Search component...", "For input endpoints")) + + with wiring.component_sidebar as sidebar: + self.assertEqual(len(sidebar.find_component_groups('operator')), 0) + self.assertEqual(len(sidebar.find_component_groups('widget')), 1) + + @uses_extra_resources(('Wirecloud_TestOperator_FriendcodeList_2.1.zip','Wirecloud_Test_FriendcodeList_3.1.wgt'), shared=True) + def test_search_components_by_component_output_endpoints(self): + self.login(username='user_with_workspaces', next='/user_with_workspaces/ExistingWorkspace') + + with self.wiring_view as wiring: + with wiring.component_sidebar as sidebar: + operator = sidebar.add_component('operator', "Wirecloud/TestOperator") + + operator.show_preferences().click_entry(("Search component...", "For output endpoints")) + + with wiring.component_sidebar as sidebar: + self.assertEqual(len(sidebar.find_component_groups('operator')), 0) + self.assertEqual(len(sidebar.find_component_groups('widget')), 1) + @wirecloud_selenium_test_case class BehaviourManagementTestCase(WirecloudSeleniumTestCase):