fixed sort criteria

This commit is contained in:
2019-05-07 02:06:09 +09:00
parent fd22f6209a
commit 61acf93dbf
3 changed files with 47 additions and 3 deletions
+1
View File
@@ -6,6 +6,7 @@
"@types/jest": "24.0.11",
"@types/lokijs": "^1.5.2",
"@types/node": "11.13.8",
"@types/query-string": "^6.3.0",
"@types/rc-tree": "^1.11.3",
"@types/react": "16.8.14",
"@types/react-dom": "16.8.4",
+38 -2
View File
@@ -122,11 +122,47 @@ class Item {
'index.index_id': indexId
}
const offset = sort.limit * (sort.page - 1);
const order_dir = sort.order_dir === 0;
const result = items.chain().find(filter);
const sortFunc = (a: IItemBasic, b: IItemBasic) => {
let av: string = '';
let bv: string = '';
switch (sort.orderby) {
case 'title':
av = a.title.toLocaleUpperCase();
bv = b.title.toLocaleUpperCase();
break;
case 'doi':
av = a.doi.toLocaleUpperCase();
bv = b.doi.toLocaleUpperCase();
break;
case 'last_update_date':
av = a.last_update_date.toString();
bv = b.last_update_date.toString();
break;
case 'creation_date':
av = a.creation_date.toString();
bv = b.creation_date.toString();
break;
case 'publication_date':
av = String(a.publication_year * 1000 + a.publication_month * 100 + a.publication_mday);
bv = String(b.publication_year * 1000 + b.publication_month * 100 + b.publication_mday);
break;
default:
break;
}
if (sort.order_dir === 0) {
if (av > bv) return -1;
else if (av < bv) return 1;
} else {
if (av > bv) return 1;
else if (av < bv) return -1;
}
return 0;
}
return {
total: result.count(),
data: result.simplesort(sort.orderby, order_dir).offset(offset).limit(sort.limit).data()
data: result.sort(sortFunc).offset(offset).limit(sort.limit).data()
};
}
+8 -1
View File
@@ -1295,6 +1295,13 @@
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
"@types/query-string@^6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@types/query-string/-/query-string-6.3.0.tgz#b6fa172a01405abcaedac681118e78429d62ea39"
integrity sha512-yuIv/WRffRzL7cBW+sla4HwBZrEXRNf1MKQ5SklPEadth+BKbDxiVG8A3iISN5B3yC4EeSCzMZP8llHTcUhOzQ==
dependencies:
query-string "*"
"@types/rc-tree@^1.11.3":
version "1.11.3"
resolved "https://registry.yarnpkg.com/@types/rc-tree/-/rc-tree-1.11.3.tgz#b40c096c54bab2a56b88de813af47b96e7e82b00"
@@ -7984,7 +7991,7 @@ qs@6.5.2, qs@~6.5.2:
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
query-string@^6.4.2:
query-string@*, query-string@^6.4.2:
version "6.5.0"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.5.0.tgz#2e1a70125af01f6f04573692d02c09302a1d8bfc"
integrity sha512-TYC4hDjZSvVxLMEucDMySkuAS9UIzSbAiYGyA9GWCjLKB8fQpviFbjd20fD7uejCDxZS+ftSdBKE6DS+xucJFg==