fix. main 컴포넌트 변경, 수정된 api 구조에 맞춰 코드 수정
This commit is contained in:
@@ -21,54 +21,93 @@ export interface GameDataValue {
|
||||
game_name: string
|
||||
ga_code: string
|
||||
design_theme: number
|
||||
lang_codes: string // JSON 문자열로 변경
|
||||
key_color_codes: ParsedKeyColorCodes
|
||||
lang_codes: string[]
|
||||
key_code_codes: GameDataKeyCodeCodes
|
||||
use_game_font: boolean
|
||||
comm_sns_bg_color_code: string
|
||||
comm_multilang_filename: string
|
||||
footer_dev_ci_img_yn: boolean
|
||||
footer_dev_ci_img_path: string
|
||||
default_lang_code?: string // 기본 언어 코드 추가
|
||||
game_font: string // JSON 문자열로 변경
|
||||
globals: GameDataGlobal[] // 배열로 변경
|
||||
default_lang_code?: string
|
||||
game_font: GameDataGameFont
|
||||
globals: GameDataGlobal[]
|
||||
gnb: GameDataGnb
|
||||
intro: GameDataIntro
|
||||
inspection: Record<string, any> // 동적 객체
|
||||
stove_gnb: GameDataStoveGnb // JSON 문자열로 변경
|
||||
favicon_path: string // JSON 문자열로 변경
|
||||
meta_tag: string // JSON 문자열로 변경
|
||||
sns: string // JSON 문자열로 변경
|
||||
inspection: Record<string, any>
|
||||
stove_gnb: GameDataStoveGnb
|
||||
favicon_path: GameDataFaviconPath
|
||||
meta_tag: GameDataMetaTag
|
||||
sns: GameDataSns
|
||||
footer: string // JSON 문자열로 변경
|
||||
}
|
||||
|
||||
// ===== 세부 데이터 타입들 =====
|
||||
|
||||
// 키 코드 코드 타입
|
||||
export interface GameDataKeyCodeCodes {
|
||||
primary: string
|
||||
'text-primary': string
|
||||
'text-secondary': string
|
||||
'alternative-01': string
|
||||
'alternative-02': string
|
||||
}
|
||||
|
||||
// 게임 폰트 타입
|
||||
export interface GameDataGameFont {
|
||||
font_family: string
|
||||
font_weight: string
|
||||
font_style: string
|
||||
}
|
||||
|
||||
// 파비콘 경로 타입
|
||||
export interface GameDataFaviconPath {
|
||||
'16_16': string
|
||||
'32_32': string
|
||||
'72_72': string
|
||||
'180_180': string
|
||||
'192_192': string
|
||||
}
|
||||
|
||||
// 메타 태그 타입
|
||||
export interface GameDataMetaTag {
|
||||
x_desc: string
|
||||
og_desc: string
|
||||
x_image: string
|
||||
x_title: string
|
||||
og_image: string
|
||||
og_title: string
|
||||
page_desc: string
|
||||
page_title: string
|
||||
}
|
||||
|
||||
// SNS 아이템 타입
|
||||
export interface GameDataSnsItem {
|
||||
use_yn: number
|
||||
url: string | null
|
||||
}
|
||||
|
||||
// SNS 설정 타입
|
||||
export interface GameDataSns {
|
||||
kakao: GameDataSnsItem
|
||||
twitter: GameDataSnsItem
|
||||
discord: GameDataSnsItem
|
||||
youtube: GameDataSnsItem
|
||||
instagram: GameDataSnsItem
|
||||
facebook: GameDataSnsItem
|
||||
tiktok: GameDataSnsItem
|
||||
}
|
||||
|
||||
// Global 설정 타입
|
||||
export interface GameDataGlobal {
|
||||
system_font: string // JSON 문자열로 변경
|
||||
lang: string // JSON 문자열로 변경
|
||||
}
|
||||
|
||||
// 폰트 타입
|
||||
export interface GameDataFont {
|
||||
'font-family': string
|
||||
}
|
||||
|
||||
// 언어 설정 타입
|
||||
export interface GameDataLang {
|
||||
dir: string
|
||||
iso: string
|
||||
code: string
|
||||
name: string
|
||||
}
|
||||
|
||||
// GNB 설정 타입
|
||||
export interface GameDataGnb {
|
||||
game_gnb_ver: string
|
||||
display_start_dt: string // ISO 문자열로 변경
|
||||
theme_type: string
|
||||
bi_path: string
|
||||
lang_codes: string // JSON 문자열로 변경
|
||||
buttons: GameDataButton[]
|
||||
menus: Record<string, GameDataMenu> // 동적 객체로 변경
|
||||
// 트래킹 타입
|
||||
export interface GameDataTracking {
|
||||
viewType: string
|
||||
actionType: string
|
||||
clickSarea: string
|
||||
}
|
||||
|
||||
// 버튼 타입
|
||||
@@ -90,35 +129,22 @@ export interface GameDataMenu {
|
||||
tracking: string | GameDataTracking // JSON 문자열 또는 객체로 변경
|
||||
}
|
||||
|
||||
// GNB 설정 타입
|
||||
export interface GameDataGnb {
|
||||
game_gnb_ver: string
|
||||
theme_type: string
|
||||
bi_path: string
|
||||
lang_codes: string // JSON 문자열로 변경
|
||||
buttons: GameDataButton[]
|
||||
menus: Record<string, GameDataMenu> // 동적 객체로 변경
|
||||
}
|
||||
|
||||
// 인트로 타입
|
||||
export interface GameDataIntro {
|
||||
seq: number
|
||||
display_start_dt: string
|
||||
display_end_dt: string
|
||||
page_url: string
|
||||
}
|
||||
|
||||
// 트래킹 타입
|
||||
export interface GameDataTracking {
|
||||
viewType: string
|
||||
actionType: string
|
||||
clickSarea: string
|
||||
}
|
||||
|
||||
// 퀵 메뉴 타입
|
||||
export interface GameDataQuickMenu {
|
||||
banner_seq: number
|
||||
promotion_name: string
|
||||
thumbnail: string
|
||||
page_url_type: number
|
||||
page_url: string
|
||||
link_type: number
|
||||
display_start_dt: string
|
||||
display_end_dt: string
|
||||
sort_order: number
|
||||
banner_title: string
|
||||
}
|
||||
|
||||
// Stove GNB Skin Type
|
||||
export type StoveGnbSkinType =
|
||||
| 'gnb-default'
|
||||
@@ -136,103 +162,7 @@ export interface GameDataStoveGnb {
|
||||
stove_install_button_visible: string
|
||||
}
|
||||
|
||||
// 파비콘 경로 타입
|
||||
export interface GameDataFaviconPath {
|
||||
'16_16': string
|
||||
'32_32': string
|
||||
'72_72': string
|
||||
'180_180': string
|
||||
'192_192': string
|
||||
}
|
||||
|
||||
// 공통 이미지 타입
|
||||
export interface GameDataCommImg {
|
||||
groups: GameDataCommImgGroup[]
|
||||
}
|
||||
|
||||
// 공통 이미지 그룹 타입
|
||||
export interface GameDataCommImgGroup {
|
||||
img_path: GameDataImgPath
|
||||
required: boolean
|
||||
img_scope: string
|
||||
group_code: string
|
||||
group_label: string
|
||||
}
|
||||
|
||||
// 이미지 경로 타입
|
||||
export interface GameDataImgPath {
|
||||
comm: string
|
||||
}
|
||||
|
||||
// 메타 태그 타입
|
||||
export interface GameDataMetaTag {
|
||||
x_desc: string
|
||||
og_desc: string
|
||||
x_image: string
|
||||
x_title: string
|
||||
og_image: string
|
||||
og_title: string
|
||||
page_desc: string
|
||||
page_title: string
|
||||
}
|
||||
|
||||
// YouTube 설정 타입
|
||||
export interface GameDataYoutube {
|
||||
use_yn: number
|
||||
api_key: string
|
||||
}
|
||||
|
||||
// SNS 설정 타입
|
||||
export interface GameDataSns {
|
||||
kakao: GameDataSnsItem
|
||||
tiktok: GameDataSnsItem
|
||||
discord: GameDataSnsItem
|
||||
twitter: GameDataSnsItem
|
||||
youtube: GameDataSnsItem
|
||||
facebook: GameDataSnsItem
|
||||
instagram: GameDataSnsItem
|
||||
}
|
||||
|
||||
// SNS 아이템 타입
|
||||
export interface GameDataSnsItem {
|
||||
url: string | null
|
||||
use_yn: number
|
||||
}
|
||||
|
||||
// 마켓 설정 타입
|
||||
export interface GameDataMarket {
|
||||
pc: GameDataMarketItem
|
||||
app_store: GameDataMarketItem
|
||||
google_play: GameDataMarketItem
|
||||
}
|
||||
|
||||
// 마켓 아이템 타입
|
||||
export interface GameDataMarketItem {
|
||||
url: string | null
|
||||
use_yn: number
|
||||
}
|
||||
|
||||
// 푸터 설정 타입
|
||||
export interface GameDataFooter {
|
||||
dev_ci_url: string
|
||||
use_dev_ci_url: boolean
|
||||
fund_display_yn: boolean
|
||||
use_game_rating: boolean
|
||||
fund_display_url: string
|
||||
game_rating_info: GameDataGameRatingInfo
|
||||
}
|
||||
|
||||
// 게임 등급 정보 타입
|
||||
export interface GameDataGameRatingInfo {
|
||||
title: string
|
||||
reg_no: string
|
||||
prod_date: string
|
||||
rating_type: string
|
||||
company_name: string
|
||||
content_info: string
|
||||
rating_grade: string
|
||||
rating_class_no: string
|
||||
}
|
||||
// ===== API 관련 타입들 =====
|
||||
|
||||
// API 에러 응답 타입
|
||||
export interface GameDataErrorResponse {
|
||||
@@ -262,70 +192,3 @@ export interface GameDataApiResult {
|
||||
data: GameDataResponse | null
|
||||
error: string | null
|
||||
}
|
||||
|
||||
// JSON 문자열 파싱을 위한 유틸리티 타입들
|
||||
export interface ParsedKeyColorCodes {
|
||||
'alternative-01': string
|
||||
'alternative-02': string
|
||||
primary: string
|
||||
'text-primary': string
|
||||
'text-secondary': string
|
||||
}
|
||||
|
||||
export interface ParsedGameFont {
|
||||
'font-family': string
|
||||
}
|
||||
|
||||
export interface ParsedGlobal {
|
||||
system_font: ParsedGameFont
|
||||
lang: GameDataLang
|
||||
}
|
||||
|
||||
export interface ParsedButton {
|
||||
google_play: {
|
||||
label: Record<string, string>
|
||||
url: string
|
||||
tracking: GameDataTracking
|
||||
}
|
||||
app_store: {
|
||||
label: Record<string, string>
|
||||
url: string
|
||||
tracking: GameDataTracking
|
||||
}
|
||||
}
|
||||
|
||||
export interface ParsedStoveGnb {
|
||||
skin_type: StoveGnbSkinType
|
||||
stove_install_button_visible: string
|
||||
}
|
||||
|
||||
export interface ParsedSns {
|
||||
kakao: GameDataSnsItem
|
||||
twitter: GameDataSnsItem
|
||||
discord: GameDataSnsItem
|
||||
youtube: GameDataSnsItem
|
||||
instagram: GameDataSnsItem
|
||||
facebook: GameDataSnsItem
|
||||
tiktok: GameDataSnsItem
|
||||
}
|
||||
|
||||
export interface ParsedFooter {
|
||||
use_game_rating: boolean
|
||||
game_rating_info: GameDataGameRatingInfo
|
||||
use_dev_ci_url: boolean
|
||||
dev_ci_url: string
|
||||
fund_display_yn: boolean
|
||||
fund_display_url: string
|
||||
}
|
||||
|
||||
// 파비콘 경로 파싱 타입
|
||||
export interface ParsedFaviconPath {
|
||||
'16_16': string
|
||||
'32_32': string
|
||||
'72_72': string
|
||||
'180_180': string
|
||||
'192_192': string
|
||||
}
|
||||
|
||||
// 기존 gameData 타입과의 호환성을 위한 별칭
|
||||
export type gameData = GameDataValue
|
||||
|
||||
@@ -28,19 +28,20 @@ export interface PageDataValue {
|
||||
page_name: string
|
||||
page_name_en: string
|
||||
page_ver: number
|
||||
display_start_dt: string
|
||||
lang_codes: string // JSON string
|
||||
is_login_required: boolean
|
||||
meta_tag_type: number
|
||||
fit_page_height: boolean
|
||||
use_top_btn: boolean
|
||||
use_sns_btn: boolean
|
||||
use_lnb: boolean
|
||||
lnb_text_color_code_active: string
|
||||
lnb_text_color_code_deactive: string
|
||||
lnb_menus: PageDataLnbMenu[]
|
||||
templates: PageDataTemplate[]
|
||||
meta_tag: PageDataMetaTag // JSON string
|
||||
templates: Record<string, PageDataTemplate>
|
||||
meta_tag: PageDataMetaTag
|
||||
}
|
||||
|
||||
// ===== 세부 데이터 타입들 =====
|
||||
|
||||
// 메타 태그 타입
|
||||
export interface PageDataMetaTag {
|
||||
x_desc: string
|
||||
@@ -53,10 +54,22 @@ export interface PageDataMetaTag {
|
||||
page_title: string
|
||||
}
|
||||
|
||||
// 리소스 타입
|
||||
export interface PageDataResource {
|
||||
resource_sort_order: number
|
||||
resource_name: string
|
||||
resource_type: string
|
||||
groups: Record<string, any>
|
||||
group_sets: Record<string, any>
|
||||
}
|
||||
|
||||
// 컴포넌트 타입
|
||||
export interface PageDataComponent {
|
||||
resources: PageDataResource[]
|
||||
}
|
||||
|
||||
// LNB 메뉴 타입
|
||||
export interface PageDataLnbMenu {
|
||||
text_color_code_active: string
|
||||
text_color_code_deactive: string
|
||||
path_code: string
|
||||
depth: number
|
||||
sort_order: number
|
||||
@@ -68,72 +81,21 @@ export interface PageDataLnbMenu {
|
||||
|
||||
// 템플릿 타입
|
||||
export interface PageDataTemplate {
|
||||
page_ver_tmpl_seq: number
|
||||
tmpl_sort_order: number
|
||||
page_ver_tmpl_name: string
|
||||
page_ver_tmpl_name_en: string
|
||||
template_code: string
|
||||
components_: PageDataTemplateComponent
|
||||
// components: string // JSON string
|
||||
}
|
||||
|
||||
// 템플릿 컴포넌트 타입
|
||||
export interface PageDataTemplateComponent {
|
||||
components: Record<string, PageDataComponent>
|
||||
}
|
||||
|
||||
// 컴포넌트 타입
|
||||
export interface PageDataComponent {
|
||||
component_sort_order: number
|
||||
set_count: number
|
||||
component_name: string
|
||||
has_operational_resource: boolean
|
||||
resources: PageDataResource[]
|
||||
list_resources: PageDataListResource[]
|
||||
flag_resources: PageDataFlagResource[]
|
||||
}
|
||||
|
||||
// 리소스 타입
|
||||
export interface PageDataResource {
|
||||
resource_sort_order: number
|
||||
resource_name: string
|
||||
resource_type: string
|
||||
groups: Record<string, any>
|
||||
group_sets: Record<string, any>
|
||||
}
|
||||
|
||||
// 리스트 리소스 타입
|
||||
export interface PageDataListResource {
|
||||
seq: number
|
||||
title: string
|
||||
img_path: string
|
||||
url: string
|
||||
link_target: string
|
||||
display_start_dt: string
|
||||
display_end_dt: string
|
||||
is_display_status: number
|
||||
display_status: number
|
||||
option01: number
|
||||
option02: number
|
||||
option03: string
|
||||
}
|
||||
|
||||
// 플래그 리소스 타입
|
||||
export interface PageDataFlagResource {
|
||||
seq: number
|
||||
flag_type: number
|
||||
option01: number
|
||||
option02: number
|
||||
option03: string
|
||||
}
|
||||
|
||||
// 운영 리소스 타입 (기존 호환성 유지)
|
||||
export interface PageDataOperateResource {
|
||||
seq: number
|
||||
col: string
|
||||
col2: string
|
||||
col3: string
|
||||
col4: string
|
||||
col5: string
|
||||
col6: string
|
||||
col7: string
|
||||
resource_control_type: number
|
||||
resource_type: string
|
||||
[key: string]: any // Additional Properties
|
||||
}
|
||||
// ===== API 관련 타입들 =====
|
||||
|
||||
// API 에러 응답 타입
|
||||
export interface PageDataErrorResponse {
|
||||
@@ -165,11 +127,3 @@ export interface PageDataApiResult {
|
||||
data: PageDataResponse | null
|
||||
error: string | null
|
||||
}
|
||||
|
||||
// 페이지 데이터 별칭 (기존 호환성)
|
||||
export type pageData = PageDataValue
|
||||
|
||||
// Vue 컴포넌트 타입 정의
|
||||
export interface TemplateComponent {
|
||||
components: Record<string, PageDataComponent>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user