From 911abc21396391b64ae6a8ea9577ba87a771c92e Mon Sep 17 00:00:00 2001 From: chiayin Date: Thu, 14 Dec 2023 15:36:50 +0800 Subject: [PATCH] refactor: Issues #177 change files API done. --- src/stores/files.js | 63 ++++++++++++++++++++---- src/views/Discover/Conformance/index.vue | 12 ++--- src/views/Files/index.vue | 29 +++++------ 3 files changed, 72 insertions(+), 32 deletions(-) diff --git a/src/stores/files.js b/src/stores/files.js index b04f4cd..f7d5755 100644 --- a/src/stores/files.js +++ b/src/stores/files.js @@ -1,12 +1,8 @@ import { defineStore } from "pinia"; -import loadingStore from './loading.js'; -import pinia from '@/stores/main.js' import axios from "axios"; import moment from 'moment'; import apiError from '@/module/apiError.js'; -const loading = loadingStore(pinia); - export default defineStore('filesStore', { state: () => ({ allFilter: [ @@ -37,6 +33,13 @@ export default defineStore('filesStore', { ownerName: '', } ], + allEventFiles: [ + { + parentLog: '', + fileType: '', + ownerName: '', + } + ], switchFilesTagData: { ALL: ['Log', 'Filter', 'Rule', 'Design'], DISCOVER: ['Log', 'Filter', 'Rule'], @@ -51,12 +54,7 @@ export default defineStore('filesStore', { * Get allFiles and switch files tag */ allFiles: state => { - let result = [ - ...state.allEventLog, - ...state.allFilter, - ...state.allConformanceLog, - ...state.allConformanceFilter, - ]; + let result = state.allEventFiles; let data = state.switchFilesTagData; let filesTag = state.filesTag; @@ -163,6 +161,51 @@ export default defineStore('filesStore', { apiError(error, 'Failed to load the filters.'); }; }, + /** + * Fetch All Files api + */ + async fetchAllFiles() { + const api = '/api/files'; + let icon = ''; + let fileType = ''; + let parentLog = ''; + + try { + const response = await axios.get(api); + + this.allEventFiles = response.data; + this.allEventFiles.map(o => { + switch (o.type) { + case 'log': + icon = 'work_history'; + fileType = 'Log'; + parentLog = o.name; + break; + case 'filter': + icon = 'tornado'; + fileType = 'Filter'; + parentLog = o.parent.name; + break; + case 'log-check': + case 'filter-check': + icon = 'local_police'; + fileType = 'Rule'; + parentLog = o.parent.name; + break; + } + o.icon = icon; + o.parentLog = parentLog; + o.fileType = fileType; + o.ownerName = o.owner.name; + o.updated_base = o.updated_at; + o.accessed_base = o.accessed_at; + o.updated_at = moment(o.updated_at).utcOffset('+08:00').format('YYYY-MM-DD HH:mm'); + o.accessed_at = o.accessed_at ? moment(o.accessed_at).utcOffset('+08:00').format('YYYY-MM-DD HH:mm') : null; + }); + } catch(error) { + apiError(error, 'Failed to load the files.'); + }; + }, // fetchRule(){o.icon = local_police} // fetchDesign(){o.icon = shape_line} }, diff --git a/src/views/Discover/Conformance/index.vue b/src/views/Discover/Conformance/index.vue index bee5fdd..f509b37 100644 --- a/src/views/Discover/Conformance/index.vue +++ b/src/views/Discover/Conformance/index.vue @@ -22,10 +22,10 @@ export default { const loadingStore = LoadingStore(); const conformanceStore = ConformanceStore(); const { isLoading } = storeToRefs(loadingStore); - const { allConformanceLog, allConformanceFilter } = storeToRefs(filesStore); + const { allFiles } = storeToRefs(filesStore); const { conformanceLogId, conformanceFilterId, conformanceLogCreateCheckId, conformanceFilterCreateCheckId, conformanceLogTempCheckId, conformanceFilterTempCheckId, selectedRuleType, selectedActivitySequence, selectedMode, selectedProcessScope, selectedActSeqMore, selectedActSeqFromTo, conformanceRuleData, conformanceTempReportData, conformanceFileName } = storeToRefs(conformanceStore); - return { filesStore, allConformanceLog, allConformanceFilter, isLoading, conformanceLogId, conformanceFilterId, conformanceLogCreateCheckId, conformanceFilterCreateCheckId, conformanceLogTempCheckId, conformanceFilterTempCheckId, conformanceStore, selectedRuleType, selectedActivitySequence, selectedMode, selectedProcessScope, selectedActSeqMore, selectedActSeqFromTo, conformanceRuleData, conformanceTempReportData, conformanceFileName } + return { filesStore, allFiles, isLoading, conformanceLogId, conformanceFilterId, conformanceLogCreateCheckId, conformanceFilterCreateCheckId, conformanceLogTempCheckId, conformanceFilterTempCheckId, conformanceStore, selectedRuleType, selectedActivitySequence, selectedMode, selectedProcessScope, selectedActSeqMore, selectedActSeqFromTo, conformanceRuleData, conformanceTempReportData, conformanceFileName } }, components: { StatusBar, @@ -50,8 +50,8 @@ export default { this.conformanceLogId = params.checkFileId; this.conformanceLogCreateCheckId = params.checkId; // 為複寫 Modal 取得 fileName - await this.filesStore.fetchConformanceLog(); - await this.allConformanceLog.forEach(file => { + await this.filesStore.fetchAllFiles(); + await this.allFiles.forEach(file => { if(file.id == this.conformanceLogCreateCheckId) return this.conformanceFileName = file.name; }); break; @@ -59,8 +59,8 @@ export default { this.conformanceFilterId = params.checkFileId; this.conformanceFilterCreateCheckId = params.checkId; // 為複寫 Modal 取得 fileName - await this.filesStore.fetchConformanceFilter(); - await this.allConformanceFilter.forEach(file => { + await this.filesStore.fetchAllFiles(); + await this.allFiles.forEach(file => { if(file.id == this.conformanceFilterCreateCheckId) return this.conformanceFileName = file.name; }); } diff --git a/src/views/Files/index.vue b/src/views/Files/index.vue index 1e6c033..3006529 100644 --- a/src/views/Files/index.vue +++ b/src/views/Files/index.vue @@ -138,8 +138,8 @@ let fileId; let params; - switch (file.fileType) { - case 'Log': + switch (file.type) { + case 'log': this.createFilterId = null; this.baseLogId = file.id; fileId = file.id; @@ -148,9 +148,9 @@ this.$router.push({name: 'Map', params: params}); // this.$router.push({name: 'Map', params: params, query: params}); break; - case 'Filter': + case 'filter': this.createFilterId = file.id; - this.baseLogId = file.log.id; + this.baseLogId = file.parent.id; fileId = file.id; type = 'filter'; params = { type: type, fileId: fileId }; @@ -158,26 +158,23 @@ // this.$router.push({name: 'Map', params: params, query: params}); break; // 先不考慮 MAP 只做 CONFORMANCE - case 'Rule': + case 'log-check': // path: "/:type/:checkType/:checkId/conformance/:checkFileId" type = 'rule'; - if(file.log){ - params = { type: type, checkType: 'log', checkId: file.id, checkFileId: file.log.id }; - this.$router.push({name: 'CheckConformance', params: params}); - } else if(file.filter) { - params = { type: type, checkType: 'filter', checkId: file.id, checkFileId: file.filter.id }; - this.$router.push({name: 'CheckConformance', params: params}); - } + params = { type: type, checkType: 'log', checkId: file.id, checkFileId: file.parent.id }; + this.$router.push({name: 'CheckConformance', params: params}); + break + case 'filter-check': + type = 'rule'; + params = { type: type, checkType: 'filter', checkId: file.id, checkFileId: file.parent.id }; + this.$router.push({name: 'CheckConformance', params: params}); break; } } }, mounted() { this.isLoading = true; - this.store.fetchEventLog(); - this.store.fetchFilter(); - this.store.fetchConformanceLog(); - this.store.fetchConformanceFilter(); + this.store.fetchAllFiles(); this.isLoading = false; } }