fix: #313 fix again. Don't know why sonar-qube causes this

This commit is contained in:
Cindy Chang
2024-08-09 14:16:28 +08:00
parent 62cc0eeb52
commit 5ef681eea8
2 changed files with 14 additions and 7 deletions

View File

@@ -9,6 +9,7 @@ interface User {
name?: string; name?: string;
is_admin?: boolean; is_admin?: boolean;
is_sso?: boolean; is_sso?: boolean;
isCurrentLoggedIn: boolean,
isDeleteHovered?: boolean; isDeleteHovered?: boolean;
isRowHovered?: boolean; isRowHovered?: boolean;
isEditHovered?: boolean; isEditHovered?: boolean;
@@ -23,8 +24,6 @@ interface EditDetail {
is_active: boolean; is_active: boolean;
} }
const loginStore = piniaLoginStore();
export default defineStore('acctMgmtStore', { export default defineStore('acctMgmtStore', {
state: () => ({ state: () => ({
allUserAccoutList: [] as User[], allUserAccoutList: [] as User[],
@@ -99,8 +98,12 @@ export default defineStore('acctMgmtStore', {
* Add some customization. For example, add isHovered field * Add some customization. For example, add isHovered field
*/ */
async customizeAllUserList(rawResponseData: User[]): Promise<User[]> { async customizeAllUserList(rawResponseData: User[]): Promise<User[]> {
const loginStore = piniaLoginStore();
await loginStore.getUserData();
const loginUserData:User = loginStore.userData;
return rawResponseData.map(user => ({ return rawResponseData.map(user => ({
...user, // 保留後端傳來的欄位 ...user, // 保留後端傳來的欄位
isCurrentLoggedIn: loginUserData.username === user.username,
isDeleteHovered: false, // 針對前端顯示而額外增加的欄位 isDeleteHovered: false, // 針對前端顯示而額外增加的欄位
isRowHovered: false, isRowHovered: false,
isEditHovered: false, isEditHovered: false,
@@ -110,6 +113,7 @@ export default defineStore('acctMgmtStore', {
* Current logged in user should be placed at the first row on list * Current logged in user should be placed at the first row on list
*/ */
async moveCurrentLoginUserToFirstRow(fetchedUserList: User[]): Promise<User[]> { async moveCurrentLoginUserToFirstRow(fetchedUserList: User[]): Promise<User[]> {
const loginStore = piniaLoginStore();
await loginStore.getUserData(); await loginStore.getUserData();
const loginUserData:User = loginStore.userData; const loginUserData:User = loginStore.userData;
const foundLoginUserIndex = fetchedUserList.findIndex(user => user.username === loginUserData.username); const foundLoginUserIndex = fetchedUserList.findIndex(user => user.username === loginUserData.username);

View File

@@ -39,7 +39,7 @@
<Column field="is_admin" :header="i18next.t('AcctMgmt.AdminRights')" bodyClass="text-neutral-500 flex justify-center" <Column field="is_admin" :header="i18next.t('AcctMgmt.AdminRights')" bodyClass="text-neutral-500 flex justify-center"
headerClass="header-center"> headerClass="header-center">
<template #body="slotProps"> <template #body="slotProps">
<div class="row-container flex-w-full-hoverable flex w-full justify-center" @mouseenter="handleRowMouseOver(slotProps.data.username)" <div v-if="!slotProps.data.isCurrentLoggedIn" class="row-container flex-w-full-hoverable flex w-full justify-center" @mouseenter="handleRowMouseOver(slotProps.data.username)"
@mouseout="handleRowMouseOut(slotProps.data.username)"> @mouseout="handleRowMouseOut(slotProps.data.username)">
<img v-if="slotProps.data.is_admin" src="@/assets/radioOn.svg" alt="Radio On" class="btn-admin cursor-pointer flex justify-center" <img v-if="slotProps.data.is_admin" src="@/assets/radioOn.svg" alt="Radio On" class="btn-admin cursor-pointer flex justify-center"
@click="onAdminInputClick(slotProps.data, false)" @click="onAdminInputClick(slotProps.data, false)"
@@ -47,13 +47,14 @@
<img v-else src="@/assets/radioOff.svg" alt="Radio Off" class="btn-admin cursor-pointer flex justify-center" <img v-else src="@/assets/radioOff.svg" alt="Radio Off" class="btn-admin cursor-pointer flex justify-center"
@click="onAdminInputClick(slotProps.data, true)" @click="onAdminInputClick(slotProps.data, true)"
/> />
</div> </div>
<div v-else class="row-container flex-w-full-hoverable flex w-full h-6"></div>
</template> </template>
</Column> </Column>
<Column field="is_active" :header="i18next.t('AcctMgmt.AccountActivation')" bodyClass="text-neutral-500" <Column field="is_active" :header="i18next.t('AcctMgmt.AccountActivation')" bodyClass="text-neutral-500"
headerClass="header-center"> headerClass="header-center">
<template #body="slotProps"> <template #body="slotProps">
<div class="row-container flex-w-full-hoverable w-full" @mouseenter="handleRowMouseOver(slotProps.data.username)" <div v-if="!slotProps.data.isCurrentLoggedIn" class="row-container flex-w-full-hoverable w-full" @mouseenter="handleRowMouseOver(slotProps.data.username)"
@mouseout="handleRowMouseOut(slotProps.data.username)"> @mouseout="handleRowMouseOut(slotProps.data.username)">
<div class="w-full flex justify-center"> <div class="w-full flex justify-center">
<img v-if="slotProps.data.is_active" src="@/assets/radioOn.svg" alt="Radio On" class="btn-activate cursor-pointer flex" <img v-if="slotProps.data.is_active" src="@/assets/radioOn.svg" alt="Radio On" class="btn-activate cursor-pointer flex"
@@ -61,7 +62,8 @@
<img v-else src="@/assets/radioOff.svg" alt="Radio Off" class="btn-activate cursor-pointer flex" <img v-else src="@/assets/radioOff.svg" alt="Radio Off" class="btn-activate cursor-pointer flex"
@click="setIsActiveInput(slotProps.data, true)"/> @click="setIsActiveInput(slotProps.data, true)"/>
</div> </div>
</div> </div>
<div v-else class="row-container flex-w-full-hoverable flex w-full h-6"></div>
</template> </template>
</Column> </Column>
<Column :header="i18next.t('AcctMgmt.Detail')" bodyClass="text-neutral-500" headerClass="header-center"> <Column :header="i18next.t('AcctMgmt.Detail')" bodyClass="text-neutral-500" headerClass="header-center">
@@ -88,7 +90,7 @@
</Column> </Column>
<Column :header="i18next.t('AcctMgmt.Delete')" bodyClass="text-neutral-500 flex justify-center" headerClass="header-center"> <Column :header="i18next.t('AcctMgmt.Delete')" bodyClass="text-neutral-500 flex justify-center" headerClass="header-center">
<template #body="slotProps"> <template #body="slotProps">
<div class="row-container flex-w-full-hoverable w-full flex justify-center" @mouseenter="handleRowMouseOver(slotProps.data.username)"> <div v-if="!slotProps.data.isCurrentLoggedIn" class="row-container flex-w-full-hoverable w-full flex justify-center" @mouseenter="handleRowMouseOver(slotProps.data.username)">
<img :src="slotProps.data.isDeleteHovered ? iconDeleteRed : iconDeleteGray" <img :src="slotProps.data.isDeleteHovered ? iconDeleteRed : iconDeleteGray"
:alt="slotProps.data.isDeleteHovered ? 'hovered' : 'not-hovered'" :alt="slotProps.data.isDeleteHovered ? 'hovered' : 'not-hovered'"
class="delete-account cursor-pointer flex" class="delete-account cursor-pointer flex"
@@ -97,6 +99,7 @@
@click="onDeleteBtnClick(slotProps.data.username)" @click="onDeleteBtnClick(slotProps.data.username)"
> >
</div> </div>
<div v-else class="row-container flex-w-full-hoverable flex w-full h-6"></div>
</template> </template>
</Column> </Column>
</DataTable> </DataTable>