summaryrefslogtreecommitdiff
path: root/lib/vendor-document-list/ship/import-from-dolce-button.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendor-document-list/ship/import-from-dolce-button.tsx')
-rw-r--r--lib/vendor-document-list/ship/import-from-dolce-button.tsx86
1 files changed, 43 insertions, 43 deletions
diff --git a/lib/vendor-document-list/ship/import-from-dolce-button.tsx b/lib/vendor-document-list/ship/import-from-dolce-button.tsx
index d4728d22..de9e63bc 100644
--- a/lib/vendor-document-list/ship/import-from-dolce-button.tsx
+++ b/lib/vendor-document-list/ship/import-from-dolce-button.tsx
@@ -72,7 +72,7 @@ export function ImportFromDOLCEButton({
setVendorContractIds(contractIds)
} catch (error) {
console.error('Failed to fetch vendor contracts:', error)
- toast.error('계약 정보를 가져오는데 실패했습니다.')
+ toast.error('Failed to fetch contract information.')
} finally {
setLoadingVendorContracts(false)
}
@@ -142,7 +142,7 @@ export function ImportFromDOLCEButton({
} catch (error) {
console.error('Failed to fetch import statuses:', error)
- toast.error('상태를 확인할 수 없습니다. 프로젝트 설정을 확인해주세요.')
+ toast.error('Unable to check status. Please verify project settings.')
} finally {
setStatusLoading(false)
}
@@ -230,16 +230,16 @@ export function ImportFromDOLCEButton({
if (totalResult.success) {
toast.success(
- `DOLCE 가져오기 완료`,
+ `DOLCE import completed`,
{
- description: `신규 ${totalResult.newCount}건, 업데이트 ${totalResult.updatedCount}건, 건너뜀 ${totalResult.skippedCount}건 (${contractIds.length}개 계약)`
+ description: `New ${totalResult.newCount}, Updated ${totalResult.updatedCount}, Skipped ${totalResult.skippedCount} (${contractIds.length} contracts)`
}
)
} else {
toast.error(
- `DOLCE 가져오기 부분 실패`,
+ `DOLCE import partially failed`,
{
- description: '일부 계약에서 가져오기에 실패했습니다.'
+ description: 'Some contracts failed to import.'
}
)
}
@@ -252,34 +252,34 @@ export function ImportFromDOLCEButton({
setImportProgress(0)
setIsImporting(false)
- toast.error('DOLCE 가져오기 실패', {
- description: error instanceof Error ? error.message : '알 수 없는 오류가 발생했습니다.'
+ toast.error('DOLCE import failed', {
+ description: error instanceof Error ? error.message : 'An unknown error occurred.'
})
}
}
const getStatusBadge = () => {
if (loadingVendorContracts) {
- return <Badge variant="secondary">계약 정보 로딩 중...</Badge>
+ return <Badge variant="secondary">Loading contract information...</Badge>
}
if (statusLoading) {
- return <Badge variant="secondary">DOLCE 연결 확인 중...</Badge>
+ return <Badge variant="secondary">Checking DOLCE connection...</Badge>
}
if (importStatusMap.size === 0) {
- return <Badge variant="destructive">DOLCE 연결 오류</Badge>
+ return <Badge variant="destructive">DOLCE Connection Error</Badge>
}
if (!totalStats.importEnabled) {
- return <Badge variant="secondary">DOLCE 가져오기 비활성화</Badge>
+ return <Badge variant="secondary">DOLCE Import Disabled</Badge>
}
if (totalStats.newDocuments > 0 || totalStats.updatedDocuments > 0) {
return (
<Badge variant="samsung" className="gap-1">
<AlertTriangle className="w-3 h-3" />
- 업데이트 가능 ({contractIds.length}개 계약)
+ Updates Available ({contractIds.length} contracts)
</Badge>
)
}
@@ -287,7 +287,7 @@ export function ImportFromDOLCEButton({
return (
<Badge variant="default" className="gap-1 bg-green-500 hover:bg-green-600">
<CheckCircle className="w-3 h-3" />
- DOLCE와 동기화됨
+ Synchronized with DOLCE
</Badge>
)
}
@@ -316,7 +316,7 @@ export function ImportFromDOLCEButton({
) : (
<Download className="w-4 h-4" />
)}
- <span className="hidden sm:inline">DOLCE에서 가져오기</span>
+ <span className="hidden sm:inline">Import from DOLCE</span>
{totalStats.newDocuments + totalStats.updatedDocuments > 0 && (
<Badge
variant="samsung"
@@ -332,9 +332,9 @@ export function ImportFromDOLCEButton({
<PopoverContent className="w-96">
<div className="space-y-4">
<div className="space-y-2">
- <h4 className="font-medium">DOLCE 가져오기 상태</h4>
+ <h4 className="font-medium">DOLCE Import Status</h4>
<div className="flex items-center justify-between">
- <span className="text-sm text-muted-foreground">현재 상태</span>
+ <span className="text-sm text-muted-foreground">Current Status</span>
{getStatusBadge()}
</div>
</div>
@@ -342,15 +342,15 @@ export function ImportFromDOLCEButton({
{/* 계약 소스 표시 */}
{allDocuments.length === 0 && vendorContractIds.length > 0 && (
<div className="text-xs text-blue-600 bg-blue-50 p-2 rounded">
- 문서가 없어서 전체 계약에서 가져오기를 진행합니다.
+ No documents found, importing from all contracts.
</div>
)}
{/* 다중 계약 정보 표시 */}
{contractIds.length > 1 && (
<div className="text-sm">
- <div className="text-muted-foreground">대상 계약</div>
- <div className="font-medium">{contractIds.length}개 계약</div>
+ <div className="text-muted-foreground">Target Contracts</div>
+ <div className="font-medium">{contractIds.length} contracts</div>
<div className="text-xs text-muted-foreground">
Contract IDs: {contractIds.join(', ')}
</div>
@@ -363,25 +363,25 @@ export function ImportFromDOLCEButton({
<div className="grid grid-cols-2 gap-4 text-sm">
<div>
- <div className="text-muted-foreground">신규 문서</div>
- <div className="font-medium">{totalStats.newDocuments || 0}건</div>
+ <div className="text-muted-foreground">New Documents</div>
+ <div className="font-medium">{totalStats.newDocuments || 0}</div>
</div>
<div>
- <div className="text-muted-foreground">업데이트</div>
- <div className="font-medium">{totalStats.updatedDocuments || 0}건</div>
+ <div className="text-muted-foreground">Updates</div>
+ <div className="font-medium">{totalStats.updatedDocuments || 0}</div>
</div>
</div>
<div className="text-sm">
- <div className="text-muted-foreground">DOLCE 전체 문서 (B3/B4/B5)</div>
- <div className="font-medium">{totalStats.availableDocuments || 0}건</div>
+ <div className="text-muted-foreground">Total DOLCE Documents (B3/B4/B5)</div>
+ <div className="font-medium">{totalStats.availableDocuments || 0}</div>
</div>
{/* 각 계약별 세부 정보 (펼치기/접기 가능) */}
{contractIds.length > 1 && (
<details className="text-sm">
<summary className="cursor-pointer text-muted-foreground hover:text-foreground">
- 계약별 세부 정보
+ Details by Contract
</summary>
<div className="mt-2 space-y-2 pl-2 border-l-2 border-muted">
{contractIds.map(contractId => {
@@ -391,10 +391,10 @@ export function ImportFromDOLCEButton({
<div className="font-medium">Contract {contractId}</div>
{status ? (
<div className="text-muted-foreground">
- 신규 {status.newDocuments}건, 업데이트 {status.updatedDocuments}건
+ New {status.newDocuments}, Updates {status.updatedDocuments}
</div>
) : (
- <div className="text-destructive">상태 확인 실패</div>
+ <div className="text-destructive">Status check failed</div>
)}
</div>
)
@@ -417,12 +417,12 @@ export function ImportFromDOLCEButton({
{isImporting ? (
<>
<Loader2 className="w-4 h-4 mr-2 animate-spin" />
- 가져오는 중...
+ Importing...
</>
) : (
<>
<Download className="w-4 h-4 mr-2" />
- 지금 가져오기
+ Import Now
</>
)}
</Button>
@@ -448,10 +448,10 @@ export function ImportFromDOLCEButton({
<Dialog open={isDialogOpen} onOpenChange={setIsDialogOpen}>
<DialogContent className="sm:max-w-md">
<DialogHeader>
- <DialogTitle>DOLCE에서 문서 목록 가져오기</DialogTitle>
+ <DialogTitle>Import Document List from DOLCE</DialogTitle>
<DialogDescription>
- 삼성중공업 DOLCE 시스템에서 최신 문서 목록을 가져옵니다.
- {contractIds.length > 1 && ` (${contractIds.length}개 계약 대상)`}
+ Import the latest document list from Samsung Heavy Industries DOLCE system.
+ {contractIds.length > 1 && ` (${contractIds.length} contracts targeted)`}
</DialogDescription>
</DialogHeader>
@@ -459,20 +459,20 @@ export function ImportFromDOLCEButton({
{totalStats && (
<div className="rounded-lg border p-4 space-y-3">
<div className="flex items-center justify-between text-sm">
- <span>가져올 항목</span>
+ <span>Items to Import</span>
<span className="font-medium">
- {totalStats.newDocuments + totalStats.updatedDocuments}건
+ {totalStats.newDocuments + totalStats.updatedDocuments}
</span>
</div>
<div className="text-xs text-muted-foreground">
- 신규 문서와 업데이트된 문서가 포함됩니다. (B3, B4, B5)
+ Includes new and updated documents (B3, B4, B5).
<br />
- B4 문서의 경우 GTTPreDwg, GTTWorkingDwg 이슈 스테이지가 자동 생성됩니다.
+ For B4 documents, GTTPreDwg and GTTWorkingDwg issue stages will be auto-generated.
{contractIds.length > 1 && (
<>
<br />
- {contractIds.length}개 계약에서 순차적으로 가져옵니다.
+ Will import sequentially from {contractIds.length} contracts.
</>
)}
</div>
@@ -480,7 +480,7 @@ export function ImportFromDOLCEButton({
{isImporting && (
<div className="space-y-2">
<div className="flex items-center justify-between text-sm">
- <span>진행률</span>
+ <span>Progress</span>
<span>{importProgress}%</span>
</div>
<Progress value={importProgress} className="h-2" />
@@ -495,7 +495,7 @@ export function ImportFromDOLCEButton({
onClick={() => setIsDialogOpen(false)}
disabled={isImporting}
>
- 취소
+ Cancel
</Button>
<Button
onClick={handleImport}
@@ -504,12 +504,12 @@ export function ImportFromDOLCEButton({
{isImporting ? (
<>
<Loader2 className="w-4 h-4 mr-2 animate-spin" />
- 가져오는 중...
+ Importing...
</>
) : (
<>
<Download className="w-4 h-4 mr-2" />
- 가져오기 시작
+ Start Import
</>
)}
</Button>