diff options
author | Clemens <cle1000.cb@gmail.com> | 2016-06-08 10:29:33 +0200 |
---|---|---|
committer | Clemens <cle1000.cb@gmail.com> | 2016-06-08 10:29:33 +0200 |
commit | ad84d650ded555213452e4a69c1dbea1bc771b3a (patch) | |
tree | 97fa925d370ebebe1df9b68ceaa050e656b107fa /web/src | |
parent | dbbda030200e50768c92f48cf4189d96775b0684 (diff) | |
download | mitmproxy-ad84d650ded555213452e4a69c1dbea1bc771b3a.tar.gz mitmproxy-ad84d650ded555213452e4a69c1dbea1bc771b3a.tar.bz2 mitmproxy-ad84d650ded555213452e4a69c1dbea1bc771b3a.zip |
sorting add pr review changes
Diffstat (limited to 'web/src')
-rw-r--r-- | web/src/js/components/flowtable-columns.js | 14 | ||||
-rw-r--r-- | web/src/js/components/mainview.js | 1 | ||||
-rw-r--r-- | web/src/js/ducks/flows.js | 14 | ||||
-rw-r--r-- | web/src/js/ducks/utils/view.js | 14 |
4 files changed, 26 insertions, 17 deletions
diff --git a/web/src/js/components/flowtable-columns.js b/web/src/js/components/flowtable-columns.js index 1eae6409..799b3f9f 100644 --- a/web/src/js/components/flowtable-columns.js +++ b/web/src/js/components/flowtable-columns.js @@ -3,7 +3,7 @@ import {RequestUtils, ResponseUtils} from "../flow/utils.js" import {formatSize, formatTimeDelta} from "../utils.js" -function TLSColumn({flow}) { +export function TLSColumn({flow}) { let ssl = (flow.request.scheme === "https") let classes if (ssl) { @@ -17,7 +17,7 @@ TLSColumn.Title = ({className = "", ...props}) => <th {...props} className={"col TLSColumn.sortKeyFun = flow => flow.request.scheme -function IconColumn({flow}) { +export function IconColumn({flow}) { let icon if (flow.response) { var contentType = ResponseUtils.getContentType(flow.response) @@ -49,7 +49,7 @@ function IconColumn({flow}) { IconColumn.Title = ({className = "", ...props}) => <th {...props} className={"col-icon " + className }></th> -function PathColumn({flow}) { +export function PathColumn({flow}) { return <td className="col-path"> {flow.request.is_replay ? <i className="fa fa-fw fa-repeat pull-right"></i> : null} {flow.intercepted ? <i className="fa fa-fw fa-pause pull-right"></i> : null} @@ -61,7 +61,7 @@ PathColumn.Title = ({className = "", ...props}) => PathColumn.sortKeyFun = flow => RequestUtils.pretty_url(flow.request) -function MethodColumn({flow}) { +export function MethodColumn({flow}) { return <td className="col-method">{flow.request.method}</td> } MethodColumn.Title = ({className = "", ...props}) => @@ -69,7 +69,7 @@ MethodColumn.Title = ({className = "", ...props}) => MethodColumn.sortKeyFun = flow => flow.request.method -function StatusColumn({flow}) { +export function StatusColumn({flow}) { let status if (flow.response) { status = flow.response.status_code @@ -84,7 +84,7 @@ StatusColumn.Title = ({className = "", ...props}) => StatusColumn.sortKeyFun = flow => flow.response ? flow.response.status_code : undefined -function SizeColumn({flow}) { +export function SizeColumn({flow}) { let total = flow.request.contentLength if (flow.response) { total += flow.response.contentLength || 0 @@ -104,7 +104,7 @@ SizeColumn.sortKeyFun = flow => { } -function TimeColumn({flow}) { +export function TimeColumn({flow}) { let time if (flow.response) { time = formatTimeDelta(1000 * (flow.response.timestamp_end - flow.request.timestamp_start)) diff --git a/web/src/js/components/mainview.js b/web/src/js/components/mainview.js index dae2856e..5915c9fc 100644 --- a/web/src/js/components/mainview.js +++ b/web/src/js/components/mainview.js @@ -169,7 +169,6 @@ const MainViewContainer = connect( state => ({ flows: state.flows.view, filter: state.flows.filter, - sort: state.flows.sort, highlight: state.flows.highlight, selectedFlow: state.flows.all.byId[state.flows.selected[0]] }), 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 +} |