ERP-node/frontend/lib/api/screenEmbedding.ts

252 lines
6.5 KiB
TypeScript
Raw Normal View History

2025-11-27 12:08:32 +09:00
/**
* API
*/
import apiClient from "./client";
import type {
ScreenEmbedding,
ScreenDataTransfer,
ScreenSplitPanel,
CreateScreenEmbeddingRequest,
CreateScreenDataTransferRequest,
CreateScreenSplitPanelRequest,
ApiResponse,
} from "@/types/screen-embedding";
// ============================================
// 1. 화면 임베딩 API
// ============================================
/**
*
*/
export async function getScreenEmbeddings(parentScreenId: number): Promise<ApiResponse<ScreenEmbedding[]>> {
2025-11-27 12:08:32 +09:00
try {
const response = await apiClient.get("/screen-embedding", {
params: { parentScreenId },
});
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "화면 임베딩 목록 조회 실패",
};
}
}
/**
*
*/
export async function getScreenEmbeddingById(id: number): Promise<ApiResponse<ScreenEmbedding>> {
2025-11-27 12:08:32 +09:00
try {
const response = await apiClient.get(`/screen-embedding/${id}`);
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "화면 임베딩 조회 실패",
};
}
}
/**
*
*/
export async function createScreenEmbedding(data: CreateScreenEmbeddingRequest): Promise<ApiResponse<ScreenEmbedding>> {
2025-11-27 12:08:32 +09:00
try {
const response = await apiClient.post("/screen-embedding", data);
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "화면 임베딩 생성 실패",
};
}
}
/**
*
*/
export async function updateScreenEmbedding(
id: number,
data: Partial<CreateScreenEmbeddingRequest>,
2025-11-27 12:08:32 +09:00
): Promise<ApiResponse<ScreenEmbedding>> {
try {
const response = await apiClient.put(`/screen-embedding/${id}`, data);
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "화면 임베딩 수정 실패",
};
}
}
/**
*
*/
export async function deleteScreenEmbedding(id: number): Promise<ApiResponse<void>> {
2025-11-27 12:08:32 +09:00
try {
const response = await apiClient.delete(`/screen-embedding/${id}`);
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "화면 임베딩 삭제 실패",
};
}
}
// ============================================
// 2. 데이터 전달 API
// ============================================
/**
*
*/
export async function getScreenDataTransfer(
sourceScreenId: number,
targetScreenId: number,
2025-11-27 12:08:32 +09:00
): Promise<ApiResponse<ScreenDataTransfer>> {
try {
const response = await apiClient.get("/screen-data-transfer", {
params: { sourceScreenId, targetScreenId },
});
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "데이터 전달 설정 조회 실패",
};
}
}
/**
*
*/
export async function createScreenDataTransfer(
data: CreateScreenDataTransferRequest,
2025-11-27 12:08:32 +09:00
): Promise<ApiResponse<ScreenDataTransfer>> {
try {
const response = await apiClient.post("/screen-data-transfer", data);
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "데이터 전달 설정 생성 실패",
};
}
}
/**
*
*/
export async function updateScreenDataTransfer(
id: number,
data: Partial<CreateScreenDataTransferRequest>,
2025-11-27 12:08:32 +09:00
): Promise<ApiResponse<ScreenDataTransfer>> {
try {
const response = await apiClient.put(`/screen-data-transfer/${id}`, data);
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "데이터 전달 설정 수정 실패",
};
}
}
/**
*
*/
export async function deleteScreenDataTransfer(id: number): Promise<ApiResponse<void>> {
2025-11-27 12:08:32 +09:00
try {
const response = await apiClient.delete(`/screen-data-transfer/${id}`);
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "데이터 전달 설정 삭제 실패",
};
}
}
// ============================================
// 3. 분할 패널 API
// ============================================
/**
*
*/
export async function getScreenSplitPanel(screenId: number): Promise<ApiResponse<ScreenSplitPanel>> {
2025-11-27 12:08:32 +09:00
try {
const response = await apiClient.get(`/screen-split-panel/${screenId}`);
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "분할 패널 설정 조회 실패",
};
}
}
/**
*
*/
export async function createScreenSplitPanel(
data: CreateScreenSplitPanelRequest,
2025-11-27 12:08:32 +09:00
): Promise<ApiResponse<ScreenSplitPanel>> {
try {
const response = await apiClient.post("/screen-split-panel", data);
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "분할 패널 설정 생성 실패",
};
}
}
/**
*
*/
export async function updateScreenSplitPanel(id: number, layoutConfig: any): Promise<ApiResponse<ScreenSplitPanel>> {
2025-11-27 12:08:32 +09:00
try {
const response = await apiClient.put(`/screen-split-panel/${id}`, {
layoutConfig,
});
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "분할 패널 설정 수정 실패",
};
}
}
/**
*
*/
export async function deleteScreenSplitPanel(id: number): Promise<ApiResponse<void>> {
2025-11-27 12:08:32 +09:00
try {
const response = await apiClient.delete(`/screen-split-panel/${id}`);
return response.data;
} catch (error: any) {
return {
success: false,
error: error.response?.data?.message || "분할 패널 설정 삭제 실패",
};
}
}
// ============================================
// 4. 유틸리티 함수
// ============================================
/**
* ( )
*/
export async function getFullScreenEmbeddingConfig(screenId: number): Promise<ApiResponse<ScreenSplitPanel>> {
2025-11-27 12:08:32 +09:00
return getScreenSplitPanel(screenId);
}