From ad84d650ded555213452e4a69c1dbea1bc771b3a Mon Sep 17 00:00:00 2001 From: Clemens Date: Wed, 8 Jun 2016 10:29:33 +0200 Subject: sorting add pr review changes --- web/src/js/ducks/flows.js | 14 +++++++------- web/src/js/ducks/utils/view.js | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 9 deletions(-) (limited to 'web/src/js/ducks') diff --git a/web/src/js/ducks/flows.js b/web/src/js/ducks/flows.js index 83a7b12c..6adde71c 100644 --- a/web/src/js/ducks/flows.js +++ b/web/src/js/ducks/flows.js @@ -1,8 +1,8 @@ import makeList from "./utils/list" import Filt from "../filt/filt" -import {updateViewFilterSort, updateViewList} from "./utils/view" +import {updateViewFilter, updateViewList, updateViewSort} from "./utils/view" import {reverseString} from "../utils.js"; -import flowtable_columns from "../components/flowtable-columns.js"; +import * as flow_table_columns from "../components/flowtable-columns.js"; export const UPDATE_FLOWS = "UPDATE_FLOWS" export const SET_FILTER = "SET_FLOW_FILTER" @@ -32,13 +32,13 @@ function makeFilterFn(filter) { function makeSortFn(sort){ - let column = _.find(flowtable_columns, c => c.name == sort.sortColumn); + let column = flow_table_columns[sort.sortColumn]; if (!column) return; let sortKeyFun = column.sortKeyFun; if (sort.sortDesc) { - sortKeyFun = sortKeyFun && function () { - const k = column.sortKeyFun.apply(this, arguments); + sortKeyFun = sortKeyFun && function (flow) { + const k = column.sortKeyFun(flow); return _.isString(k) ? reverseString("" + k) : -k; }; } @@ -58,7 +58,7 @@ export default function reducer(state = defaultState, action) { return { ...state, filter: action.filter, - view: updateViewFilterSort(state.all, makeFilterFn(action.filter), makeSortFn(state.sort)) + view: updateViewFilter(state.all, makeFilterFn(action.filter), makeSortFn(state.sort)) } case SET_HIGHLIGHT: return { @@ -69,7 +69,7 @@ export default function reducer(state = defaultState, action) { return { ...state, sort: action.sort, - view: updateViewFilterSort(state.all, makeFilterFn(state.filter), makeSortFn(action.sort)) + view: updateViewSort(state.view, makeSortFn(action.sort)) } case SELECT_FLOW: return { diff --git a/web/src/js/ducks/utils/view.js b/web/src/js/ducks/utils/view.js index 712c4d99..2d23a39c 100644 --- a/web/src/js/ducks/utils/view.js +++ b/web/src/js/ducks/utils/view.js @@ -75,7 +75,7 @@ export function updateViewList(currentView, currentList, nextList, action, filte case REQUEST_LIST: return currentView case RECEIVE_LIST: - return updateViewFilterSort(nextList, filterFn, sortFn) + return updateViewFilter(nextList, filterFn, sortFn) case ADD: if (filterFn(action.item)) { return sortedInsert(currentView, sortFn, action.item) @@ -113,7 +113,7 @@ export function updateViewList(currentView, currentList, nextList, action, filte } } -export function updateViewFilterSort(list, filterFn = defaultFilterFn, sortFn = defaultSortFn) { +export function updateViewFilter(list, filterFn = defaultFilterFn, sortFn = defaultSortFn) { let filtered = list.list.filter(filterFn) if (sortFn){ filtered.sort(makeCompareFn(sortFn)) @@ -122,3 +122,13 @@ export function updateViewFilterSort(list, filterFn = defaultFilterFn, sortFn = return filtered } + +export function updateViewSort(list, sortFn = defaultSortFn) { + let sorted = list.slice(0) + if (sortFn) { + sorted.sort(makeCompareFn(sortFn)) + } + sorted.indexOf = x => sortedIndexOf(sorted, x, sortFn) + + return sorted +} -- cgit v1.2.3