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