From 539bcaa982ba2d7e7d0a53ab8dfc618868709bb1 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Thu, 20 Dec 2018 01:48:44 +0000
Subject: [PATCH] Display diff state and download removed files from other archive.

---
 borgbutler-webapp/src/components/views/archives/FileListEntry.jsx |   19 +++++++++++++++----
 borgbutler-webapp/src/components/views/archives/FileListPanel.jsx |    2 +-
 borgbutler-webapp/src/components/views/archives/FileListTable.jsx |    4 +++-
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/borgbutler-webapp/src/components/views/archives/FileListEntry.jsx b/borgbutler-webapp/src/components/views/archives/FileListEntry.jsx
index 9c13adb..bd8307f 100644
--- a/borgbutler-webapp/src/components/views/archives/FileListEntry.jsx
+++ b/borgbutler-webapp/src/components/views/archives/FileListEntry.jsx
@@ -33,18 +33,29 @@
         });
 }
 
-function FileListEntry({archiveId, entry, search, mode, changeCurrentDirectory}) {
+function FileListEntry({archiveId, diffArchiveId, entry, search, mode, changeCurrentDirectory}) {
+    let displayPath = entry.displayPath;
+    let downloadArchiveId = archiveId;
+    if (entry.diffStatus === 'NEW') {
+        displayPath = "New: " + displayPath;
+    } else if  (entry.diffStatus === 'REMOVED') {
+        displayPath = "Rem: " + displayPath;
+        // Download removed files from other archive.
+        downloadArchiveId = diffArchiveId;
+    } else if (entry.diffStatus === 'MODIFIED') {
+        displayPath = "Mod: " + displayPath;
+    }
     let path;
     if (mode === 'tree' && entry.type === 'd') {
-        path = <Button color={'link'} onClick={() => changeCurrentDirectory(entry.path)}><Highlight search={search}>{entry.displayPath}</Highlight></Button>;
+        path = <Button color={'link'} onClick={() => changeCurrentDirectory(entry.path)}><Highlight search={search}>{displayPath}</Highlight></Button>;
     } else {
-        path = <Highlight search={search}>{entry.displayPath}</Highlight>;
+        path = <Highlight search={search}>{displayPath}</Highlight>;
     }
     return (
         <tr>
             <td className={'tt'}>{path}</td>
             <td className={'tt'}>
-                <div className={'btn'} onClick={() => download(archiveId, entry.fileNumber)}>
+                <div className={'btn'} onClick={() => download(downloadArchiveId, entry.fileNumber)}>
                     <IconDownload/></div>
             </td>
             <td className={'tt'}>{humanFileSize(entry.size, true, true)}</td>
diff --git a/borgbutler-webapp/src/components/views/archives/FileListPanel.jsx b/borgbutler-webapp/src/components/views/archives/FileListPanel.jsx
index c78bc65..0f94f96 100644
--- a/borgbutler-webapp/src/components/views/archives/FileListPanel.jsx
+++ b/borgbutler-webapp/src/components/views/archives/FileListPanel.jsx
@@ -98,7 +98,6 @@
                 </React.Fragment>;
             } else {
                 if (this.state.filter.mode === 'tree' && this.state.filter.currentDirectory.length > 0) {
-                    console.log(this.state.filter.currentDirectory);
                     let dirs = this.state.filter.currentDirectory.split('/');
                     let breadcrumbs = [];
                     for (let i = 0; i < dirs.length - 1; i++) {
@@ -135,6 +134,7 @@
                     {breadcrumb}
                     <FileListTable
                         archiveId={this.props.archiveId}
+                        diffArchiveId={this.state.filter.diffArchiveId}
                         entries={this.state.fileList}
                         search={this.state.filter.search}
                         mode={this.state.filter.mode}
diff --git a/borgbutler-webapp/src/components/views/archives/FileListTable.jsx b/borgbutler-webapp/src/components/views/archives/FileListTable.jsx
index 50b95a4..8b03adc 100644
--- a/borgbutler-webapp/src/components/views/archives/FileListTable.jsx
+++ b/borgbutler-webapp/src/components/views/archives/FileListTable.jsx
@@ -3,7 +3,7 @@
 import {Table} from 'reactstrap';
 import FileListEntry from './FileListEntry';
 
-function FileListTable({archiveId, entries, search, mode, changeCurrentDirectory}) {
+function FileListTable({archiveId, diffArchiveId, entries, search, mode, changeCurrentDirectory}) {
     const lowercaseSearch = search.split(' ')[0].toLowerCase();
     return (
         <Table striped bordered hover size={'sm'} responsive>
@@ -20,6 +20,7 @@
             {entries
                 .map((entry, index) => <FileListEntry
                     archiveId={archiveId}
+                    diffArchiveId={diffArchiveId}
                     entry={entry}
                     search={lowercaseSearch}
                     mode={mode}
@@ -33,6 +34,7 @@
 
 FileListTable.propTypes = {
     archiveId: PropTypes.string,
+    diffArchiveId: PropTypes.string,
     entries: PropTypes.array,
     search: PropTypes.string,
     mode: PropTypes.string,

--
Gitblit v1.10.0