From 0473052c536df2adc13534bd9cfdffd5ad541c1c Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 16 Dec 2018 17:02:56 +0000
Subject: [PATCH] File list filter...
---
borgbutler-webapp/src/components/views/archives/FileListPanel.jsx | 27 ++++++++++++++++++++++++---
borgbutler-webapp/src/components/views/archives/FileListTable.jsx | 2 +-
borgbutler-webapp/src/components/views/archives/FileListFilter.jsx | 16 ++++++++--------
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java | 6 ++++--
4 files changed, 37 insertions(+), 14 deletions(-)
diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java
index b753cdd..1e8acfe 100644
--- a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/ArchivesRest.java
@@ -5,6 +5,7 @@
import de.micromata.borgbutler.data.Repository;
import de.micromata.borgbutler.json.JsonUtils;
import de.micromata.borgbutler.json.borg.BorgFilesystemItem;
+import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,10 +50,11 @@
* @see JsonUtils#toJson(Object, boolean)
*/
public String getArchiveFileLIst(@QueryParam("archiveId") String archiveId,
- @QueryParam("maxResultSize") Integer maxResultSize,
+ @QueryParam("search") String search,
+ @QueryParam("maxResultSize") String maxResultSize,
@QueryParam("force") boolean force,
@QueryParam("prettyPrinter") boolean prettyPrinter) {
- int maxSize = maxResultSize != null ? maxResultSize : 50;
+ int maxSize = NumberUtils.toInt(maxResultSize, 50);
List<BorgFilesystemItem> items = ButlerCache.getInstance().getArchiveContent(archiveId, force, maxSize);
if (items == null) {
return "[]";
diff --git a/borgbutler-webapp/src/components/views/archives/FileListFilter.jsx b/borgbutler-webapp/src/components/views/archives/FileListFilter.jsx
index 4c56e00..4d04f18 100644
--- a/borgbutler-webapp/src/components/views/archives/FileListFilter.jsx
+++ b/borgbutler-webapp/src/components/views/archives/FileListFilter.jsx
@@ -4,11 +4,11 @@
import {IconRefresh} from '../../general/IconComponents';
import I18n from '../../general/translation/I18n';
-function FileListFilters({loadLog, changeFilter, filters}) {
+function FileListFilter({reload, changeFilter, filter}) {
return (
<form
- onSubmit={loadLog}
+ onSubmit={reload}
className={'form-inline'}
>
<FormLabel length={1}>
@@ -16,14 +16,14 @@
</FormLabel>
<FormInput
- value={filters.search}
+ value={filter.search}
name={'search'}
onChange={changeFilter}
fieldLength={5}
/>
<FormSelect
- value={filters.maxSize}
+ value={filter.maxSize}
name={'maxSize'}
onChange={changeFilter}
hint={<I18n name={'common.limitsResultSize'} />}
@@ -41,13 +41,13 @@
);
}
-FileListFilters.propTypes = {
+FileListFilter.propTypes = {
changeFilter: PropTypes.func.isRequired,
- filters: PropTypes.shape({
+ filter: PropTypes.shape({
search: PropTypes.string,
maxSize: PropTypes.oneOf(['50', '100', '500', '1000', '10000']),
}).isRequired,
- loadLog: PropTypes.func.isRequired
+ reload: PropTypes.func.isRequired
};
-export default FileListFilters;
+export default FileListFilter;
diff --git a/borgbutler-webapp/src/components/views/archives/FileListPanel.jsx b/borgbutler-webapp/src/components/views/archives/FileListPanel.jsx
index d6db0b5..475380d 100644
--- a/borgbutler-webapp/src/components/views/archives/FileListPanel.jsx
+++ b/borgbutler-webapp/src/components/views/archives/FileListPanel.jsx
@@ -3,18 +3,28 @@
import {getRestServiceUrl} from '../../../utilities/global';
import ErrorAlert from '../../general/ErrorAlert';
import FileListTable from "./FileListTable";
+import FileListFilter from "./FileListFilter";
class ArchiveView extends React.Component {
state = {
isFetching: false, activeTab: '1',
- fileList: undefined
+ fileList: undefined,
+ filter: {
+ search: '',
+ maxSize: '50'
+ }
};
componentDidMount = () => {
this.fetchArchiveFileList(false);
};
+ handleInputChange = (event) => {
+ event.preventDefault();
+ this.setState({filter : {...this.state.filter, [event.target.name]: event.target.value}});
+ };
+
fetchArchiveFileList = (force) => {
let forceReload = false;
@@ -27,7 +37,9 @@
});
fetch(getRestServiceUrl('archives/filelist', {
archiveId: this.props.archiveId,
- force: forceReload
+ force: forceReload,
+ search: this.state.filter.search,
+ maxResultSize: this.state.filter.maxSize
}), {
method: 'GET',
headers: {
@@ -61,12 +73,21 @@
} else if (this.state.fileList) {
if (this.state.fileList.length > 0) {
content = <React.Fragment>
+ <FileListFilter
+ filter={this.state.filter}
+ changeFilter={this.handleInputChange}
+ reload={(event) => {
+ event.preventDefault();
+ this.fetchArchiveFileList();
+ }}
+ />
<FileListTable
entries={this.state.fileList}/>
</React.Fragment>;
} else {
content = <React.Fragment>
- <Button outline color="primary" onClick={() => this.fetchArchiveFileList(true)}>Load file list from borg backup server</Button>
+ <Button outline color="primary" onClick={() => this.fetchArchiveFileList(true)}>Load file list from
+ borg backup server</Button>
</React.Fragment>;
}
}
diff --git a/borgbutler-webapp/src/components/views/archives/FileListTable.jsx b/borgbutler-webapp/src/components/views/archives/FileListTable.jsx
index e0d581d..e5c9c42 100644
--- a/borgbutler-webapp/src/components/views/archives/FileListTable.jsx
+++ b/borgbutler-webapp/src/components/views/archives/FileListTable.jsx
@@ -10,7 +10,7 @@
<thead>
<tr>
<th>Mode</th>
- <th>Date</th>
+ <th>Modified time</th>
<th>Size</th>
<th>Path</th>
</tr>
--
Gitblit v1.10.0