From fdf1d9175c6b6b0ac7c992fd02a29e0e8d0e9857 Mon Sep 17 00:00:00 2001 From: clkim Date: Tue, 21 Oct 2025 12:18:06 +0900 Subject: [PATCH 1/9] =?UTF-8?q?fix.=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8?= =?UTF-8?q?=20dataUtil=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layers/components/blocks/CardNews.vue | 12 +- .../components/blocks/slide/CenterFocus.vue | 17 +-- .../blocks/slide/CenterHighlight.vue | 4 +- layers/components/blocks/slide/Fade.vue | 2 +- layers/components/blocks/slide/Thumbnail.vue | 2 +- layers/components/widgets/ButtonList.vue | 18 ++- layers/components/widgets/VideoPlay.vue | 10 +- layers/composables/useAnalytics.ts | 25 ++-- layers/templates/GrDetail01/index.vue | 4 + layers/templates/GrDetail02/index.vue | 4 + layers/templates/GrDetail03/index.vue | 4 + layers/templates/GrGallery01/index.vue | 19 ++- layers/templates/GrGallery02/index.vue | 14 +-- layers/templates/GrGallery03/index.vue | 11 +- layers/templates/GrVisual01/index.vue | 28 ++--- layers/templates/GrVisual02/index.vue | 57 +++++---- layers/templates/GrVisual03/index.vue | 3 +- layers/utils/dataUtil.ts | 109 +++++++----------- 18 files changed, 159 insertions(+), 184 deletions(-) diff --git a/layers/components/blocks/CardNews.vue b/layers/components/blocks/CardNews.vue index f871987..70dad2c 100644 --- a/layers/components/blocks/CardNews.vue +++ b/layers/components/blocks/CardNews.vue @@ -10,28 +10,25 @@ interface Props { } const props = defineProps() -const {locale} = useI18n() +const { locale } = useI18n() const { sendLog, useAnalyticsLogDataDirect } = useAnalytics() -const handleLinkClick = (title) => { +const handleLinkClick = (title: string) => { const trackingData = { tracking: { click_item: title, action_type: 'click', - click_sarea: '' - } + click_sarea: '', + }, } sendLog(locale.value, useAnalyticsLogDataDirect(trackingData, 1)) } - - diff --git a/layers/components/blocks/slide/CenterFocus.vue b/layers/components/blocks/slide/CenterFocus.vue index c7d6b88..3948397 100644 --- a/layers/components/blocks/slide/CenterFocus.vue +++ b/layers/components/blocks/slide/CenterFocus.vue @@ -34,7 +34,7 @@ const options = computed((): ResponsiveOptions => { focus: 'center', autoWidth: true, autoHeight: true, - speed: 400, + speed: 500, updateOnMove: true, arrows: props.arrows && isMultipleItems.value, pagination: props.pagination && isMultipleItems.value, @@ -86,7 +86,7 @@ const style = computed(() => { const handleSplideMounted = (splide: SplideType) => { emit('mounted', splide) splide.refresh() - + // 화살표 버튼 클릭 이벤트 리스너 추가 nextTick(() => { addArrowClickListeners(splide, (direction, targetIndex) => { @@ -103,18 +103,6 @@ const handleMove = ( ) => { emit('move', splide, newIndex, oldIndex, destIndex) } - -const handleMoved = ( - splide: SplideType, - newIndex: number, - oldIndex: number, - destIndex: number -) => { - emit('moved', splide, newIndex, oldIndex, destIndex) -} - - - diff --git a/layers/components/widgets/VideoPlay.vue b/layers/components/widgets/VideoPlay.vue index 9c1e057..a443495 100644 --- a/layers/components/widgets/VideoPlay.vue +++ b/layers/components/widgets/VideoPlay.vue @@ -6,19 +6,19 @@ const props = defineProps<{ pageVerTmplSeq: number }>() -// YouTube 모달 스토어 사용 const modalStore = useModalStore() - -const {locale} = useI18n() +const { locale } = useI18n() const { sendLog, useAnalyticsLogDataDirect } = useAnalytics() - // 비디오 플레이 버튼 클릭 핸들러 const handleVideoPlayClick = () => { const youtubeUrl = props.resourcesData?.display?.text ?? '' modalStore.handleOpenYoutube({ youtubeUrl }) - sendLog(locale.value, useAnalyticsLogDataDirect(props.resourcesData, props.pageVerTmplSeq)) + sendLog( + locale.value, + useAnalyticsLogDataDirect(props.resourcesData, props.pageVerTmplSeq) + ) } diff --git a/layers/composables/useAnalytics.ts b/layers/composables/useAnalytics.ts index b170854..aa99544 100644 --- a/layers/composables/useAnalytics.ts +++ b/layers/composables/useAnalytics.ts @@ -1,9 +1,11 @@ import * as amplitude from '@amplitude/analytics-browser' -import type { - AnalyticsDetailType, -} from '../types/AnalyticsType' import type { PageDataResourceGroup } from '#layers/types/api/pageData' -import type { IdentityInfo, ActionInfo, MarketingInfo } from '../types/Stove' +import type { AnalyticsDetailType } from '#layers/types/AnalyticsType' +import type { + IdentityInfo, + ActionInfo, + MarketingInfo, +} from '#layers/types/Stove' declare const svcLog: any declare const twq: any @@ -72,20 +74,20 @@ export const useAnalyticsLogDataDirect = ( // logSourceType:pageDataTrack.logSourceType, // viewArea:pageDataTrack.viewArea, // viewType:pageDataTrack.viewType, - clickArea:pageData.page_name_en, + clickArea: pageData.page_name_en, clickSarea: pageData.templates[pageVerTmplSeq].page_ver_tmpl_name_en, clickItem: `${pageData.templates[pageVerTmplSeq].page_ver_tmpl_name}_${pageDataTrack?.click_item}`, event: pageData.page_name, eventCategory: `${pageData.page_name}_${pageDataTrack?.click_item}`, template_code: pageData.templates[pageVerTmplSeq].template_code, page_ver_tmpl_name: pageData.templates[pageVerTmplSeq].page_ver_tmpl_name, - page_ver_tmpl_name_en: pageData.templates[pageVerTmplSeq].page_ver_tmpl_name_en, + page_ver_tmpl_name_en: + pageData.templates[pageVerTmplSeq].page_ver_tmpl_name_en, } as unknown as AnalyticsDetailType return logData } - // target에 {XX1, XX2}와 같은 형태가 포함되어 있을 경우 options.clickItem으로부터 값 추출하여 세팅 const findValueFromOption = (target: string, { options = {} }: any) => { if (target.includes('{') && target.includes('}')) { @@ -362,5 +364,12 @@ const sendMarketingScript = ({ } export default () => { - return { sendGA, sendSA, sendLog, sendMarketingScript, useAnalyticsLogData, useAnalyticsLogDataDirect } + return { + sendGA, + sendSA, + sendLog, + sendMarketingScript, + useAnalyticsLogData, + useAnalyticsLogDataDirect, + } } diff --git a/layers/templates/GrDetail01/index.vue b/layers/templates/GrDetail01/index.vue index 8a62136..3764656 100644 --- a/layers/templates/GrDetail01/index.vue +++ b/layers/templates/GrDetail01/index.vue @@ -1,5 +1,9 @@