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 doesMatchFilter = feature.layer.id === LAYER_IDS["initial-match"];
const featureId = feature.properties.id; const featureId = feature.properties.id;
useEffect(() => setClickedPointConfig(featureId, doesMatchFilter), [feature]);
const isSelected = const isSelected =
(doesMatchFilter || selection.included.has(featureId)) && (doesMatchFilter && !selection.excluded.has(featureId)) ||
!selection.excluded.has(featureId); selection.included.has(featureId);
useEffect(
() => setClickedPointConfig(featureId, isSelected),
[featureId, isSelected]
);
const handleSelect = () => { const handleSelect = () => {
if (isSelected) { if (isSelected) {

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

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

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

Loading…
Cancel
Save