From 0ad19bbcfd76b32e941286b61c5f27225207cefb Mon Sep 17 00:00:00 2001 From: Duong Truong Phong Date: Fri, 5 Jul 2024 15:30:58 +0700 Subject: [PATCH 1/2] phongdt:fix paging --- .../templates/sections/articles/Default.vue | 23 ++++--------------- 1 file changed, 4 insertions(+), 19 deletions(-) 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 }} - - - - - +
From ccd92c86ee3327941575e3e783624e687a4d7076 Mon Sep 17 00:00:00 2001 From: nguyen van thai Date: Sat, 6 Jul 2024 16:28:45 +0700 Subject: [PATCH 2/2] =?UTF-8?q?thainv-dev:=20Nh=C3=BAng?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/article/immerse/Poll.vue | 85 ++++++++++++++----- components/article/immerse/Quiz.vue | 22 +++-- components/article/immerse/Survey.vue | 29 +++++-- .../layouts/articles/details/Default.vue | 12 ++- 4 files changed, 116 insertions(+), 32 deletions(-) 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-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 @@