routes: added range rising

This commit is contained in:
muerwre 2018-12-13 14:05:30 +07:00
parent febe619e8c
commit ddb77e1245
5 changed files with 80 additions and 25 deletions

View file

@ -128,18 +128,42 @@ const searchSetTab = (state, { tab = 'mine' }) => ({
}
});
const searchPutRoutes = (state, { list = [], min, max }) => ({
...state,
routes: {
...state.routes,
list,
filter: {
...state.routes.filter,
min: min || state.routes.filter.min,
max: max || state.routes.filter.max,
}
const newDistCalc = ({ distance, min, max, filter }) => {
if (filter.min === filter.max) {
// slider was disabled
return [min, max];
}
});
// state.routes.filter.distance
};
const searchPutRoutes = (state, { list = [], min, max }) => {
console.log('a', state.routes.filter.distance[0], state.routes.filter.min);
return ({
...state,
routes: {
...state.routes,
list,
filter: {
...state.routes.filter,
distance: (state.routes.filter.min === state.routes.filter.max)
? [min, max]
: state.routes.filter.distance,
// distance:
// [
// (state.routes.filter.min > min && state.routes.filter.distance[0] <= state.routes.filter.min)
// ? min
// : state.routes.filter.distance[0],
// (state.routes.filter.max < max && state.routes.filter.distance[1] >= state.routes.filter.max)
// ? max
// : state.routes.filter.distance[1],
// ],
min,
max,
}
}
});
}
const searchSetLoading = (state, { loading = false }) => ({
...state,
@ -223,7 +247,7 @@ export const INITIAL_STATE = {
filter: {
title: '',
starred: false,
distance: [0, 300],
distance: [0, 99999],
author: '',
tab: 'mine',
min: 0,

View file

@ -9,7 +9,7 @@ import {
postMap
} from '$utils/api';
import {
hideRenderer, searchPutRoutes, searchSetLoading,
hideRenderer, searchPutRoutes, searchSetDistance, searchSetLoading,
setActiveSticker, setAddress,
setChanged, setDialogActive,
setEditing,
@ -437,7 +437,7 @@ function* searchSetSaga() {
const { id, token } = yield select(getUser);
yield delay(1000);
yield put(searchSetLoading(true));
const { routes: { filter: { title, distance, tab } } } = yield select(getState);
const { routes: { filter, filter: { title, distance, tab } } } = yield select(getState);
const { list, min, max } = yield call(getRouteList, {
id,
@ -449,6 +449,22 @@ function* searchSetSaga() {
});
yield put(searchPutRoutes({ list, min, max }));
// change distange range if needed and load additional data
if (
(filter.min > min && filter.distance[0] <= filter.min) ||
(filter.max < max && filter.distance[1] >= filter.max)
) {
yield put(searchSetDistance([
(filter.min > min && filter.distance[0] <= filter.min)
? min
: filter.distance[0],
(filter.max < max && filter.distance[1] >= filter.max)
? max
: filter.distance[1],
]));
}
return yield put(searchSetLoading(false));
}