diff --git a/layers/components/blocks/slide/Thumbnail.vue b/layers/components/blocks/slide/Thumbnail.vue index 17b7383..a025fb2 100644 --- a/layers/components/blocks/slide/Thumbnail.vue +++ b/layers/components/blocks/slide/Thumbnail.vue @@ -104,7 +104,6 @@ onMounted(() => { if (mainInst && thumbsInst) { mainInst.sync(thumbsInst) - // 썸네일 슬라이드의 화살표 버튼에 이벤트 리스너 추가 nextTick(() => { addArrowClickListeners(thumbsInst, (direction, targetIndex) => { diff --git a/layers/templates/GrGallery01/index.vue b/layers/templates/GrGallery01/index.vue index 6570546..8904d60 100644 --- a/layers/templates/GrGallery01/index.vue +++ b/layers/templates/GrGallery01/index.vue @@ -63,6 +63,26 @@ const isPassVideo = (item: PageDataTemplateComponentSet, index: number) => { const handleVideoClick = (index: number) => { playingSlideIndex.value = index + + const group = getComponentGroup(props.components, 'videoPlay') + const base = group?.tracking?.click_item || '' + const next = base + ? base.replace(/(^.*_)(\d+)$/, `$1${index}`) === base + ? `${base}_${index}` + : base.replace(/(^.*_)(\d+)$/, `$1${index}`) + : `${index}` + + const sendingGroup = group + ? { ...group, tracking: { ...group.tracking, click_item: next } } + : group + + sendLog( + locale.value, + useAnalyticsLogDataDirect( + (sendingGroup as any) || getComponentGroup(props.components, 'videoPlay'), + 1 + ) + ) } const stopVideo = () => { diff --git a/layers/types/api/pageData.ts b/layers/types/api/pageData.ts index 60ea386..819a366 100644 --- a/layers/types/api/pageData.ts +++ b/layers/types/api/pageData.ts @@ -118,11 +118,11 @@ export type PageDataTemplateComponentSet = PageDataTemplateComponent & { set_order?: number } -// 템플릿 컴포넌트 타입 - 두 가지 패턴 +// 템플릿 컴포넌트 타입 - 세 가지 패턴 export type PageDataTemplateComponents = | PageDataTemplateComponent // 단일 컴포넌트 패턴 - | { group_sets: PageDataTemplateComponentSet[] } // 그룹 세트 패턴 - + | { group_sets: PageDataTemplateComponentSet[], arrow: PageDataArrowComponent } // 그룹 세트 패턴 + // 템플릿 타입 export interface PageDataTemplate { page_ver_tmpl_seq: number @@ -133,13 +133,6 @@ export interface PageDataTemplate { components: PageDataTemplateComponents } -// Tracking 타입 -export interface PageDataTracking { - click_item: string - action_type: string - click_sarea: string -} - // ===== API 관련 타입들 ===== // API 에러 응답 타입 @@ -172,3 +165,15 @@ export interface PageDataApiResult { data: PageDataResponse | null error: string | null } +// Tracking 타입 +export interface PageDataTracking { + click_item: string + action_type: string + click_sarea: string +} + +// Arrow 컴포넌트 타입 + +export type PageDataArrowComponent = PageDataTemplateComponent & { + groups: PageDataResourceGroups +}