diff --git a/src/module/alertModal.js b/src/module/alertModal.js
index 41ffa1d..0bc895e 100644
--- a/src/module/alertModal.js
+++ b/src/module/alertModal.js
@@ -253,7 +253,6 @@ export async function uploadSuccess() {
*/
export async function uploadConfirm(fetchData) {
const filesStore = FilesStore();
-
const result = await Swal.fire({
title: 'ARE YOU SURE?',
html: 'After uploading, you won’t be able to modify labels.',
@@ -266,13 +265,10 @@ export async function uploadConfirm(fetchData) {
cancelButtonText: 'No',
cancelButtonColor: '#94a3b8',
customClass: customClass,
- })
+ });
+
if(result.isConfirmed) {
filesStore.uploadLog(fetchData);
- } else if(result.dismiss === 'cancel') {
- // 什麼都不做
- } else if(result.dismiss === 'backdrop') {
- // 什麼都不做
}
};
/**
@@ -326,10 +322,10 @@ export async function renameModal(rename, type, id) {
*/
export async function deleteFileModal(files, type, id) {
const filesStore = FilesStore();
-
+ let htmlText = files.length === 0 ? '' : `
All related files will be deleted.
List of file(s) to delete:
`;
const result = await Swal.fire({
title: 'ARE YOU SURE?',
- html: 'All related files will be deleted.
List of file(s) to delete:
- [log] Taipower 001
- [filter] Filter0401 - Taipower 001 Filter0401 - Taipower 001 Filter0401 - Taipower 001
- [rule] 1224 - Taipower 001
',
+ html: htmlText,
icon: 'warning',
iconColor: '#FF3366',
reverseButtons:true,
@@ -339,12 +335,9 @@ export async function deleteFileModal(files, type, id) {
cancelButtonText: 'No',
cancelButtonColor: '#94a3b8',
customClass: customClass,
- })
+ });
+
if(result.isConfirmed) {
- // filesStore.deleteFile(type, id);
- } else if(result.dismiss === 'cancel') {
- // 什麼都不做
- } else if(result.dismiss === 'backdrop') {
- // 什麼都不做
+ filesStore.deleteFile(type, id);
}
};
diff --git a/src/module/apiError.js b/src/module/apiError.js
index cca8b1f..5121bfe 100644
--- a/src/module/apiError.js
+++ b/src/module/apiError.js
@@ -1,6 +1,6 @@
import router from "@/router/index.js";
import loadingStore from '@/stores/loading.js';
-import pinia from '@/stores/main.js'
+import pinia from '@/stores/main.js';
import {useToast} from 'vue-toast-notification';
import 'vue-toast-notification/dist/theme-sugar.css';
import axios from "axios";
diff --git a/src/stores/files.js b/src/stores/files.js
index 744e2b4..c4a9508 100644
--- a/src/stores/files.js
+++ b/src/stores/files.js
@@ -3,7 +3,11 @@ import axios from "axios";
import moment from 'moment';
import apiError from '@/module/apiError.js';
import Swal from 'sweetalert2';
-import { uploadFailedFirst, uploadFailedSecond, uploadloader, uploadSuccess } from '@/module/alertModal.js'
+import { uploadFailedFirst, uploadFailedSecond, uploadloader, uploadSuccess } from '@/module/alertModal.js';
+import pinia from '@/stores/main.js';
+import loadingStore from '@/stores/loading.js';
+
+const loading = loadingStore(pinia);
export default defineStore('filesStore', {
state: () => ({
@@ -26,26 +30,33 @@ export default defineStore('filesStore', {
allUploadDetail: null,
uploadLogId: null,
uploadFileName: null,
+ allDependentsData: null,
}),
getters: {
- /**
- * Get allFiles and switch files tag
- */
- allFiles: state => {
- let result = state.allEventFiles;
- let data = state.switchFilesTagData;
- let filesTag = state.filesTag;
+ /**
+ * Get allFiles and switch files tag
+ */
+ allFiles: state => {
+ let result = state.allEventFiles;
+ let data = state.switchFilesTagData;
+ let filesTag = state.filesTag;
- result = result.filter(file => data[filesTag].includes(file.fileType));
+ result = result.filter(file => data[filesTag].includes(file.fileType));
- return result;
+ return result;
},
- /**
- * Get upload preview
- */
- uploadDetail: state => {
- return state.allUploadDetail;
- }
+ /**
+ * Get upload preview
+ */
+ uploadDetail: state => {
+ return state.allUploadDetail;
+ },
+ /**
+ * Get dependents of files data
+ */
+ dependentsData: state => {
+ return state.allDependentsData;
+ }
},
actions: {
/**
@@ -205,6 +216,35 @@ export default defineStore('filesStore', {
apiError(error, 'Failed to rename.');
}
},
+ /**
+ * Get the Dependents of the files
+ * @param { string } type log | filter | log-check | filter-check
+ * @param { number } id
+ */
+ async getDependents(type, id) {
+ let api;
+
+ switch (type) {
+ case 'log':
+ api = `/api/logs/${id}/dependents`;
+ break;
+ case 'filter':
+ api = `/api/filters/${id}/dependents`;
+ break;
+ case 'log-check':
+ api = `/api/log-checks/${id}/dependents`;
+ break;
+ case 'filter-check':
+ api = `/api/filter-checks/${id}/dependents`;
+ break;
+ }
+ try {
+ const response = await axios.get(api);
+ this.allDependentsData = response.data;
+ } catch(error) {
+ apiError(error, 'Failed to get Dependents of the files.');
+ }
+ },
/**
* Delete file
* @param { string } type log | filter | log-check | filter-check
@@ -213,6 +253,7 @@ export default defineStore('filesStore', {
async deleteFile(type, id) {
let api;
+ loading.isLoading = true;
switch (type) {
case 'log':
api = `/api/logs/${id}`;
@@ -229,8 +270,11 @@ export default defineStore('filesStore', {
}
try {
const response = await axios.delete(api);
+ await this.fetchAllFiles();
} catch(error) {
apiError(error, 'Failed to delete.');
+ } finally {
+ loading.isLoading = false;
}
},
/**
@@ -249,12 +293,14 @@ export default defineStore('filesStore', {
case 'filter':
api = `/api/filters/${id}/csv`;
break;
- case 'log-check':
- api = `/api/log-checks/${id}/csv`;
- break;
- case 'filter-check':
- api = `/api/filter-checks/${id}/csv`;
- break;
+ // case 'log-check':
+ // api = `/api/log-checks/${id}/csv`;
+ // break;
+ // case 'filter-check':
+ // api = `/api/filter-checks/${id}/csv`;
+ // break;
+ default:
+ return;
}
try {
const response = await axios.get(api);
diff --git a/src/views/Files/index.vue b/src/views/Files/index.vue
index d1155ba..4262ab7 100644
--- a/src/views/Files/index.vue
+++ b/src/views/Files/index.vue
@@ -146,10 +146,11 @@
const store = filesStore();
const allMapDataStore = AllMapDataStore();
const loadingStore = LoadingStore();
+ const { dependentsData } = storeToRefs(store);
const { createFilterId, baseLogId } = storeToRefs(allMapDataStore);
const { isLoading } = storeToRefs(loadingStore);
- return { store, allMapDataStore, createFilterId, baseLogId, isLoading }
+ return { store, dependentsData, allMapDataStore, createFilterId, baseLogId, isLoading }
},
components: {
IconDataFormat,
@@ -287,21 +288,34 @@
* @param {number} id
* @param {string} source hover icon
*/
- deleteFile(type, id, source) {
- // 先取得 id 打 Delete Daile API
+ async deleteFile(type, id, source) {
+ let srt = '';
+ let data = [];
+
+ // 判斷是否來自 hover icon 選單
if(type && id && source === 'list-hover') {
this.selectedType = type;
this.selectedId = id;
}
- console.log(this.selectedId);
- // let srt = '';
- // data.forEach(i => {
- // let content = `