Files
lucia-frontend/src/views/Discover/Conformance/ConformancePage.vue
2026-03-09 14:10:39 +08:00

138 lines
4.0 KiB
Vue

<template>
<main class="h-screen-main relative">
<div class="h-full relative bg-neutral-50">
<ConformanceSidebar></ConformanceSidebar>
<ConformanceResults></ConformanceResults>
</div>
<StatusBar></StatusBar>
</main>
</template>
<script>
// The Lucia project.
// Copyright 2023-2026 DSP, inc. All rights reserved.
// Authors:
// chiayin.kuo@dsp.im (chiayin), 2023/1/31
// cindy.chang@dsp.im (Cindy Chang), 2024/5/30
// imacat.yang@dsp.im (imacat), 2023/9/23
/**
* @module views/Discover/Conformance Conformance checking page
* with sidebar rule configuration and results display.
*/
import { useConformanceStore as useConformanceStoreInGuard } from "@/stores/conformance";
export default {
async beforeRouteEnter(to, from, next) {
const isCheckPage = to.name.includes("Check");
if (isCheckPage) {
const conformanceStore = useConformanceStoreInGuard();
switch (to.params.type) {
case "log":
conformanceStore.setConformanceLogCreateCheckId(to.params.fileId);
break;
case "filter":
conformanceStore.conformanceFilterCreateCheckId = to.params.fileId;
break;
}
await conformanceStore.getConformanceReport();
to.meta.file = await conformanceStore.conformanceTempReportData?.file;
}
next();
},
};
</script>
<script setup>
import { onMounted, onBeforeUnmount } from "vue";
import { useRoute } from "vue-router";
import { storeToRefs } from "pinia";
import { useLoadingStore } from "@/stores/loading";
import { useConformanceStore } from "@/stores/conformance";
import StatusBar from "@/components/Discover/StatusBar.vue";
import ConformanceResults from "@/components/Discover/Conformance/ConformanceResults.vue";
import ConformanceSidebar from "@/components/Discover/Conformance/ConformanceSidebar.vue";
const route = useRoute();
// Stores
const loadingStore = useLoadingStore();
const conformanceStore = useConformanceStore();
const { isLoading } = storeToRefs(loadingStore);
const {
conformanceLogId,
conformanceFilterId,
conformanceLogCreateCheckId,
conformanceFilterCreateCheckId,
conformanceLogTempCheckId,
conformanceFilterTempCheckId,
selectedRuleType,
selectedActivitySequence,
selectedMode,
selectedProcessScope,
selectedActSeqMore,
selectedActSeqFromTo,
conformanceRuleData,
conformanceTempReportData,
conformanceFileName,
} = storeToRefs(conformanceStore);
let loadingTimerId = null;
// Created logic
(async () => {
isLoading.value = true;
try {
const params = route.params;
const file = route.meta.file;
const isCheckPage = route.name.includes("Check");
if (!isCheckPage) {
switch (params.type) {
case "log":
conformanceLogId.value = params.fileId;
break;
case "filter":
conformanceFilterId.value = params.fileId;
break;
}
} else {
switch (params.type) {
case "log":
conformanceLogId.value = file.parent?.id;
conformanceFileName.value = file.name;
break;
case "filter":
conformanceFilterId.value = file.parent?.id;
conformanceFileName.value = file.name;
break;
}
await conformanceStore.getConformanceReport();
}
await conformanceStore.getConformanceParams();
} catch (error) {
console.error("Failed to initialize conformance:", error);
} finally {
loadingTimerId = setTimeout(() => (isLoading.value = false), 500);
}
})();
// Mounted
onMounted(() => {
selectedRuleType.value = "Have activity";
selectedActivitySequence.value = "Start & End";
selectedMode.value = "Directly follows";
selectedProcessScope.value = "End to end";
selectedActSeqMore.value = "All";
selectedActSeqFromTo.value = "From";
});
onBeforeUnmount(() => {
clearTimeout(loadingTimerId);
conformanceLogId.value = null;
conformanceFilterId.value = null;
conformanceLogCreateCheckId.value = null;
conformanceFilterCreateCheckId.value = null;
conformanceRuleData.value = null;
conformanceFileName.value = null;
});
</script>