Fix duplicated points in pending table

dev
Platon Yasev 3 years ago
parent 16450b9c5d
commit 93faf495c9

@ -12,11 +12,14 @@ export const PendingPointPopup = ({ feature }) => {
const doesMatchFilter = feature.layer.id === LAYER_IDS["initial-match"];
const featureId = feature.properties.id;
useEffect(() => setClickedPointConfig(featureId, doesMatchFilter), [feature]);
const isSelected =
(doesMatchFilter || selection.included.has(featureId)) &&
!selection.excluded.has(featureId);
(doesMatchFilter && !selection.excluded.has(featureId)) ||
selection.included.has(featureId);
useEffect(
() => setClickedPointConfig(featureId, isSelected),
[featureId, isSelected]
);
const handleSelect = () => {
if (isSelected) {

@ -27,12 +27,14 @@ export const PendingTable = ({ fullWidth }) => {
const shouldNotSelect = (id) =>
id === clickedPoint?.id && clickedPointConfig?.shouldSelect === false;
return [
const result = [
...ids.filter((id) => {
return !inExcludedList(id) && !shouldNotSelect(id);
}),
...selection.included,
];
return result;
}, [data, clickedPointConfig, selection]);
const rowSelection = {

@ -8,6 +8,12 @@ export const useColumns = (fields = []) => {
return useMemo(() => {
return [
{
title: "id",
dataIndex: "id",
key: "id",
width: 50,
},
{
title: "Адрес",
dataIndex: "address",

@ -45,17 +45,12 @@ export const useMergeTableData = (fullData, onPageSizeChange) => {
lastClickedPointId.current = clickedPointData.results[0].id;
onPageSizeChange((prevState) => prevState + 1);
setMergedData((prevState) => {
if (prevState) {
return {
...prevState,
count: prevState.count + 1,
results: [clickedPointData.results[0], ...prevState.results],
};
}
onPageSizeChange(PAGE_SIZE + 1);
setMergedData({
count: fullData.count + 1,
results: [clickedPointData.results[0], ...fullData.results],
});
}, [clickedPointData]);
}, [clickedPointData, fullData]);
// reset data after popup disappeared
useEffect(() => {

Loading…
Cancel
Save