|
|
|
|
@ -1,11 +1,13 @@
|
|
|
|
|
import { useEffect, useState } from "react";
|
|
|
|
|
import { useEffect, useRef, useState } from "react";
|
|
|
|
|
import { PAGE_SIZE } from "./constants";
|
|
|
|
|
import { useClickedPointConfig } from "../../stores/useClickedPointConfig";
|
|
|
|
|
import { useGetClickedPoint } from "./useGetClickedPoint";
|
|
|
|
|
import { useQueryClient } from "@tanstack/react-query";
|
|
|
|
|
|
|
|
|
|
export const useMergeTableData = (fullData, onPageSizeChange) => {
|
|
|
|
|
const [mergedData, setMergedData] = useState();
|
|
|
|
|
const [shouldLoadClickedPoint, setShouldLoadClickedPoint] = useState(false);
|
|
|
|
|
const lastClickedPointId = useRef();
|
|
|
|
|
|
|
|
|
|
const { data: clickedPointData, isLoading: isClickedPointLoading } =
|
|
|
|
|
useGetClickedPoint(shouldLoadClickedPoint, () =>
|
|
|
|
|
@ -14,6 +16,8 @@ export const useMergeTableData = (fullData, onPageSizeChange) => {
|
|
|
|
|
|
|
|
|
|
const { clickedPointConfig } = useClickedPointConfig();
|
|
|
|
|
|
|
|
|
|
const queryClient = useQueryClient();
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (!fullData) return;
|
|
|
|
|
|
|
|
|
|
@ -39,6 +43,8 @@ export const useMergeTableData = (fullData, onPageSizeChange) => {
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (!clickedPointData) return;
|
|
|
|
|
|
|
|
|
|
lastClickedPointId.current = clickedPointData.results[0].id;
|
|
|
|
|
|
|
|
|
|
onPageSizeChange((prevState) => prevState + 1);
|
|
|
|
|
setMergedData((prevState) => {
|
|
|
|
|
if (prevState) {
|
|
|
|
|
@ -54,6 +60,8 @@ export const useMergeTableData = (fullData, onPageSizeChange) => {
|
|
|
|
|
// reset data after popup disappeared
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (clickedPointConfig === null) {
|
|
|
|
|
const queryKey = ["clicked-point", lastClickedPointId.current];
|
|
|
|
|
queryClient.removeQueries({ queryKey });
|
|
|
|
|
onPageSizeChange(PAGE_SIZE);
|
|
|
|
|
setMergedData(fullData);
|
|
|
|
|
}
|
|
|
|
|
|