-
Notifications
You must be signed in to change notification settings - Fork 169
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add getItemIndex to DataView (#18306)
* feat: add getItemIndex to DataView New `getItemIndex` method in `DataView` affects `ListDataView` and `LazyDataView` implementations. `LazyDataView` introduces in addition a new method `setItemIndexProvider(ItemIndexProvider)`. With `ListDataView`, `getItemIndex` works out-of-the-box with the in-memory data. With `LazyDataView`, it's required to set item index provider first with `setItemIndexProvider(ItemIndexProvider)`. Otherwise `getItemIndex` will throw `UnsupportedOperationException`. Provider can be implemented to fetch correct item index using item and `Query` parameters. `Query` object is set up to fetch all items with sorting and filter. Fixes: #18088 * chore: moved ItemIndexProvider to component from DataCommunicator * chore: added JavaDoc * chore: pass correct filter for item index provider * chore: update javadoc * chore: added since 24.4 * chore: changed to return Optional<Integer> * Update flow-data/src/main/java/com/vaadin/flow/data/provider/ItemIndexProvider.java Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com> * chore: fixed formatting --------- Co-authored-by: Mikhail Shabarov <61410877+mshabarov@users.noreply.github.com>
- Loading branch information
Showing
9 changed files
with
237 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
63 changes: 63 additions & 0 deletions
63
flow-data/src/main/java/com/vaadin/flow/data/provider/ItemIndexProvider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
/* | ||
* Copyright 2000-2023 Vaadin Ltd. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not | ||
* use this file except in compliance with the License. You may obtain a copy of | ||
* the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
* License for the specific language governing permissions and limitations under | ||
* the License. | ||
*/ | ||
|
||
package com.vaadin.flow.data.provider; | ||
|
||
import com.vaadin.flow.function.SerializableBiFunction; | ||
|
||
/** | ||
* A callback interface that is used to provide the index of an item. | ||
* <p> | ||
* Callback gives the target item and the query as parameters to fetch the | ||
* index. The index is the index of the item in the filtered and sorted data | ||
* set. If the item is not found, null is expected as a return value. | ||
* <p> | ||
* There will be inconsistent index if the data set for the returned index is | ||
* different from the component's data set. Changing the data set of either side | ||
* during this call may cause inconsistent index as a result. | ||
* <p> | ||
* Item index provider is only relevant with lazy data view implementations. | ||
* | ||
* @param <T> | ||
* the type of the item | ||
* @param <F> | ||
* the type of the query filter | ||
* @since @since 24.4 | ||
*/ | ||
@FunctionalInterface | ||
public interface ItemIndexProvider<T, F> | ||
extends SerializableBiFunction<T, Query<T, F>, Integer> { | ||
/** | ||
* Gets the index of the item in the filtered and sorted data set. | ||
* <p> | ||
* There will be inconsistent index if the data set for the returned index | ||
* is different from the component's data set. Changing the data set of | ||
* either side during this call may cause inconsistent index as a result. | ||
* <p> | ||
* The query parameter provides a filter object being set with | ||
* {@link ConfigurableFilterDataProvider} or provided by a component, e.g. a | ||
* string filter in ComboBox. | ||
* | ||
* @param item | ||
* Target item to get the index for | ||
* @param query | ||
* Query prepared for fetching all items including filter and | ||
* sorting. | ||
* @return the index of the item in the filtered and sorted data set, or | ||
* null if not found | ||
*/ | ||
Integer apply(T item, Query<T, F> query); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters