Skip to content

Commit d663034

Browse files
committed
Combine logic so we aren't constantly duplicating it
1 parent 25621f4 commit d663034

File tree

3 files changed

+40
-62
lines changed

3 files changed

+40
-62
lines changed

resources/assets/scripts/components/server/components/filemanager/FileRow.vue

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,30 @@
11
<template>
22
<div>
3-
<div class="row" :class="{ clickable: canEdit(file), 'active-selection': contextMenuVisible }" v-on:contextmenu="showContextMenu">
4-
<div class="flex-none icon">
5-
<Icon name="file-text" v-if="!file.symlink"/>
6-
<Icon name="link2" v-else/>
3+
<div v-on:contextmenu="showContextMenu">
4+
<div class="row" :class="{ clickable: canEdit(file), 'active-selection': contextMenuVisible }" v-if="!file.directory">
5+
<div class="flex-none icon">
6+
<Icon name="file-text" v-if="!file.symlink"/>
7+
<Icon name="link2" v-else/>
8+
</div>
9+
<div class="flex-1">{{file.name}}</div>
10+
<div class="flex-1 text-right text-neutral-600">{{readableSize(file.size)}}</div>
11+
<div class="flex-1 text-right text-neutral-600">{{formatDate(file.modified)}}</div>
12+
<div class="flex-none w-1/6"></div>
713
</div>
8-
<div class="flex-1">{{file.name}}</div>
9-
<div class="flex-1 text-right text-neutral-600">{{readableSize(file.size)}}</div>
10-
<div class="flex-1 text-right text-neutral-600">{{formatDate(file.modified)}}</div>
11-
<div class="flex-none w-1/6"></div>
14+
<router-link class="row clickable"
15+
:class="{ 'active-selection': contextMenuVisible }"
16+
:to="{ name: 'server-files', params: { path: getClickablePath(file.name) }}"
17+
v-else
18+
>
19+
<div class="flex-none icon text-primary-700">
20+
<Icon name="folder"/>
21+
</div>
22+
<div class="flex-1">{{file.name}}</div>
23+
<div class="flex-1 text-right text-neutral-600"></div>
24+
<div class="flex-1 text-right text-neutral-600">{{formatDate(file.modified)}}</div>
25+
<div class="flex-none w-1/6"></div>
26+
</router-link>
27+
1228
</div>
1329
<FileContextMenu
1430
class="context-menu"
@@ -41,13 +57,15 @@
4157
required: true,
4258
},
4359
editable: {
44-
type: Array,
45-
required: true,
60+
type: Array as () => Array<string>,
61+
default: () => [],
62+
required: false,
4663
},
4764
},
4865
4966
data: function () {
5067
return {
68+
currentDirectory: this.$route.params.path || '/',
5169
contextMenuVisible: false,
5270
deleteModalVisible: false,
5371
};
@@ -96,8 +114,8 @@
96114
/**
97115
* Determine if a file can be edited on the Panel.
98116
*/
99-
canEdit: function (file: any): boolean {
100-
return this.editable.indexOf(file.mime) >= 0;
117+
canEdit: function (file: DirectoryContentObject): boolean {
118+
return !file.directory && this.editable.indexOf(file.mime) >= 0;
101119
},
102120
103121
/**
@@ -114,6 +132,10 @@
114132
}
115133
},
116134
135+
getClickablePath(directory: string): string {
136+
return `${this.currentDirectory.replace(/\/$/, '')}/${directory}`;
137+
},
138+
117139
readableSize: readableSize,
118140
formatDate: formatDate,
119141
},

resources/assets/scripts/components/server/components/filemanager/FolderRow.vue

Lines changed: 0 additions & 47 deletions
This file was deleted.

resources/assets/scripts/components/server/subpages/FileManager.vue

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<div class="flex-none w-1/6">Actions</div>
3333
</div>
3434
<div v-for="directory in directories">
35-
<FolderRow :directory="directory" :key="directory.name"/>
35+
<FileRow :file="directory" v-on:deleted="folderRowDeleted(directory)" :key="`dir-${directory.name}`"/>
3636
</div>
3737
<div v-for="file in files">
3838
<FileRow :file="file" :editable="editableFiles" v-on:deleted="fileRowDeleted(file)" :key="file.name"/>
@@ -60,7 +60,6 @@
6060
import {map} from 'lodash';
6161
import getDirectoryContents from "@/api/server/getDirectoryContents";
6262
import FileRow from "@/components/server/components/filemanager/FileRow.vue";
63-
import FolderRow from "@/components/server/components/filemanager/FolderRow.vue";
6463
import CreateFolderModal from '../components/filemanager/modals/CreateFolderModal.vue';
6564
import RenameModal from '../components/filemanager/modals/RenameModal.vue';
6665
import DeleteFileModal from '../components/filemanager/modals/DeleteFileModal.vue';
@@ -77,7 +76,7 @@
7776
7877
export default Vue.extend({
7978
name: 'FileManager',
80-
components: {CreateFolderModal, DeleteFileModal, FileRow, FolderRow, RenameModal},
79+
components: {CreateFolderModal, DeleteFileModal, FileRow, RenameModal},
8180
computed: {
8281
...mapState('server', ['server', 'credentials']),
8382
...mapState('socket', ['connected']),
@@ -185,6 +184,10 @@
185184
this.files = this.files.filter(data => data !== file);
186185
},
187186
187+
folderRowDeleted: function (file: DirectoryContentObject) {
188+
this.directories = this.directories.filter(data => data !== file);
189+
},
190+
188191
directoryCreated: function (directory: string) {
189192
this.$router.push({ name: 'server-files', params: { path: join(this.currentDirectory, directory) }});
190193
},

0 commit comments

Comments
 (0)