summaryrefslogtreecommitdiff
path: root/lib/evaluation-target-list/table
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-07-25 07:51:15 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-07-25 07:51:15 +0000
commit2650b7c0bb0ea12b68a58c0439f72d61df04b2f1 (patch)
tree17156183fd74b69d78178065388ac61a18ac07b4 /lib/evaluation-target-list/table
parentd32acea05915bd6c1ed4b95e56c41ef9204347bc (diff)
(대표님) 정기평가 대상, 미들웨어 수정, nextauth 토큰 처리 개선, GTC 등
(최겸) 기술영업
Diffstat (limited to 'lib/evaluation-target-list/table')
-rw-r--r--lib/evaluation-target-list/table/evaluation-target-table.tsx36
-rw-r--r--lib/evaluation-target-list/table/evaluation-targets-toolbar-actions.tsx1
-rw-r--r--lib/evaluation-target-list/table/manual-create-evaluation-target-dialog.tsx7
-rw-r--r--lib/evaluation-target-list/table/update-evaluation-target.tsx5
4 files changed, 47 insertions, 2 deletions
diff --git a/lib/evaluation-target-list/table/evaluation-target-table.tsx b/lib/evaluation-target-list/table/evaluation-target-table.tsx
index c65a7815..9cc73003 100644
--- a/lib/evaluation-target-list/table/evaluation-target-table.tsx
+++ b/lib/evaluation-target-list/table/evaluation-target-table.tsx
@@ -323,6 +323,39 @@ export function EvaluationTargetsTable({ promises, evaluationYear, className }:
return () => clearTimeout(timeoutId);
}, [searchString, evaluationYear, getSearchParam]);
+ const refreshData = React.useCallback(async () => {
+ try {
+ setIsDataLoading(true);
+
+ // 현재 URL 파라미터로 데이터 새로고침
+ const currentFilters = getSearchParam("filters");
+ const currentJoinOperator = getSearchParam("joinOperator", "and");
+ const currentPage = parseInt(getSearchParam("page", "1"));
+ const currentPerPage = parseInt(getSearchParam("perPage", "10"));
+ const currentSort = getSearchParam('sort') ? JSON.parse(getSearchParam('sort')!) : [{ id: "createdAt", desc: true }];
+ const currentSearch = getSearchParam("search", "");
+
+ const searchParams = {
+ filters: currentFilters ? JSON.parse(currentFilters) : [],
+ joinOperator: currentJoinOperator as "and" | "or",
+ page: currentPage,
+ perPage: currentPerPage,
+ sort: currentSort,
+ search: currentSearch,
+ evaluationYear: evaluationYear
+ };
+
+ const newData = await getEvaluationTargets(searchParams);
+ setTableData(newData);
+
+ console.log("=== 데이터 새로고침 완료 ===", newData.data.length, "건");
+ } catch (error) {
+ console.error("데이터 새로고침 오류:", error);
+ } finally {
+ setIsDataLoading(false);
+ }
+ }, [evaluationYear, getSearchParam]);
+
/* --------------------------- layout refs --------------------------- */
const containerRef = React.useRef<HTMLDivElement>(null);
const [containerTop, setContainerTop] = React.useState(0);
@@ -597,7 +630,7 @@ export function EvaluationTargetsTable({ promises, evaluationYear, className }:
onRenamePreset={renamePreset}
/>
- <EvaluationTargetsTableToolbarActions table={table} />
+ <EvaluationTargetsTableToolbarActions table={table}onRefresh={refreshData} />
</div>
</DataTableAdvancedToolbar>
</DataTable>
@@ -607,6 +640,7 @@ export function EvaluationTargetsTable({ promises, evaluationYear, className }:
open={rowAction?.type === "update"}
onOpenChange={() => setRowAction(null)}
evaluationTarget={rowAction?.row.original ?? null}
+ onDataChange={refreshData}
/>
</div>
</div>
diff --git a/lib/evaluation-target-list/table/evaluation-targets-toolbar-actions.tsx b/lib/evaluation-target-list/table/evaluation-targets-toolbar-actions.tsx
index 6a493d8e..714f96c3 100644
--- a/lib/evaluation-target-list/table/evaluation-targets-toolbar-actions.tsx
+++ b/lib/evaluation-target-list/table/evaluation-targets-toolbar-actions.tsx
@@ -364,6 +364,7 @@ export function EvaluationTargetsTableToolbarActions({
open={manualCreateDialogOpen}
onOpenChange={setManualCreateDialogOpen}
onSuccess={handleActionSuccess}
+ onDataChange={onRefresh}
/>
{/* 확정 컨펌 다이얼로그 */}
diff --git a/lib/evaluation-target-list/table/manual-create-evaluation-target-dialog.tsx b/lib/evaluation-target-list/table/manual-create-evaluation-target-dialog.tsx
index 44497cdb..a00df0f0 100644
--- a/lib/evaluation-target-list/table/manual-create-evaluation-target-dialog.tsx
+++ b/lib/evaluation-target-list/table/manual-create-evaluation-target-dialog.tsx
@@ -61,15 +61,18 @@ import { EVALUATION_TARGET_FILTER_OPTIONS, getDefaultEvaluationYear } from "../v
import { useSession } from "next-auth/react"
-
interface ManualCreateEvaluationTargetDialogProps {
open: boolean
onOpenChange: (open: boolean) => void
+ onSuccess?: () => void
+ onDataChange?: () => void
}
export function ManualCreateEvaluationTargetDialog({
open,
onOpenChange,
+ onSuccess,
+ onDataChange
}: ManualCreateEvaluationTargetDialogProps) {
const router = useRouter()
const [isSubmitting, setIsSubmitting] = React.useState(false)
@@ -262,6 +265,8 @@ type CreateEvaluationTargetFormValues = z.infer<typeof createEvaluationTargetSch
setVendorSearch("")
setReviewerSearches({})
setReviewerOpens({})
+ onSuccess?.() // 기존 방식 (table.resetRowSelection, router.refresh 등)
+ onDataChange?.() // 새로운 방식 (클라이언트 상태 업데이트)
router.refresh()
} else {
toast.error(result.error || "평가 대상 생성에 실패했습니다.")
diff --git a/lib/evaluation-target-list/table/update-evaluation-target.tsx b/lib/evaluation-target-list/table/update-evaluation-target.tsx
index ef24aa9f..9b1f4868 100644
--- a/lib/evaluation-target-list/table/update-evaluation-target.tsx
+++ b/lib/evaluation-target-list/table/update-evaluation-target.tsx
@@ -88,6 +88,7 @@ interface EditEvaluationTargetSheetProps {
open: boolean
onOpenChange: (open: boolean) => void
evaluationTarget: EvaluationTargetWithDepartments | null
+ onDataChange?: () => void // ✅ 새로 추가
}
// 권한 타입 정의
@@ -102,6 +103,7 @@ export function EditEvaluationTargetSheet({
open,
onOpenChange,
evaluationTarget,
+ onDataChange
}: EditEvaluationTargetSheetProps) {
const router = useRouter()
const [isSubmitting, setIsSubmitting] = React.useState(false)
@@ -259,7 +261,10 @@ export function EditEvaluationTargetSheet({
if (result.success) {
toast.success(result.message || "평가 대상이 성공적으로 수정되었습니다.")
onOpenChange(false)
+ onDataChange?.()
router.refresh()
+ // window.location.reload()
+
} else {
toast.error(result.error || "평가 대상 수정에 실패했습니다.")
}