From 8786e2b427770df577964c833fcb96d789c49603 Mon Sep 17 00:00:00 2001 From: Simba Date: Sat, 2 Jan 2021 20:14:59 +0800 Subject: [PATCH] matter list sort. --- src/pages/matter/List.tsx | 15 ++-- src/pages/matter/widget/MatterPanel.less | 1 + src/pages/matter/widget/MatterSortPanel.less | 33 ++++++++ src/pages/matter/widget/MatterSortPanel.tsx | 83 ++++++++++++++++++++ 4 files changed, 127 insertions(+), 5 deletions(-) create mode 100644 src/pages/matter/widget/MatterSortPanel.less create mode 100644 src/pages/matter/widget/MatterSortPanel.tsx diff --git a/src/pages/matter/List.tsx b/src/pages/matter/List.tsx index f114197..c72c954 100644 --- a/src/pages/matter/List.tsx +++ b/src/pages/matter/List.tsx @@ -22,16 +22,16 @@ import { } from "antd"; import MessageBoxUtil from "../../common/util/MessageBoxUtil"; import { - ExclamationCircleFilled, CloudUploadOutlined, - PlusSquareOutlined, - MinusSquareOutlined, - FolderOutlined, - SyncOutlined, DeleteOutlined, DownloadOutlined, DragOutlined, + ExclamationCircleFilled, + FolderOutlined, + MinusSquareOutlined, + PlusSquareOutlined, ShareAltOutlined, + SyncOutlined, } from "@ant-design/icons"; import ImagePreviewer from "../widget/previewer/ImagePreviewer"; import Sun from "../../common/model/global/Sun"; @@ -47,6 +47,7 @@ import BreadcrumbPanel from "../widget/BreadcrumbPanel"; import Lang from "../../common/model/global/Lang"; import FileUtil from "../../common/util/FileUtil"; import SafeUtil from "../../common/util/SafeUtil"; +import MatterSortPanel from "./widget/MatterSortPanel"; interface IProps extends RouteComponentProps {} @@ -633,6 +634,10 @@ export default class List extends TankComponent { uploadMatters.map((m) => ) )} + {pager.data.length ? ( + this.refresh()} /> + ) : null} + {director.createMode ? ( , + refresh: () => any +} + +interface IState {} + +export default class MatterSortPanel extends TankComponent { + + static sortAutomaton = [SortDirection.ASC, SortDirection.DESC, null]; // 排序状态自动机:ASC -> DESC -> null -> ASC... + + changeFilterOrder = (orderName: string) => { + const { pager } = this.props; + ["orderName", "orderSize", "orderUpdateTime"] + .filter((name) => name !== orderName) + .forEach((key) => { + pager.setFilterValue(key, null); + }); + const filter = pager.getFilterValue(orderName); + const nextSortIndex = (MatterSortPanel.sortAutomaton.findIndex((key) => key === filter) + 1) % 3; + pager.setFilterValue(orderName, MatterSortPanel.sortAutomaton[nextSortIndex]); + this.props.refresh(); + }; + + render() { + const { pager } = this.props; + + return ( +
+
this.changeFilterOrder("orderName")} + > + 文件名 + {pager.getFilterValue("orderName") ? ( + pager.getFilterValue("orderName") === SortDirection.ASC ? ( + + ) : ( + + ) + ) : null} +
+
this.changeFilterOrder("orderSize")} + > + 大小 + {pager.getFilterValue("orderSize") ? ( + pager.getFilterValue("orderSize") === SortDirection.ASC ? ( + + ) : ( + + ) + ) : null} +
+
this.changeFilterOrder("orderUpdateTime")} + > + 修改日期 + {pager.getFilterValue("orderUpdateTime") ? ( + pager.getFilterValue("orderUpdateTime") === SortDirection.ASC ? ( + + ) : ( + + ) + ) : null} +
+
+ ); + } +}