fix: #313 fix again. Don't know why sonar-qube causes this
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user