From 1bc1fb16719d01d6ba6675f67ac23aa488a164cd Mon Sep 17 00:00:00 2001 From: jihyun jo Date: Tue, 6 Feb 2024 14:28:35 +0900 Subject: [PATCH] module filter --- src/views/Summery.vue | 107 ++++++++++++++++++--------- src/views/Summery2.vue | 162 ----------------------------------------- 2 files changed, 73 insertions(+), 196 deletions(-) delete mode 100644 src/views/Summery2.vue diff --git a/src/views/Summery.vue b/src/views/Summery.vue index 0f45ad3..6c481bc 100644 --- a/src/views/Summery.vue +++ b/src/views/Summery.vue @@ -3,31 +3,32 @@ import {pipeline, table} from "@/store/fetchData.js"; export default { name: "Summery", - data(){ - return{ - pipelineList:[], - tableList:[], - pipelineFilter:[], + data() { + return { + pipelineList: [], + tableList: [], + pipelineFilter: [], // watch 로 변경 감시할 예정 // 추후 기본값은 all 으로 설정예정 // null 값을 넣을시 incluedes 에러가 난다 - pipelineSelected: [] + pipelineSelected: [], + moduleFilter: "" } }, - methods:{ - async getPipeline(){ + methods: { + async getPipeline() { this.pipelineList = (await pipeline()).data.data; }, - getFilter(){ + getFilter() { this.pipelineFilter = this.pipelineList.map(item => ({name: item.name, key: item.key})); console.log(this.pipelineFilter) }, - async getTable(){ + async getTable() { for (const pipelineKey of this.pipelineList.map((item) => item.key)) { const response = (await table(pipelineKey)).data.data response.forEach(item => this.tableList.push(item)); @@ -47,37 +48,65 @@ export default { } // 새로운 값 추가 + // watch 에서 push 안먹히는 이유 찾기 (제거는 먹힘) : watch 는 배열을 인식못하고 options 을 줘야 인식함 this.pipelineSelected.push(pipelineKey); console.log(this.pipelineSelected) }, // 필터는 모두 한번에 구현해서 watch 에 넣기 async filterTable() { - // `pipelineSelected` 값을 사용하여 테이블 데이터 필터링 + // `pipelineSelected` 값을 사용하여 테이블 데이터 파이프라인 필터링 : 새 업데이트 this.tableList = []; // 테이블 데이터 초기화 + let filteredTableList = []; for (const pipelineSelectedKey of this.pipelineSelected) { // 비동기 함수 호출은 async/await 사용 const response = (await table(pipelineSelectedKey)).data.data; - response.forEach(item => this.tableList.push(item)); + // tableList 가 아닌 tableList 로 바로 모듈 필터 적용 + response.forEach(item => filteredTableList.push(item)); console.log(pipelineSelectedKey); - // - } - }, - // 그다음 watch 에 넣어서 변경사항을 감시하고 자동 업데이트 시키도록 해야한다. + // 테이블 데이터 모듈 필터링 : 기존 데이터에 필터 + console.log("filteredTableList : " + filteredTableList); + console.log("filteredTableList Array : " + Array.isArray(filteredTableList)); + // filteredTableList 배열에 map 함수가 적용하여 moduleType 출력 + for (const moduleType of filteredTableList.map((item) => item.moduleType)) { + console.log("moduleType : " + moduleType); + } + // 출력된 moduleType 으로 if 조건절로 필터링 + if (this.moduleFilter === "") { + console.log(filteredTableList) + this.tableList = filteredTableList + } else { + console.log(filteredTableList.filter((item) => item.moduleType === this.moduleFilter)) + this.tableList = filteredTableList.filter((item) => item.moduleType === this.moduleFilter) + } + // else if (this.moduleFilter === "Extract") { + // return filteredTableList.filter((item) => item === "Extract") + // } else if (this.moduleFilter === "Send") { + // return filteredTableList.filter((item) => item === "Send") + // } else { + // return filteredTableList.filter((item) => item === "Post") + // } + } }, + // 그다음 watch 에 넣어서 변경사항을 감시하고 자동 업데이트 시키도록 해야한다. + watch: { pipelineSelected() { this.filterTable(); + }, + moduleFilter(){ + this.filterTable(); } - }, + } + , - // create 은 바로 실행이기 때문에 순차실행을 위해 async await 을 걸어준다. - async created(){ +// create 은 바로 실행이기 때문에 순차실행을 위해 async await 을 걸어준다. + async created() { await this.getPipeline(); await this.getTable(); await this.getFilter(); @@ -87,36 +116,46 @@ export default {