From d4f0801ca1511594f397b324ff9ca4ce4c6d172e Mon Sep 17 00:00:00 2001 From: chiayin Date: Thu, 11 Jan 2024 12:26:40 +0800 Subject: [PATCH] feat: File rename API done. --- src/main.js | 2 ++ src/module/alertModal.js | 29 ++++++++++++++++++++++ src/stores/files.js | 31 +++++++++++++++++++++--- src/views/Files/index.vue | 51 +++++++++++++++++++++++++++++++++++---- 4 files changed, 104 insertions(+), 9 deletions(-) diff --git a/src/main.js b/src/main.js index 13dcaf8..4e28719 100644 --- a/src/main.js +++ b/src/main.js @@ -47,6 +47,7 @@ import Calendar from 'primevue/calendar'; import Tooltip from 'primevue/tooltip'; import Checkbox from 'primevue/checkbox'; import Dialog from 'primevue/dialog'; +import ContextMenu from 'primevue/contextmenu'; const emitter = mitt(); const app = createApp(App); @@ -99,6 +100,7 @@ app.component('Slider', Slider); app.component('Calendar', Calendar); app.component('Checkbox', Checkbox); app.component('Dialog', Dialog); +app.component('ContextMenu', ContextMenu); app.component('Draggable', draggable); // 拖曳 app.directive('tooltip', Tooltip); diff --git a/src/module/alertModal.js b/src/module/alertModal.js index e685e97..2f29da5 100644 --- a/src/module/alertModal.js +++ b/src/module/alertModal.js @@ -287,3 +287,32 @@ export async function uploadloader() { customClass: customClass, }) }; +/** + * Rename Modal + * @param { function } rename + */ +export async function renameModal(rename, type, id) { + let fileName = ''; + const { value, isConfirmed } = await Swal.fire({ + title: 'RENAME', + input: 'text', + inputPlaceholder: 'Enter File Name.', + inputValue: fileName, + inputValidator: value => { + if(!value) return 'You need to write something!'; + fileName = value; + }, + icon: 'info', + iconHtml: 'edit_square', + iconColor: '#0099FF', + reverseButtons: true, + confirmButtonColor: '#0099FF', + showCancelButton: '#94a3b8', + customClass: customClass, + }); + + // 改名成功 + if(isConfirmed) await rename(type, id, value); + // 清空欄位 + fileName = ''; +} diff --git a/src/stores/files.js b/src/stores/files.js index 8157fac..b02eff1 100644 --- a/src/stores/files.js +++ b/src/stores/files.js @@ -168,15 +168,38 @@ export default defineStore('filesStore', { }, /** * Rename a Log + * @param { string } type log | filter | log-check | filter-check + * @param { number } id + * @param { string } name */ - async rename() { - const id = this.uploadLogId; - const api = `/api/logs/${id}/name`; - const data = {"name": this.uploadFileName}; + async rename(type, id, fileName) { + // 先判斷有沒有 uploadLogId,有就設定 id 和 type;再判斷檔案型別。 + let api; + let data = {"name": fileName}; + if(this.uploadId && this.uploadFileName) { + type = 'log'; + id = this.uploadLogId; + fileName = this.uploadFileName; + } + switch (type) { + case 'log': + api = `/api/logs/${id}/name`; + break; + case 'filter': + api = `/api/filters/${id}/name`; + break; + case 'log-check': + api = `/api/log-checks/${id}/name`; + break; + case 'filter-check': + api = `/api/filter-checks/${id}/name`; + break; + } try { const response = await axios.put(api, data); this.uploadFileName = null; + await this.fetchAllFiles(); } catch(error) { apiError(error, 'Failed to rename.'); } diff --git a/src/views/Files/index.vue b/src/views/Files/index.vue index 7b943b7..8bf8fac 100644 --- a/src/views/Files/index.vue +++ b/src/views/Files/index.vue @@ -6,8 +6,8 @@