Add "reshuffle button" when sortby is random (#497)

This commit is contained in:
FleetingOrchard 2020-04-24 14:30:41 +10:00 committed by GitHub
parent 29336d1ee0
commit 8a4d853a5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 0 deletions

View File

@ -28,6 +28,7 @@ interface IListFilterProps {
onChangeQuery: (query: string) => void;
onChangeSortDirection: (sortDirection: SortDirectionEnum) => void;
onChangeSortBy: (sortBy: string) => void;
onSortReshuffle: () => void;
onChangeDisplayMode: (displayMode: DisplayMode) => void;
onAddCriterion: (criterion: Criterion, oldId?: string) => void;
onRemoveCriterion: (criterion: Criterion) => void;
@ -77,6 +78,10 @@ export const ListFilter: React.FC<IListFilterProps> = (
props.onChangeSortBy(target.text);
}
function onReshuffleRandomSort() {
props.onSortReshuffle();
}
function onChangeDisplayMode(displayMode: DisplayMode) {
props.onChangeDisplayMode(displayMode);
}
@ -318,6 +323,17 @@ export const ListFilter: React.FC<IListFilterProps> = (
/>
</Button>
</OverlayTrigger>
{props.filter.sortBy === "random" && (
<OverlayTrigger
overlay={
<Tooltip id="sort-reshuffle-tooltip">Reshuffle</Tooltip>
}
>
<Button variant="secondary" onClick={onReshuffleRandomSort}>
<Icon icon="random" />
</Button>
</OverlayTrigger>
)}
</Dropdown>
</ButtonGroup>

View File

@ -211,6 +211,13 @@ const useList = <QueryResult extends IQueryResult, QueryData extends IDataItem>(
updateQueryParams(newFilter);
}
function onSortReshuffle() {
const newFilter = _.cloneDeep(filter);
newFilter.currentPage = 1;
newFilter.randomSeed = -1;
updateQueryParams(newFilter);
}
function onChangeDisplayMode(displayMode: DisplayMode) {
const newFilter = _.cloneDeep(filter);
newFilter.displayMode = displayMode;
@ -370,6 +377,7 @@ const useList = <QueryResult extends IQueryResult, QueryData extends IDataItem>(
onChangeQuery={onChangeQuery}
onChangeSortDirection={onChangeSortDirection}
onChangeSortBy={onChangeSortBy}
onSortReshuffle={onSortReshuffle}
onChangeDisplayMode={onChangeDisplayMode}
onAddCriterion={onAddCriterion}
onRemoveCriterion={onRemoveCriterion}