[web] sorter -> sort

This commit is contained in:
Maximilian Hils 2016-06-25 19:58:11 -07:00
parent db415a26bc
commit 1c240d919a
3 changed files with 42 additions and 42 deletions

View File

@ -3,7 +3,7 @@ import { connect } from 'react-redux'
import classnames from 'classnames'
import columns from './FlowColumns'
import { updateSorter } from '../../ducks/views/main'
import { updateSort } from '../../ducks/views/main'
FlowTableHead.propTypes = {
onSort: PropTypes.func.isRequired,
@ -11,7 +11,7 @@ FlowTableHead.propTypes = {
sortColumn: React.PropTypes.string,
}
function FlowTableHead({ sortColumn, sortDesc, onSort }) {
function FlowTableHead({ sortColumn, sortDesc, updateSort }) {
const sortType = sortDesc ? 'sort-desc' : 'sort-asc'
return (
@ -19,7 +19,7 @@ function FlowTableHead({ sortColumn, sortDesc, onSort }) {
{columns.map(Column => (
<th className={classnames(Column.headerClass, sortColumn === Column.name && sortType)}
key={Column.name}
onClick={() => onSort(Column.name, Column.name !== sortColumn ? false : !sortDesc)}>
onClick={() => updateSort(Column.name, Column.name !== sortColumn ? false : !sortDesc)}>
{Column.headerName}
</th>
))}
@ -29,10 +29,10 @@ function FlowTableHead({ sortColumn, sortDesc, onSort }) {
export default connect(
state => ({
sortDesc: state.flows.views.main.sorter.desc,
sortColumn: state.flows.views.main.sorter.column,
sortDesc: state.flows.views.main.sort.desc,
sortColumn: state.flows.views.main.sort.column,
}),
{
onSort: updateSorter,
updateSort
}
)(FlowTableHead)

View File

@ -1,7 +1,7 @@
import _ from 'lodash'
export const UPDATE_FILTER = 'VIEW_UPDATE_FILTER'
export const UPDATE_SORTER = 'VIEW_UPDATE_SORTER'
export const UPDATE_SORT = 'VIEW_UPDATE_SORT'
export const ADD = 'VIEW_ADD'
export const UPDATE = 'VIEW_UPDATE'
export const REMOVE = 'VIEW_REMOVE'
@ -16,7 +16,7 @@ export default function reduce(state = defaultState, action) {
switch (action.type) {
case UPDATE_FILTER: {
const data = action.list.data.filter(action.filter).sort(action.sorter)
const data = action.list.data.filter(action.filter).sort(action.sort)
return {
...state,
data,
@ -24,8 +24,8 @@ export default function reduce(state = defaultState, action) {
}
}
case UPDATE_SORTER: {
const data = [...state.data].sort(action.sorter)
case UPDATE_SORT: {
const data = [...state.data].sort(action.sort)
return {
...state,
data,
@ -39,7 +39,7 @@ export default function reduce(state = defaultState, action) {
}
return {
...state,
...sortedInsert(state, action.item, action.sorter),
...sortedInsert(state, action.item, action.sort),
}
case REMOVE:
@ -64,12 +64,12 @@ export default function reduce(state = defaultState, action) {
}
return {
...nextState,
...sortedInsert(nextState, action.item, action.sorter)
...sortedInsert(nextState, action.item, action.sort)
}
}
case RECEIVE: {
const data = action.list.data.filter(action.filter).sort(action.sorter)
const data = action.list.data.filter(action.filter).sort(action.sort)
return {
...state,
data,
@ -82,32 +82,32 @@ export default function reduce(state = defaultState, action) {
}
}
export function updateFilter(list, filter = defaultFilter, sorter = defaultSorter) {
return { type: UPDATE_FILTER, list, filter, sorter }
export function updateFilter(list, filter = defaultFilter, sort = defaultSort) {
return { type: UPDATE_FILTER, list, filter, sort }
}
export function updateSorter(sorter = defaultSorter) {
return { type: UPDATE_SORTER, sorter }
export function updateSort(sort = defaultSort) {
return { type: UPDATE_SORT, sort }
}
export function add(item, filter = defaultFilter, sorter = defaultSorter) {
return { type: ADD, item, filter, sorter }
export function add(item, filter = defaultFilter, sort = defaultSort) {
return { type: ADD, item, filter, sort }
}
export function update(id, item, filter = defaultFilter, sorter = defaultSorter) {
return { type: UPDATE, id, item, filter, sorter }
export function update(id, item, filter = defaultFilter, sort = defaultSort) {
return { type: UPDATE, id, item, filter, sort }
}
export function remove(id) {
return { type: REMOVE, id }
}
export function receive(list, filter = defaultFilter, sorter = defaultSorter) {
return { type: RECEIVE, list, filter, sorter }
export function receive(list, filter = defaultFilter, sort = defaultSort) {
return { type: RECEIVE, list, filter, sort }
}
function sortedInsert(state, item, sorter) {
const index = sortedIndex(state.data, item, sorter)
function sortedInsert(state, item, sort) {
const index = sortedIndex(state.data, item, sort)
const data = [...state.data]
const indexOf = { ...state.indexOf }
@ -132,13 +132,13 @@ function sortedRemove(state, id) {
return { data, indexOf }
}
function sortedIndex(list, item, sorter) {
function sortedIndex(list, item, sort) {
let low = 0
let high = list.length
while (low < high) {
const middle = (low + high) >>> 1
if (sorter(item, list[middle]) >= 0) {
if (sort(item, list[middle]) >= 0) {
low = middle + 1
} else {
high = middle
@ -152,6 +152,6 @@ function defaultFilter() {
return true
}
function defaultSorter(a, b) {
function defaultSort(a, b) {
return 0
}

View File

@ -4,7 +4,7 @@ import reduceView, * as viewActions from '../utils/view'
import * as viewsActions from '../views'
export const UPDATE_FILTER = 'FLOW_VIEWS_MAIN_UPDATE_FILTER'
export const UPDATE_SORTER = 'FLOW_VIEWS_MAIN_UPDATE_SORTER'
export const UPDATE_SORT = 'FLOW_VIEWS_MAIN_UPDATE_SORT'
export const UPDATE_HIGHLIGHT = 'FLOW_VIEWS_MAIN_UPDATE_HIGHLIGHT'
export const SELECT = 'FLOW_VIEWS_MAIN_SELECT'
@ -33,7 +33,7 @@ const defaultState = {
highlight: null,
selected: [],
filter: null,
sorter: { column: null, desc: false },
sort: { column: null, desc: false },
view: undefined,
}
@ -61,20 +61,20 @@ export default function reduce(state = defaultState, action) {
viewActions.updateFilter(
action.list,
makeFilter(action.filter),
makeSorter(state.sorter)
makeSort(state.sort)
)
),
}
case UPDATE_SORTER:
const sorter = { column: action.column, desc: action.desc }
case UPDATE_SORT:
const sort = { column: action.column, desc: action.desc }
return {
...state,
sorter,
sort,
view: reduceView(
state.view,
viewActions.updateSorter(
makeSorter(sorter)
viewActions.updateSort(
makeSort(sort)
)
),
}
@ -87,7 +87,7 @@ export default function reduce(state = defaultState, action) {
viewActions.add(
action.item,
makeFilter(state.filter),
makeSorter(state.sorter)
makeSort(state.sort)
)
),
}
@ -101,7 +101,7 @@ export default function reduce(state = defaultState, action) {
action.id,
action.item,
makeFilter(state.filter),
makeSorter(state.sorter)
makeSort(state.sort)
)
),
}
@ -125,7 +125,7 @@ export default function reduce(state = defaultState, action) {
viewActions.receive(
action.list,
makeFilter(state.filter),
makeSorter(state.sorter)
makeSort(state.sort)
)
),
}
@ -157,8 +157,8 @@ export function updateHighlight(highlight) {
/**
* @public
*/
export function updateSorter(column, desc) {
return { type: UPDATE_SORTER, column, desc }
export function updateSort(column, desc) {
return { type: UPDATE_SORT, column, desc }
}
/**
@ -183,7 +183,7 @@ function makeFilter(filter) {
/**
* @private
*/
function makeSorter({ column, desc }) {
function makeSort({ column, desc }) {
const sortKeyFun = sortKeyFuns[column]
if (!sortKeyFun) {
return