feat: add gtag trackevent
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
|
import { useGtm } from '@gtm-support/vue-gtm'
|
||||||
import MeatTag from './MeatTag.vue'
|
import MeatTag from './MeatTag.vue'
|
||||||
import StapleTag from './StapleTag.vue'
|
import StapleTag from './StapleTag.vue'
|
||||||
import DishTag from './DishTag.vue'
|
import DishTag from './DishTag.vue'
|
||||||
@@ -28,9 +29,38 @@ const displayedRecipe = computed(() => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
const toggleStuff = (item: StuffItem) => {
|
const gtm = useGtm()
|
||||||
|
|
||||||
|
const toggleStuff = (item: StuffItem, category = '') => {
|
||||||
|
gtm?.trackEvent({
|
||||||
|
event: 'stuff',
|
||||||
|
category,
|
||||||
|
action: 'click',
|
||||||
|
label: '食材',
|
||||||
|
value: item.name,
|
||||||
|
})
|
||||||
|
|
||||||
rStore.toggleStuff(item.name)
|
rStore.toggleStuff(item.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* toggle tool
|
||||||
|
* @param item
|
||||||
|
*/
|
||||||
|
const clickTool = (item: StuffItem) => {
|
||||||
|
if (curTool.value === item.name)
|
||||||
|
curTool.value = ''
|
||||||
|
else
|
||||||
|
curTool.value = item.name
|
||||||
|
|
||||||
|
gtm?.trackEvent({
|
||||||
|
event: 'tool',
|
||||||
|
category: 'tool',
|
||||||
|
action: 'click',
|
||||||
|
label: '工具',
|
||||||
|
value: item.name,
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -50,7 +80,7 @@ const toggleStuff = (item: StuffItem) => {
|
|||||||
<VegetableTag
|
<VegetableTag
|
||||||
v-for="item, i in vegetable" :key="i"
|
v-for="item, i in vegetable" :key="i"
|
||||||
:active="curStuff.includes(item.name)"
|
:active="curStuff.includes(item.name)"
|
||||||
@click="toggleStuff(item)"
|
@click="toggleStuff(item, 'vegetable')"
|
||||||
>
|
>
|
||||||
<span v-if="item.emoji" class="inline-flex">{{ item.emoji }}</span>
|
<span v-if="item.emoji" class="inline-flex">{{ item.emoji }}</span>
|
||||||
<span v-else-if="item.image" class="inline-flex">
|
<span v-else-if="item.image" class="inline-flex">
|
||||||
@@ -70,7 +100,7 @@ const toggleStuff = (item: StuffItem) => {
|
|||||||
<MeatTag
|
<MeatTag
|
||||||
v-for="item, i in meat" :key="i"
|
v-for="item, i in meat" :key="i"
|
||||||
:active="curStuff.includes(item.name)"
|
:active="curStuff.includes(item.name)"
|
||||||
@click="toggleStuff(item)"
|
@click="toggleStuff(item, 'meat')"
|
||||||
>
|
>
|
||||||
<span>{{ item.emoji }}</span>
|
<span>{{ item.emoji }}</span>
|
||||||
<span m="l-1">
|
<span m="l-1">
|
||||||
@@ -87,7 +117,7 @@ const toggleStuff = (item: StuffItem) => {
|
|||||||
<StapleTag
|
<StapleTag
|
||||||
v-for="item, i in staple" :key="i"
|
v-for="item, i in staple" :key="i"
|
||||||
:active="curStuff.includes(item.name)"
|
:active="curStuff.includes(item.name)"
|
||||||
@click="toggleStuff(item)"
|
@click="toggleStuff(item, 'staple')"
|
||||||
>
|
>
|
||||||
<span>{{ item.emoji }}</span>
|
<span>{{ item.emoji }}</span>
|
||||||
<span m="l-1">
|
<span m="l-1">
|
||||||
@@ -104,7 +134,7 @@ const toggleStuff = (item: StuffItem) => {
|
|||||||
<ToolTag
|
<ToolTag
|
||||||
v-for="item, i in tools" :key="i"
|
v-for="item, i in tools" :key="i"
|
||||||
:active="curTool === item.name"
|
:active="curTool === item.name"
|
||||||
@click="curTool === item.name ? curTool = '' : curTool = item.name"
|
@click="clickTool(item)"
|
||||||
>
|
>
|
||||||
<span v-if="item.emoji" class="inline-flex">{{ item.emoji }}</span>
|
<span v-if="item.emoji" class="inline-flex">{{ item.emoji }}</span>
|
||||||
<span v-else-if="item.icon" class="inline-flex">
|
<span v-else-if="item.icon" class="inline-flex">
|
||||||
|
|||||||
@@ -1,8 +1,21 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import { useGtm } from '@gtm-support/vue-gtm'
|
||||||
import type { RecipeItem } from '~/types'
|
import type { RecipeItem } from '~/types'
|
||||||
defineProps<{
|
defineProps<{
|
||||||
dish: RecipeItem
|
dish: RecipeItem
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
|
const gtm = useGtm()
|
||||||
|
|
||||||
|
const triggerGtm = (val: string) => {
|
||||||
|
gtm?.trackEvent({
|
||||||
|
event: 'recipe',
|
||||||
|
category: 'dish',
|
||||||
|
action: 'click',
|
||||||
|
label: '跳转菜谱',
|
||||||
|
value: val,
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -10,6 +23,7 @@ defineProps<{
|
|||||||
:href="dish.link" target="_blank" class="tag rounded" p="x-2"
|
:href="dish.link" target="_blank" class="tag rounded" p="x-2"
|
||||||
border="~ blue-200 dark:blue-800"
|
border="~ blue-200 dark:blue-800"
|
||||||
bg="blue-300 opacity-20"
|
bg="blue-300 opacity-20"
|
||||||
|
@click="triggerGtm(dish.name)"
|
||||||
>
|
>
|
||||||
<span text="sm blue-700 dark:blue-200">{{ dish.name }}</span>
|
<span text="sm blue-700 dark:blue-200">{{ dish.name }}</span>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
Reference in New Issue
Block a user