Client: Fix hiding groups manager column

This commit is contained in:
Aleksandr Lushkin 2024-03-07 10:57:45 +01:00
parent 33a0c7f746
commit 83850d1f8d
5 changed files with 79 additions and 43 deletions

View File

@ -17,7 +17,7 @@ class GroupsTableHeader extends React.Component {
key: "Name",
title: props.t("Common:Title"),
resizable: true,
enable: true,
enable: props.managerAccountsGroupsColumnIsEnabled,
default: true,
sortBy: "title",
minWidth: 210,
@ -35,36 +35,19 @@ class GroupsTableHeader extends React.Component {
},
];
const columns = this.getColumns(defaultColumns);
const columns = props.getColumns(defaultColumns);
this.state = { columns };
}
getColumns = (defaultColumns) => {
const columns = [];
const storageColumns = localStorage.getItem(
`${TABLE_COLUMNS}=${this.props.userId}`,
);
if (storageColumns) {
const splitColumns = storageColumns.split(",");
for (let col of defaultColumns) {
const column = splitColumns.find((key) => key === col.key);
column ? (col.enable = true) : (col.enable = false);
columns.push(col);
}
return columns;
}
return defaultColumns;
};
onColumnChange = (key) => {
const { columns } = this.state;
const columnIndex = columns.findIndex((c) => c.key === key);
if (columnIndex === -1) return;
this.props.setColumnEnable(key);
columns[columnIndex].enable = !columns[columnIndex].enable;
this.setState({ columns });
@ -147,6 +130,7 @@ export default inject(
userStore,
infoPanelStore,
settingsStore,
tableStore,
}) => ({
filter: peopleStore.groupsStore.groupsFilter,
setFilter: peopleStore.groupsStore.setGroupsFilter,
@ -154,6 +138,10 @@ export default inject(
userId: userStore.user?.id,
infoPanelVisible: infoPanelStore.isVisible,
withPaging: settingsStore.withPaging,
getColumns: tableStore.getColumns,
setColumnEnable: tableStore.setColumnEnable,
managerAccountsGroupsColumnIsEnabled:
tableStore.managerAccountsGroupsColumnIsEnabled,
}),
)(
withTranslation(["People", "Common", "PeopleTranslations"])(

View File

@ -27,6 +27,7 @@ const GroupsTableItem = ({
setCurrentGroup,
getGroupContextOptions,
setInsideGroupBackUrl,
managerAccountsGroupsColumnIsEnabled,
}) => {
const navigate = useNavigate();
@ -126,19 +127,23 @@ const GroupsTableItem = ({
</Link>
</TableCell>
<TableCell className={"table-container_group-manager"}>
<Text
title={item.manager?.displayName}
fontWeight="600"
fontSize="13px"
isTextOverflow
className="table-cell_group-manager"
color={"#A3A9AE"}
dir="auto"
>
{item.manager?.displayName}
</Text>
</TableCell>
{managerAccountsGroupsColumnIsEnabled ? (
<TableCell className={"table-container_group-manager"}>
<Text
title={item.manager?.displayName}
fontWeight="600"
fontSize="13px"
isTextOverflow
className="table-cell_group-manager"
color={"#A3A9AE"}
dir="auto"
>
{item.manager?.displayName}
</Text>
</TableCell>
) : (
<div />
)}
</Styled.GroupsRow>
</Styled.GroupsRowWrapper>
);

View File

@ -30,6 +30,8 @@ const GroupsTableView = ({
hasMoreGroups,
groupsIsFiltered,
groupsFilterTotal,
managerAccountsGroupsColumnIsEnabled,
}) => {
const ref = useRef(null);
const [hideColumns, setHideColumns] = React.useState(false);
@ -79,6 +81,9 @@ const GroupsTableView = ({
isChecked={selection.includes(item)}
hideColumns={hideColumns}
itemIndex={index}
managerAccountsGroupsColumnIsEnabled={
managerAccountsGroupsColumnIsEnabled
}
/>
))}
</TableBody>
@ -96,6 +101,7 @@ export default inject(
settingsStore,
infoPanelStore,
userStore,
tableStore,
}) => {
const {
usersStore,
@ -123,6 +129,8 @@ export default inject(
const { isVisible: infoPanelVisible } = infoPanelStore;
const { managerAccountsGroupsColumnIsEnabled } = tableStore;
return {
groups,
selection,
@ -142,6 +150,8 @@ export default inject(
hasMoreGroups,
groupsIsFiltered,
groupsFilterTotal,
managerAccountsGroupsColumnIsEnabled,
};
},
)(observer(GroupsTableView));

View File

@ -3,6 +3,7 @@ import { TableVersions } from "SRC_DIR/helpers/constants";
const TABLE_COLUMNS = `filesTableColumns_ver-${TableVersions.Files}`;
const TABLE_ACCOUNTS_PEOPLE_COLUMNS = `peopleTableColumns_ver-${TableVersions.People}`;
const TABLE_ACCOUNTS_GROUPS_COLUMNS = `groupsTableColumns_ver-${TableVersions.Groups}`;
const TABLE_ACCOUNTS_INSIDE_GROUP_COLUMNS = `insideGroupTableColumns_ver-${TableVersions.InsideGroup}`;
const TABLE_ROOMS_COLUMNS = `roomsTableColumns_ver-${TableVersions.Rooms}`;
const TABLE_TRASH_COLUMNS = `trashTableColumns_ver-${TableVersions.Trash}`;
@ -56,6 +57,8 @@ class TableStore {
emailAccountsColumnIsEnabled = true;
storageAccountsColumnIsEnabled = true;
managerAccountsGroupsColumnIsEnabled = true;
typeAccountsInsideGroupColumnIsEnabled = true;
groupAccountsInsideGroupColumnIsEnabled = true;
emailAccountsInsideGroupColumnIsEnabled = true;
@ -137,6 +140,9 @@ class TableStore {
setAccountsColumnStorage = (enable) =>
(this.storageAccountsColumnIsEnabled = enable);
setAccountsGroupsColumnManager = (enable) =>
(this.managerAccountsGroupsColumnIsEnabled = enable);
setAccountsInsideGroupColumnType = (enable) =>
(this.typeAccountsInsideGroupColumnIsEnabled = enable);
setAccountsInsideGroupColumnEmail = (enable) =>
@ -155,6 +161,7 @@ class TableStore {
isTrashFolder,
isAccountsPeople,
isAccountsGroups,
isAccountsInsideGroup,
} = this.treeFoldersStore;
const isRooms = isRoomsFolder || isArchiveFolder;
@ -176,6 +183,13 @@ class TableStore {
}
if (isAccountsGroups) {
this.setAccountsGroupsColumnManager(
splitColumns.includes("Head of Group"),
);
return;
}
if (isAccountsInsideGroup) {
this.setAccountsInsideGroupColumnType(splitColumns.includes("Type"));
this.setAccountsInsideGroupColumnEmail(splitColumns.includes("Mail"));
this.setAccountsInsideGroupColumnGroup(
@ -212,6 +226,7 @@ class TableStore {
isTrashFolder,
isAccountsPeople,
isAccountsGroups,
isAccountsInsideGroup,
} = this.treeFoldersStore;
const isRooms = isRoomsFolder || isArchiveFolder;
@ -262,7 +277,7 @@ class TableStore {
? this.setRoomColumnType(!this.roomColumnTypeIsEnabled)
: isAccountsPeople
? this.setAccountsColumnType(!this.typeAccountsColumnIsEnabled)
: isAccountsGroups
: isAccountsInsideGroup
? this.setAccountsInsideGroupColumnType(
!this.typeAccountsInsideGroupColumnIsEnabled,
)
@ -307,6 +322,12 @@ class TableStore {
: this.setRoomColumnQuota(!this.roomQuotaColumnIsEnable);
return;
case "Head of Group":
this.setAccountsGroupsColumnManager(
!this.managerAccountsGroupsColumnIsEnabled,
);
return;
default:
return;
}
@ -341,6 +362,7 @@ class TableStore {
isAccountsPeople,
isAccountsGroups,
isRecentTab,
isAccountsInsideGroup,
} = this.treeFoldersStore;
const isRooms = isRoomsFolder || isArchiveFolder;
const userId = this.userStore.user?.id;
@ -353,12 +375,14 @@ class TableStore {
: isAccountsPeople
? `${TABLE_ACCOUNTS_PEOPLE_COLUMNS}=${userId}`
: isAccountsGroups
? `${TABLE_ACCOUNTS_INSIDE_GROUP_COLUMNS}=${userId}`
: isTrashFolder
? `${TABLE_TRASH_COLUMNS}=${userId}`
: isRecentTab
? `${TABLE_RECENT_COLUMNS}=${userId}`
: `${TABLE_COLUMNS}=${userId}`;
? `${TABLE_ACCOUNTS_GROUPS_COLUMNS}=${userId}`
: isAccountsInsideGroup
? `${TABLE_ACCOUNTS_INSIDE_GROUP_COLUMNS}=${userId}`
: isTrashFolder
? `${TABLE_TRASH_COLUMNS}=${userId}`
: isRecentTab
? `${TABLE_RECENT_COLUMNS}=${userId}`
: `${TABLE_COLUMNS}=${userId}`;
}
get columnStorageName() {

View File

@ -219,8 +219,17 @@ class TreeFoldersStore {
return window.location.pathname.includes("accounts/people");
}
get isAccountsInsideGroup() {
const insideGroupPattern = /accounts\/groups\/.*\/filter/;
return insideGroupPattern.test(window.location.pathname);
}
get isAccountsGroups() {
return window.location.pathname.includes("accounts/groups");
return (
window.location.pathname.includes("accounts/groups") &&
!this.isAccountsInsideGroup
);
}
get isPersonalRoom() {