Issue #151: Done.

This commit is contained in:
chiayin
2023-10-17 15:52:38 +08:00
parent c85b7f2d71
commit 85d1f9a487
4 changed files with 72 additions and 21 deletions

View File

@@ -5,7 +5,7 @@
<DspLogo /> <DspLogo />
</figure> </figure>
<div class="flex justify-between items-center" v-show="showMember"> <div class="flex justify-between items-center" v-show="showMember">
<button class="btn btn-sm btn-neutral mr-2" @click.prevent="logOut"> <button class="btn btn-sm btn-neutral mr-2" @click.prevent="logOutButton">
Logout Logout
</button> </button>
<!-- <figure> <!-- <figure>
@@ -19,9 +19,12 @@
</template> </template>
<script> <script>
import { storeToRefs } from 'pinia';
import loginStore from '@/stores/login.js'; import loginStore from '@/stores/login.js';
import DspLogo from '@/components/icons/DspLogo.vue'; import DspLogo from '@/components/icons/DspLogo.vue';
import IconMember from '@/components/icons/IconMember.vue'; import IconMember from '@/components/icons/IconMember.vue';
import AllMapDataStore from '@/stores/allMapData.js';
import { logoutLeave } from '@/module/alertModal.js';
export default { export default {
data() { data() {
@@ -32,15 +35,26 @@ export default {
setup() { setup() {
const store = loginStore(); const store = loginStore();
const { logOut } = store; const { logOut } = store;
const allMapDataStore = AllMapDataStore();
const { tempFilterId, temporaryData, postRuleData, ruleData } = storeToRefs(allMapDataStore);
return { return { logOut, temporaryData, tempFilterId, postRuleData, ruleData, allMapDataStore}
logOut,
}
}, },
components: { components: {
DspLogo, DspLogo,
IconMember IconMember
}, },
methods: {
logOutButton() {
if (this.$route.name === 'Map' && this.$route.params.type === 'log') {
this.tempFilterId = null;
this.temporaryData = [];
this.postRuleData = [];
this.ruleData = [];
};
this.logOut();
},
},
mounted() { mounted() {
this.$route.name === 'Login' || this.$route.name === 'NotFound404' ? this.showMember = false : this.showMember = true; this.$route.name === 'Login' || this.$route.name === 'NotFound404' ? this.showMember = false : this.showMember = true;
} }

View File

@@ -1,5 +1,6 @@
import Swal from 'sweetalert2'; import Swal from 'sweetalert2';
import AllMapDataStore from '@/stores/allMapData.js'; import AllMapDataStore from '@/stores/allMapData.js';
import LoginStore from '@/stores/login.js';
const customClass = { const customClass = {
htmlContainer: '!w-[564px]', htmlContainer: '!w-[564px]',
@@ -70,13 +71,42 @@ export async function leaveFilter(next, addFilterId, toPath) {
if(result.isConfirmed) { if(result.isConfirmed) {
await saveFilter(addFilterId) await saveFilter(addFilterId)
next(toPath); next(toPath);
} } else if(result.dismiss === 'cancel') {
else if(result.dismiss === 'cancel') {
allMapDataStore.tempFilterId = null; allMapDataStore.tempFilterId = null;
next(toPath); next(toPath);
} } else if(result.dismiss === 'backdrop') {
else if(result.dismiss === 'backdrop') {
next(false); next(false);
} }
};
export async function logoutLeave(addFilterId) {
const allMapDataStore = AllMapDataStore();
const loginStore = LoginStore();
const result = await Swal.fire({
title: 'ARE YOU SURE TO LEAVE MAP?',
html: 'Filter settings have not been saved.</br>Click “Save as” to save filtered results, “OK” to leave map.',
icon: 'warning',
iconColor: '#FF3366',
reverseButtons:true,
confirmButtonText: 'Save as',
confirmButtonColor: '#FF3366',
showCancelButton: true,
cancelButtonText: 'OK',
cancelButtonColor: '#94a3b8',
customClass: customClass
})
if(result.isConfirmed) {
await saveFilter(addFilterId);
// allMapDataStore.tempFilterId = await null;
// allMapDataStore.temporaryData = await [];
// allMapDataStore.postRuleData = await [];
// allMapDataStore.ruleData = await [];
// await loginStore.logOut()
} else if(result.dismiss === 'cancel') {
allMapDataStore.tempFilterId = await null;
// allMapDataStore.temporaryData = await [];
// allMapDataStore.postRuleData = await [];
// allMapDataStore.ruleData = await [];
await loginStore.logOut()
}
} }

View File

@@ -80,11 +80,11 @@ const router = createRouter({
router.beforeEach((to, from) => { router.beforeEach((to, from) => {
// to: Route: 即將要進入的目標 路由物件 // to: Route: 即將要進入的目標 路由物件
// from: Route: 當前導航正要離開的路由 // from: Route: 當前導航正要離開的路由
let isCookie = document.cookie.split(';').some(c => c.trim().startsWith('luciaToken=')); // 是否登入 let isRemoveCookie = document.cookie.split(';').some(c => c.trim().startsWith('expires=Thu, 01 Jan 1970 00:00:00 UTC;')); // 是否登入,有到期日表示已登出。
// 當路由到 login 時有登入要跳轉至home // 當路由到 login 時有登入要跳轉至home
if (to.name === 'Login') { if (to.name === 'Login') {
if (isCookie) router.push({ name: 'Files' }); if (isRemoveCookie) router.push({ name: 'Files' });
} }
}); });

View File

@@ -134,18 +134,25 @@
enterDiscover(file){ enterDiscover(file){
let type; let type;
let fileId; let fileId;
let params;
if(file.fileType === 'Log'){ switch (file.fileType) {
this.createFilterId = null; case 'Log':
fileId = file.id; this.createFilterId = null;
type = 'log'; fileId = file.id;
this.$router.push({name: 'Map', params: { type: type, fileId: fileId }}) type = 'log';
} params = { type: type, fileId: fileId };
else if(file.fileType === 'Filter') { this.$router.push({name: 'Map', params: { type: type, fileId: fileId, state: params }});
this.createFilterId = file.id; break;
fileId = file.id; case 'Filter':
type = 'filter'; this.createFilterId = file.id;
this.$router.push({name: 'Map', params: { type: type, fileId: fileId }}) fileId = file.id;
type = 'filter';
params = { type: type, fileId: fileId };
this.$router.push({name: 'Map', params: params, state: params});
break;
default:
break;
} }
} }
}, },