summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaishan <[email protected]>2019-12-02 23:56:20 +0800
committerHaishan <[email protected]>2019-12-02 23:56:20 +0800
commit6300940c9c09255170679cdf218fdc6ce35eb327 (patch)
treeb9a58de9c8901d4f7bfd22b4f50b84e9f9c6ff65
parent531e67b1550ba6544fd74dd3a28de5152c5874c1 (diff)
chore(connections): sort by id to maintain a more stable ordering
-rw-r--r--src/components/ConnectionTable.js22
-rw-r--r--yarn.lock38
2 files changed, 43 insertions, 17 deletions
diff --git a/src/components/ConnectionTable.js b/src/components/ConnectionTable.js
index 2e7ba7f..9a962b1 100644
--- a/src/components/ConnectionTable.js
+++ b/src/components/ConnectionTable.js
@@ -8,6 +8,7 @@ import { useTable, useSortBy } from 'react-table';
import s from './ConnectionTable.module.css';
const columns = [
+ { accessor: 'id', show: false },
{ Header: 'Host', accessor: 'host' },
{ Header: 'Download', accessor: 'download' },
{ Header: 'Upload', accessor: 'upload' },
@@ -34,13 +35,29 @@ function renderCell(cell, now) {
}
}
+const sortById = { id: 'id', desc: true };
+// const sortByStart = { id: 'start', desc: true };
const tableState = {
sortBy: [
// maintain a more stable order
- { id: 'start', desc: true }
+ sortById
]
};
+function tableReducer(newState, action, _prevState) {
+ const { type } = action;
+ if (type === 'toggleSortBy') {
+ const { sortBy = [] } = newState;
+ if (sortBy.length === 0) {
+ return {
+ ...newState,
+ sortBy: [sortById]
+ };
+ }
+ }
+ return newState;
+}
+
function Table({ data }) {
const now = new Date();
const {
@@ -53,7 +70,8 @@ function Table({ data }) {
{
columns,
data,
- initialState: tableState
+ initialState: tableState,
+ reducer: tableReducer
},
useSortBy
);
diff --git a/yarn.lock b/yarn.lock
index 2d66aaf..4bec755 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2327,22 +2327,22 @@ css-declaration-sorter@^4.0.1:
timsort "^0.3.0"
css-loader@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.0.tgz#bb570d89c194f763627fcf1f80059c6832d009b2"
- integrity sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ==
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.1.tgz#62849b45a414b7bde0bfba17325a026471040eae"
+ integrity sha512-q40kYdcBNzMvkIImCL2O+wk8dh+RGwPPV9Dfz3n7XtOYPXqe2Z6VgtvoxjkLHz02gmhepG9sOAJOUlx+3hHsBg==
dependencies:
camelcase "^5.3.1"
cssesc "^3.0.0"
icss-utils "^4.1.1"
loader-utils "^1.2.3"
normalize-path "^3.0.0"
- postcss "^7.0.17"
+ postcss "^7.0.23"
postcss-modules-extract-imports "^2.0.0"
postcss-modules-local-by-default "^3.0.2"
- postcss-modules-scope "^2.1.0"
+ postcss-modules-scope "^2.1.1"
postcss-modules-values "^3.0.0"
- postcss-value-parser "^4.0.0"
- schema-utils "^2.0.0"
+ postcss-value-parser "^4.0.2"
+ schema-utils "^2.6.0"
css-select-base-adapter@^0.1.1:
version "0.1.1"
@@ -6018,10 +6018,10 @@ postcss-modules-local-by-default@^3.0.2:
postcss-selector-parser "^6.0.2"
postcss-value-parser "^4.0.0"
-postcss-modules-scope@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb"
- integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==
+postcss-modules-scope@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba"
+ integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==
dependencies:
postcss "^7.0.6"
postcss-selector-parser "^6.0.0"
@@ -6555,9 +6555,9 @@ [email protected]:
tiny-warning "^1.0.0"
react-table@^7.0.0-beta.12:
- version "7.0.0-beta.12"
- resolved "https://registry.yarnpkg.com/react-table/-/react-table-7.0.0-beta.12.tgz#ae54b398fbdb527b9fad82e52c4d829c00fdd5dc"
- integrity sha512-h1c0KNTBRPAMgZumaNixr3X0w7kFTuqk6pHwia12LsMgnTHNEEeqp7+tQ5fTPwwMArp1/OHXeOdSKEes1C83iw==
+ version "7.0.0-beta.20"
+ resolved "https://registry.yarnpkg.com/react-table/-/react-table-7.0.0-beta.20.tgz#2125726549a15d5fd1d264145c92b9807a82aa1e"
+ integrity sha512-809Zj/OHX+Jbfnb+kxULZDvDstHrpzjFl2+mYOF9pU1CcJKkL2GdBmlWr9pcDmznxMU6veJUYnAxXYqvAWKVrQ==
react-window@^1.8.5:
version "1.8.5"
@@ -6958,7 +6958,7 @@ schema-utils@^1.0.0:
ajv-errors "^1.0.0"
ajv-keywords "^3.1.0"
-schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.5.0:
+schema-utils@^2.0.1, schema-utils@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.5.0.tgz#8f254f618d402cc80257486213c8970edfd7c22f"
integrity sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==
@@ -6966,6 +6966,14 @@ schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.5.0:
ajv "^6.10.2"
ajv-keywords "^3.4.1"
+schema-utils@^2.6.0:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f"
+ integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==
+ dependencies:
+ ajv "^6.10.2"
+ ajv-keywords "^3.4.1"
+
semver-compare@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"