diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-04-08 03:08:19 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-04-08 03:08:19 +0000 |
| commit | 9ceed79cf32c896f8a998399bf1b296506b2cd4a (patch) | |
| tree | f84750fa6cac954d5e31221fc47a54c655fc06a9 /lib/tag-numbering | |
| parent | 230ce796836c25df26c130dbcd616ef97d12b2ec (diff) | |
로그인 및 미들웨어 처리. 구조 변경
Diffstat (limited to 'lib/tag-numbering')
| -rw-r--r-- | lib/tag-numbering/service.ts | 1 | ||||
| -rw-r--r-- | lib/tag-numbering/table/tagNumbering-table-toolbar-actions.tsx | 43 | ||||
| -rw-r--r-- | lib/tag-numbering/table/tagNumbering-table.tsx | 11 |
3 files changed, 50 insertions, 5 deletions
diff --git a/lib/tag-numbering/service.ts b/lib/tag-numbering/service.ts index 9b1c1172..6041f07c 100644 --- a/lib/tag-numbering/service.ts +++ b/lib/tag-numbering/service.ts @@ -32,6 +32,7 @@ export async function getTagNumbering(input: GetTagNumberigSchema) { const s = `%${input.search}%` globalWhere = or(ilike(viewTagSubfields.tagTypeCode, s), ilike(viewTagSubfields.tagTypeDescription, s) , ilike(viewTagSubfields.attributesId, s) , ilike(viewTagSubfields.attributesDescription, s), ilike(viewTagSubfields.expression, s) + , ilike(viewTagSubfields.projectCode, s), ilike(viewTagSubfields.projectName, s) ) // 필요시 여러 칼럼 OR조건 (status, priority, etc) } diff --git a/lib/tag-numbering/table/tagNumbering-table-toolbar-actions.tsx b/lib/tag-numbering/table/tagNumbering-table-toolbar-actions.tsx index 1a7af254..7a14817f 100644 --- a/lib/tag-numbering/table/tagNumbering-table-toolbar-actions.tsx +++ b/lib/tag-numbering/table/tagNumbering-table-toolbar-actions.tsx @@ -16,10 +16,40 @@ interface ItemsTableToolbarActionsProps { } export function TagNumberingTableToolbarActions({ table }: ItemsTableToolbarActionsProps) { - // 파일 input을 숨기고, 버튼 클릭 시 참조해 클릭하는 방식 - const fileInputRef = React.useRef<HTMLInputElement>(null) + const [isLoading, setIsLoading] = React.useState(false) + const syncTags = async () => { + try { + setIsLoading(true) + // API 엔드포인트 호출 + const response = await fetch('/api/cron/object-classes') + + if (!response.ok) { + const errorData = await response.json() + throw new Error(errorData.error || 'Failed to sync tag numberings') + } + + const data = await response.json() + + // 성공 메시지 표시 + toast.success( + `tag numberings synced successfully! ${data.result.items} items processed.` + ) + + // 페이지 새로고침으로 테이블 데이터 업데이트 + window.location.reload() + } catch (error) { + console.error('Error syncing tag numberings:', error) + toast.error( + error instanceof Error + ? error.message + : 'An error occurred while syncing tag numberings' + ) + } finally { + setIsLoading(false) + } + } return ( <div className="flex items-center gap-2"> @@ -28,9 +58,14 @@ export function TagNumberingTableToolbarActions({ table }: ItemsTableToolbarActi variant="samsung" size="sm" className="gap-2" + onClick={syncTags} + disabled={isLoading} > - <RefreshCcw className="size-4" aria-hidden="true" /> - <span className="hidden sm:inline">Get Tag Numbering</span> + + <RefreshCcw className={`size-4 ${isLoading ? 'animate-spin' : ''}`} aria-hidden="true" /> + <span className="hidden sm:inline"> + {isLoading ? 'Syncing...' : 'Get Tag Numbering'} + </span> </Button> {/** 4) Export 버튼 */} diff --git a/lib/tag-numbering/table/tagNumbering-table.tsx b/lib/tag-numbering/table/tagNumbering-table.tsx index 7997aad9..6ca46e05 100644 --- a/lib/tag-numbering/table/tagNumbering-table.tsx +++ b/lib/tag-numbering/table/tagNumbering-table.tsx @@ -32,7 +32,6 @@ export function TagNumberingTable({ promises }: ItemsTableProps) { const [{ data, pageCount }] = React.use(promises) - const [rowAction, setRowAction] = React.useState<DataTableRowAction<ViewTagSubfields> | null>(null) @@ -68,6 +67,16 @@ export function TagNumberingTable({ promises }: ItemsTableProps) { */ const advancedFilterFields: DataTableAdvancedFilterField<ViewTagSubfields>[] = [ { + id: "projectCode", + label: "Project Code", + type: "text", + }, + { + id: "projectName", + label: "Project Name", + type: "text", + }, + { id: "tagTypeCode", label: "Tag Type Code", type: "text", |
