Web:Client:Home: fix filter selected items
This commit is contained in:
parent
2eaaf8bf32
commit
ca89529715
@ -155,6 +155,8 @@ const SectionFilterContent = ({
|
||||
setCurrentRoomsFilter,
|
||||
providers,
|
||||
}) => {
|
||||
const [selectedFilterValues, setSelectedFilterValues] = React.useState(null);
|
||||
|
||||
const onFilter = React.useCallback(
|
||||
(data) => {
|
||||
if (isRooms) {
|
||||
@ -378,30 +380,6 @@ const SectionFilterContent = ({
|
||||
// });
|
||||
// }
|
||||
|
||||
if (roomsFilter.provider) {
|
||||
const provider = +roomsFilter.provider;
|
||||
|
||||
const label = RoomsProviderTypeName[provider];
|
||||
|
||||
filterValues.push({
|
||||
key: provider,
|
||||
label: label,
|
||||
group: FilterGroups.roomFilterProviderType,
|
||||
});
|
||||
}
|
||||
|
||||
if (roomsFilter.type) {
|
||||
const key = +roomsFilter.type;
|
||||
|
||||
const label = getDefaultRoomName(key, t);
|
||||
|
||||
filterValues.push({
|
||||
key: key,
|
||||
label: label,
|
||||
group: FilterGroups.roomFilterType,
|
||||
});
|
||||
}
|
||||
|
||||
if (roomsFilter.subjectId) {
|
||||
const isMe = userId === roomsFilter.subjectId;
|
||||
let label = isMe
|
||||
@ -431,6 +409,18 @@ const SectionFilterContent = ({
|
||||
// });
|
||||
// }
|
||||
|
||||
if (roomsFilter.type) {
|
||||
const key = +roomsFilter.type;
|
||||
|
||||
const label = getDefaultRoomName(key, t);
|
||||
|
||||
filterValues.push({
|
||||
key: key,
|
||||
label: label,
|
||||
group: FilterGroups.roomFilterType,
|
||||
});
|
||||
}
|
||||
|
||||
if (roomsFilter?.tags?.length > 0) {
|
||||
filterValues.push({
|
||||
key: roomsFilter.tags,
|
||||
@ -438,6 +428,18 @@ const SectionFilterContent = ({
|
||||
isMultiSelect: true,
|
||||
});
|
||||
}
|
||||
|
||||
if (roomsFilter.provider) {
|
||||
const provider = +roomsFilter.provider;
|
||||
|
||||
const label = RoomsProviderTypeName[provider];
|
||||
|
||||
filterValues.push({
|
||||
key: provider,
|
||||
label: label,
|
||||
group: FilterGroups.roomFilterProviderType,
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (filter.withSubfolders === "false") {
|
||||
filterValues.push({
|
||||
@ -525,7 +527,51 @@ const SectionFilterContent = ({
|
||||
}
|
||||
}
|
||||
|
||||
return filterValues;
|
||||
const currentFilterValues = [];
|
||||
|
||||
setSelectedFilterValues((value) => {
|
||||
if (!value) {
|
||||
currentFilterValues.push(...filterValues);
|
||||
return filterValues.map((f) => ({ ...f }));
|
||||
}
|
||||
|
||||
const items = value.map((v) => {
|
||||
const item = filterValues.find((f) => f.group === v.group);
|
||||
|
||||
if (item) {
|
||||
if (item.isMultiSelect) {
|
||||
let isEqual = true;
|
||||
|
||||
item.key.forEach((k) => {
|
||||
if (!v.key.includes(k)) {
|
||||
isEqual = false;
|
||||
}
|
||||
});
|
||||
|
||||
if (isEqual) return item;
|
||||
|
||||
return false;
|
||||
} else {
|
||||
if (item.key === v.key) return item;
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
const newItems = filterValues.filter(
|
||||
(v) => !items.find((i) => i.group === v.group)
|
||||
);
|
||||
|
||||
items.push(...newItems);
|
||||
|
||||
currentFilterValues.push(...items.filter((i) => i));
|
||||
|
||||
return items.filter((i) => i);
|
||||
});
|
||||
|
||||
return currentFilterValues;
|
||||
}, [
|
||||
filter.withSubfolders,
|
||||
filter.authorType,
|
||||
|
Loading…
Reference in New Issue
Block a user