Small fixes

This commit is contained in:
2022-10-14 13:22:01 +02:00
parent df361947cd
commit ffa3fc9a25
3 changed files with 71 additions and 15 deletions

View File

@@ -113,6 +113,7 @@ function createNewFolderDialog() {
</n-gi>
<n-gi span="2">
<DirViewerTable
:current-node="node"
:nodes="nodes"
:show-preview="showPreview"
@reloadNode="emit('reloadNode')"

View File

@@ -10,7 +10,7 @@ import type {
import type { SummaryCell } from 'naive-ui/es/data-table/src/interface';
import { inject, ref, nextTick, Suspense } from 'vue';
import filesize from 'filesize';
import { check_token, FS } from '@/api';
import { check_token, FS, isErrorResponse } from '@/api';
import { loadingMsgWrapper } from '@/utils';
import {
useMessage,
@@ -31,7 +31,8 @@ import {
FolderParent,
DocumentBlank,
Delete,
Download
Download,
Cut
} from '@vicons/carbon';
import semaphore from 'semaphore';
import NLink from '@/components/NLink.vue';
@@ -56,6 +57,7 @@ type DropdownOptionsType = Array<
>;
const props = defineProps<{
currentNode: Responses.GetNode;
nodes: Responses.GetNodeEntry[];
showPreview: boolean;
}>();
@@ -65,6 +67,7 @@ const checkedRows = ref<number[]>([]);
const deleteNodes = ref<number[]>([]);
const deleteDialog = ref();
const deleteDialogShow = ref(false);
const cutNodes = ref<number[]>([]);
const dropdownX = ref(0);
const dropdownY = ref(0);
@@ -82,6 +85,15 @@ const dropdownOptionsFolder: DropdownOptionsType = [
</NIcon>
)
},
{
label: () => <NText>Cut</NText>,
key: 'cut',
icon: () => (
<NIcon>
<Cut />
</NIcon>
)
},
{
label: () => <NText type="error">Delete</NText>,
key: 'delete',
@@ -102,6 +114,15 @@ const dropdownOptionsFile: DropdownOptionsType = [
</NIcon>
)
},
{
label: () => <NText>Cut</NText>,
key: 'cut',
icon: () => (
<NIcon>
<Cut />
</NIcon>
)
},
{
label: () => <NText type="error">Delete</NText>,
key: 'delete',
@@ -124,6 +145,9 @@ const dropdownSelect = loadingMsgWrapper(message, async (key: string) => {
await FS.download_file(token, dropdownCurrentNode.id);
else createZipDialog([dropdownCurrentNode.id], dialog, jwt);
break;
case 'cut':
cutNodes.value = [dropdownCurrentNode.id];
break;
case 'delete':
dialog.warning({
title: 'Really delete?',
@@ -269,19 +293,45 @@ const massDelete = loadingMsgWrapper(message, async () => {
});
});
function massCut() {
cutNodes.value = checkedRows.value;
checkedRows.value = [];
}
const pasteNodes = loadingMsgWrapper(message, async () => {
const token = await check_token(jwt);
if (!token) return;
const res = await FS.move(token, cutNodes.value, props.currentNode.id);
cutNodes.value = [];
if (isErrorResponse(res)) {
message.error(`Failed to move nodes: ${res.message}`);
return;
}
emit('reloadNode');
});
const selectionCell = (): SummaryCell => {
return {
value:
checkedRows.value.length != 0 ? (
<NButtonGroup>
<NButton onClick={massDownload}>Download</NButton>
<NButton onClick={massDelete} type="error">
Delete
</NButton>
</NButtonGroup>
) : (
''
),
value: (
<NButtonGroup>
{cutNodes.value.length != 0 ? (
<NButton onClick={pasteNodes}>Paste</NButton>
) : (
''
)}
{checkedRows.value.length != 0 ? (
<>
<NButton onClick={massDownload}>Download</NButton>
<NButton onClick={massCut}>Cut</NButton>
<NButton onClick={massDelete} type="error">
Delete
</NButton>
</>
) : (
''
)}
</NButtonGroup>
),
colSpan: props.showPreview ? 2 : 1
};
};