Alexander Wels has uploaded a new change for review. Change subject: webadmin: reset page to 1 on sort ......................................................................
webadmin: reset page to 1 on sort - In the scenaria where you have multiple pages and you select and item, it is possible for a sort operation to make the selected item unavailable on the current page. This leaves the user on a page that is no longer of interest to them. So to not confuse the user too much we will reset the page to the first page when sorting. Change-Id: I0b0a974c65c261081f1c942b2b35e75e806a86a6 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1119309 Signed-off-by: Alexander Wels <[email protected]> --- M backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java 2 files changed, 26 insertions(+), 53 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/84/36084/1 diff --git a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java index 1a75d25..6d57f1d 100644 --- a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java +++ b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java @@ -29,21 +29,22 @@ public static final String SORTBY = "SORTBY"; public static final String SORTDIR_ASC = "ASC"; public static final String SORTDIR_DESC = "DESC"; + public static final String PAGE = "PAGE"; - private SearchObjectAutoCompleter mSearchObjectAC; - private BaseAutoCompleter mColonAC; - private BaseAutoCompleter mPluralAC; - private BaseAutoCompleter mSortbyAC; - private BaseAutoCompleter mPageAC; - private BaseAutoCompleter mAndAC; - private BaseAutoCompleter mOrAC; - private BaseAutoCompleter mDotAC; - private BaseAutoCompleter mSortDirectionAC; - private Map<SyntaxObjectType, SyntaxObjectType[]> mStateMap; + private final SearchObjectAutoCompleter mSearchObjectAC; + private final BaseAutoCompleter mColonAC; + private final BaseAutoCompleter mPluralAC; + private final BaseAutoCompleter mSortbyAC; + private final BaseAutoCompleter mPageAC; + private final BaseAutoCompleter mAndAC; + private final BaseAutoCompleter mOrAC; + private final BaseAutoCompleter mDotAC; + private final BaseAutoCompleter mSortDirectionAC; + private final Map<SyntaxObjectType, SyntaxObjectType[]> mStateMap; - private Regex mFirstDQRegexp; - private Regex mNonSpaceRegexp; - private List<Character> mDisAllowedChars; + private final Regex mFirstDQRegexp; + private final Regex mNonSpaceRegexp; + private final List<Character> mDisAllowedChars; private SqlInjectionChecker sqlInjectionChecker; public SyntaxChecker(int searchReasultsLimit) { @@ -52,7 +53,7 @@ mColonAC = new BaseAutoCompleter(":"); mPluralAC = new BaseAutoCompleter("S"); mSortbyAC = new BaseAutoCompleter(SORTBY); - mPageAC = new BaseAutoCompleter("PAGE"); + mPageAC = new BaseAutoCompleter(PAGE); mSortDirectionAC = new BaseAutoCompleter(SORTDIR_ASC, SORTDIR_DESC); mAndAC = new BaseAutoCompleter("AND"); mOrAC = new BaseAutoCompleter("OR"); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java index ab95ade..39202ae 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java @@ -19,11 +19,6 @@ import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.common.utils.ObjectUtils; -import org.ovirt.engine.core.compat.IntegerCompat; -import org.ovirt.engine.core.compat.Match; -import org.ovirt.engine.core.compat.Regex; -import org.ovirt.engine.core.compat.RegexOptions; -import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.core.searchbackend.ISyntaxChecker; import org.ovirt.engine.core.searchbackend.SyntaxChecker; import org.ovirt.engine.core.searchbackend.SyntaxCheckerFactory; @@ -204,11 +199,7 @@ public String getSearchString() { - // pagingSearchString is relevant only for non-null searchString - if (searchString == null) { - return null; - } - return searchString + (pagingSearchString == null ? "" : pagingSearchString); + return searchString; } public void setSearchString(String value) @@ -234,34 +225,8 @@ private String pagingSearchString; - public int getSearchPageNumber() - { - if (StringHelper.isNullOrEmpty(getSearchString())) - { - return 1; - } - - // try getting the end of SearchString in the form of "page <n>" - String pageStringRegex = PAGE_STRING_REGEX; - - Match match = Regex.Match(getSearchString(), pageStringRegex, RegexOptions.IgnoreCase); - if (match.success()) - { - // retrieve the page number itself: - String pageString = match.getValue(); // == "page <n>" - String pageNumberRegex = PAGE_NUMBER_REGEX; - match = Regex.Match(pageString, pageNumberRegex); - if (match.success()) - { - final Integer retValue = IntegerCompat.tryParse(match.getValue()); - if (retValue != null) - { - return retValue; - } - } - } - - return 1; + public int getSearchPageNumber() { + return this.currentPageNumber; } public String getItemsCountString() { @@ -328,6 +293,7 @@ * Grid refresh timer associated with this list model. */ private GridTimer timer; + private int currentPageNumber = 1; //Default to 1 /** * Setter for the grid timer. @@ -676,6 +642,7 @@ private void setSearchStringPage(int newSearchPageNumber) { this.pagingSearchString = " page " + newSearchPageNumber; //$NON-NLS-1$ + this.currentPageNumber = newSearchPageNumber; } protected void searchNextPage() @@ -699,6 +666,7 @@ } return str.substring(0, index); } + protected boolean getNextSearchPageAllowed() { if (!getSearchNextPageCommand().getIsAvailable() || getItems() == null @@ -760,6 +728,8 @@ this.sortAscending = sortAscending; if (shouldRefresh) { + searchString = stripPageKeyword(searchString); + setSearchStringPage(1); refresh(); } } @@ -785,7 +755,9 @@ result += " " + SyntaxChecker.SORTBY + " " + sortBy //$NON-NLS-1$ //$NON-NLS-2$ + " " + (sortAscending ? SyntaxChecker.SORTDIR_ASC : SyntaxChecker.SORTDIR_DESC); //$NON-NLS-1$ } - + if (result != null && pagingSearchString != null) { + result += " " + pagingSearchString; //$NON-NLS-1$ + } return result; } -- To view, visit http://gerrit.ovirt.org/36084 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0b0a974c65c261081f1c942b2b35e75e806a86a6 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alexander Wels <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
