frontend/app/FileEntryList.jsx (57 lines of code) (raw):
import React from "react";
import GeneralListComponent from "./GeneralListComponent.jsx";
import FileEntryFilterComponent from "./filter/FileEntryFilterComponent.jsx";
import { Link } from "react-router-dom";
import DeleteIcon from "@material-ui/icons/Delete";
import { IconButton } from "@material-ui/core";
class FileEntryList extends GeneralListComponent {
constructor(props) {
super(props);
this.endpoint = "/api/file";
this.filterEndpoint = "/api/file/list";
this.columns = [
{
header: "Id",
key: "id",
defaultSorting: "desc",
dataProps: { className: "align-right" },
headerProps: { className: "dashboardheader" },
},
GeneralListComponent.standardColumn("File path", "filepath"),
GeneralListComponent.standardColumn("Storage", "storage"),
GeneralListComponent.standardColumn("Owner", "user"),
GeneralListComponent.standardColumn("Version", "version"),
GeneralListComponent.dateTimeColumn("Create time", "ctime"),
GeneralListComponent.dateTimeColumn("Modification time", "mtime"),
GeneralListComponent.dateTimeColumn("Access time", "atime"),
{
header: "",
key: "links",
render: (id) => (
<Link to={"/file/" + id + "/delete"}>
<IconButton>
<DeleteIcon />
</IconButton>
</Link>
),
},
];
}
dependenciesDidLoad() {
this.setState({
filterTerms: this.props.location.search.includes("mine")
? { user: this.state.uid, match: "W_EXACT" }
: { match: "W_CONTAINS" },
});
}
getFilterComponent() {
return (
<FileEntryFilterComponent
filterDidUpdate={this.filterDidUpdate}
filterTerms={this.state.filterTerms}
isAdmin={this.state.isAdmin}
/>
);
}
}
export default FileEntryList;