diff --git a/components/article/immerse/Poll.vue b/components/article/immerse/Poll.vue index f013212..c350278 100644 --- a/components/article/immerse/Poll.vue +++ b/components/article/immerse/Poll.vue @@ -18,6 +18,7 @@ const { currentPollOptions } = storeToRefs(store.pollOptions); const { currentPollResponses } = storeToRefs(store.pollResponse); const poll = reactive({}); const options = ref([]); + async function loadData() { await store.poll.fetchById(String(props.dataId)); await store.pollOptions.fetchByPollId(String(props.dataId)); @@ -30,13 +31,14 @@ function assignData() { options.value = currentPollOptions.value; } -onBeforeMount(async () => { - await loadData(); -}); +await loadData(); +// onBeforeMount(async () => { +// }); -const selectedOption = ref(-1); -const showResult = ref(false); +// const selectedOption = ref(-1); +// const showResult = ref(false); const alreadyVoted = ref(false); +const showResult = ref(false) const canShowResult = computed(() => { switch (poll.settings?.resultPublication) { case 0: @@ -49,29 +51,74 @@ const canShowResult = computed(() => { return alreadyVoted.value && (!poll.endTime || new Date() > new Date(poll.endTime)); } }); + + +// const toggleResults = () => { +// if (canShowResult.value) showResult.value = !showResult.value; +// }; + +const singleSelect = ref(-1) +const multipleSelect = ref([]) + const totalResponses = ref(0); async function submitVote() { - if (selectedOption.value >= 0 && !alreadyVoted.value) { - const result = await store.pollResponse.create({ optionId: selectedOption.value }); - if (result?.id) { - totalResponses.value = options.value?.reduce((sum, option) => sum + Number(option.responseCount ?? 0), 1); - options?.value?.forEach((option: PollOption | any) => { - if (option.id === selectedOption.value) { + // if (selectedOption.value >= 0 && !alreadyVoted.value) { + // const result = await store.pollResponse.create({ optionId: selectedOption.value }); + // if (result?.id) { + // totalResponses.value = options.value?.reduce((sum, option) => sum + Number(option.responseCount ?? 0), 1); + // options?.value?.forEach((option: PollOption | any) => { + // if (option.id === selectedOption.value) { + // option.responseCount = (option.responseCount ?? 0) + 1; + // } + // option.percentage = Number(((option.responseCount / totalResponses.value) * 100).toFixed(1)); + // }); + // alreadyVoted.value = true; + // } + // } + switch (poll.type) { + case 1: + if(singleSelect.value >= 0) { + totalResponses.value = options.value?.reduce((sum, option) => sum + Number(option.responseCount ?? 0), 1); + options?.value?.forEach((option: PollOption | any) => { + if (option.id === singleSelect.value) { option.responseCount = (option.responseCount ?? 0) + 1; } option.percentage = Number(((option.responseCount / totalResponses.value) * 100).toFixed(1)); + alreadyVoted.value = true }); - alreadyVoted.value = true; - } + } } } - -const toggleResults = () => { - if (canShowResult.value) showResult.value = !showResult.value; -}; diff --git a/components/article/immerse/Quiz.vue b/components/article/immerse/Quiz.vue index ad3858a..09a2a4a 100644 --- a/components/article/immerse/Quiz.vue +++ b/components/article/immerse/Quiz.vue @@ -246,23 +246,33 @@ async function submitSend() {} diff --git a/components/dynamic-page/page-component/templates/sections/articles/Default.vue b/components/dynamic-page/page-component/templates/sections/articles/Default.vue index ff7cbf4..52343ae 100644 --- a/components/dynamic-page/page-component/templates/sections/articles/Default.vue +++ b/components/dynamic-page/page-component/templates/sections/articles/Default.vue @@ -69,9 +69,6 @@ const handleRouteChange = async (query: any) => { } }; -onBeforeMount(() => { - if (route.query[`cpn_${_props.component?.id}`]) handleRouteChange(route.query); -}); const loadPage = async (page: number) => { let newDataQuery = ""; @@ -92,6 +89,8 @@ const loadPage = async (page: number) => { } }; +if (route.query[`cpn_${_props.component?.id}`]) handleRouteChange(route.query); + const handleNextPrev = (type: "+" | "-") => { if (listArticleByCategory.value?.length > 0) { if (type === "+") { @@ -128,25 +127,11 @@ const mapActivesToItems = (index: number) => {
- - - - - + {{ index + 1 }} - - - - - +
diff --git a/components/dynamic-page/page-section/layouts/articles/details/Default.vue b/components/dynamic-page/page-section/layouts/articles/details/Default.vue index 35273da..c67fcfa 100644 --- a/components/dynamic-page/page-section/layouts/articles/details/Default.vue +++ b/components/dynamic-page/page-section/layouts/articles/details/Default.vue @@ -1,4 +1,11 @@