diff options
author | Mark Bekhet <mark.bekhet@ericsson.com> | 2021-03-03 13:58:21 -0500 |
---|---|---|
committer | Mark Bekhet <bekhet.mark@gmail.com> | 2021-03-15 19:31:53 +0000 |
commit | 19d1f3d45d6816d6540b6bcbde97bfb2f6b24b75 (patch) | |
tree | 8119de632ce984055569fde47c73a9d6554abfbf | |
parent | ca644a6289ba5ef02044b26ad3c64f64f2639571 (diff) |
Apply a second filter after receiving the initial repo list
Before this change, searching a repository where the prefix is similar
to the name was problematic. It sent a query having two similar
conditions which resolved to one condition. For example, searching for a
project named f/f would send a query inname:f AND inname:f. This is
problematic when listing all the related projects to the filter, which
may not correspond to the user entry. Additional examples are in [1].
Before this change, if the user entered a filter containing a special
character, the query sent to the backend was modified to correspond to
the query language. The reason behind it being that the query language
uses some special characters as operators. Therefore, the result of the
output method was inaccurate and could contain extra data that are not
needed by the user.
This change introduces a second method that compares the filter with the
output list of the fetch method. This second filter takes the original
filter and compares it with each element of the resulting array from the
fetch method. This ensures that the output received by the user matches
their entry.
With this change, users should get the same output as the old UI.
[1] https://groups.google.com/u/0/g/repo-discuss/c/pfxB4_75EL0/m/dfT-nnnMAwAJ
Feature: Issue 12970
Change-Id: I5078237a9648871eb59628d4669ffa0b5b42cc08
-rw-r--r-- | polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list.js | 2 | ||||
-rw-r--r-- | polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list_test.html | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list.js b/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list.js index 0eaa496c08..5de844fb98 100644 --- a/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list.js +++ b/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list.js @@ -125,7 +125,7 @@ .then(repos => { // Late response. if (filter !== this._filter || !repos) { return; } - this._repos = repos; + this._repos = repos.filter(repo => repo.name.includes(filter)); this._loading = false; }); }, diff --git a/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list_test.html b/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list_test.html index c77592cb78..625312de84 100644 --- a/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list_test.html +++ b/polygerrit-ui/app/elements/admin/gr-repo-list/gr-repo-list_test.html @@ -40,6 +40,7 @@ limitations under the License. const repoGenerator = () => { return { id: `test${++counter}`, + name: `test`, state: 'ACTIVE', web_links: [ { |