|
10 | 10 | @click="onClick" |
11 | 11 | @change-name="onChangeName" |
12 | 12 | @delete-node="onDel" |
13 | | - @add-node="onAddNode" |
14 | 13 | @dragstart="dragCallback" |
| 14 | + @drop="drop" |
15 | 15 | :model="data" |
16 | 16 | v-bind:default-expanded="false" |
17 | 17 | > |
|
29 | 29 | <script> |
30 | 30 | import { VueTreeList, Tree, TreeNode } from 'vue-tree-list' |
31 | 31 | import { readDir, createDir, writeFile, removeDir, removeFile, renameFile } from '@tauri-apps/api/fs' |
32 | | -import { videoDir, resolve as pathResolve, join as pathJoin } from '@tauri-apps/api/path' |
| 32 | +import { videoDir, resolve as pathResolve, join as pathJoin, basename as pathBasename, sep as DS } from '@tauri-apps/api/path' |
33 | 33 | import { open } from '@tauri-apps/api/dialog' |
34 | 34 |
|
35 | 35 | const getPartialNodePath = (node, accum, override) => { |
36 | 36 | if (node.parent == null) { |
37 | | - return accum.reverse().join('/') |
| 37 | + return accum.reverse().join(DS) |
38 | 38 | } else { |
39 | 39 | accum.push(override == null ? node.name : override) |
40 | 40 | return getPartialNodePath(node.parent, accum) |
@@ -62,7 +62,6 @@ const slugify = (text) => |
62 | 62 | .replace(/--+/g, '-') + Date.now().toString() |
63 | 63 |
|
64 | 64 | const getNodeObj = (node) => { |
65 | | - console.log(node) |
66 | 65 | if (node.parent !== null) { |
67 | 66 | return node.parent.children.filter(function (el) { |
68 | 67 | return el.name === node.name |
@@ -103,6 +102,14 @@ export default { |
103 | 102 | dragCallback (event) { |
104 | 103 | console.log(event) |
105 | 104 | }, |
| 105 | + async drop (event) { |
| 106 | + const originPath = getFullNodePath(event.src) |
| 107 | + const nodeFile = await pathBasename(getFullNodePath(event.node)).then(result => result) |
| 108 | + const dest = getFullNodePath(event.target) |
| 109 | + const origin = await pathJoin(this.rootDir.trim(), originPath.trim(), nodeFile.trim()).then(result => result) |
| 110 | + const target = this.rootDir + dest + DS + nodeFile |
| 111 | + renameFile(origin, target) |
| 112 | + }, |
106 | 113 | async clickUpdateNode () { |
107 | 114 | await this.updateNode(null, true) |
108 | 115 | }, |
@@ -237,7 +244,7 @@ export default { |
237 | 244 | parent = parent.parent |
238 | 245 | } |
239 | 246 | if (parent !== null) { |
240 | | - path = await pathJoin(this.rootDir, getFullNodePath(parent)).then(result => result) + '\\' + value |
| 247 | + path = await pathJoin(this.rootDir, getFullNodePath(parent)).then(result => result) + DS + value |
241 | 248 | } |
242 | 249 | createDir(path).then((result) => { |
243 | 250 | this.addDir({ name: value }, parent) |
|
0 commit comments