{"version":3,"file":"js/rad-quiz-poll.c038ba90.js","mappings":"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","sources":["webpack://beliefnet-frontend/./src/services/poll.service.ts","webpack://beliefnet-frontend/./src/components/quiz/Poll.vue?7b65","webpack://beliefnet-frontend/./src/components/quiz/Poll.vue"],"sourcesContent":["import { VueLogger } from 'vue-logger-plugin/dist/types/logger';\nimport { FetchService } from './fetch.service';\nimport { Question } from '../common/models/pathfinder/question.model';\nimport { QuestionOptionCount } from '@/common/models/pathfinder/questionoptioncount.model';\n\n// get domain\nlet domain = window.location.hostname.split('.').slice(window.location.hostname.endsWith('.com.br') ? -3 : -2).join('.');\n\n// Special Case Overrides\nif (domain == 'familia.com.br') {\n // Portugese Family site will use Spanish Family domain\n domain = 'familias.com';\n} else if (domain == 'notion-staging.com' || domain == 'bibleminute.co') {\n // BibleMinute will just use Beliefnet domain\n domain = 'beliefnet.com';\n}\n\n// get endpoint url base (familia.com.br needs to pull from familias.com)\nconst endpointBase = `https://cr.${domain}/public/api/v2.0`;\n\n// handle dev environment\n// if (process.env.NODE_ENV == 'development') {\n// endpointBase = 'http://localhost:5000/public/api';\n// }\n\n\nexport class PollService {\n private logger: VueLogger;\n private fetchService: FetchService;\n\n constructor(logger: VueLogger, fetchService: FetchService) {\n this.logger = logger;\n this.fetchService = fetchService\n }\n\n async getQuizOptionCount(\n quizId: string | undefined\n ): Promise<QuestionOptionCount[] | null> {\n try {\n if (!quizId) {\n return null;\n }\n\n const result = await this.fetchService.get<QuestionOptionCount[]>(`${endpointBase}/questions/options/${quizId}`);\n return result.data;\n } catch(error) {\n this.logger.error('failed to get quiz: ', error);\n }\n\n return null;\n }\n\n /**\n * gets back quiz and answer\n */\n async getQuizOptions(\n quizId: string | undefined\n ): Promise<Question | null> {\n try {\n if (!quizId) {\n return null;\n }\n\n const result = await this.fetchService.get<Question>(`${endpointBase}/questions/${quizId}`);\n return result.data;\n } catch(error) {\n this.logger.error('failed to get quiz: ', error);\n }\n\n return null;\n }\n\n async submitQuizChoice(\n quizId: string | undefined,\n optionId: string | undefined\n ): Promise<boolean | null> {\n try {\n if (!quizId || !optionId) {\n return false;\n }\n\n await this.fetchService.post(`${endpointBase}/questions/${quizId}/${optionId}`, null);\n\n return true;\n } catch (error) {\n this.logger.error('failed to submit quiz: ', error);\n }\n\n return false;\n }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, isRef as _isRef, vModelRadio as _vModelRadio, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle } from \"vue\"\n\nconst _hoisted_1 = { class: \"wide-layout-column\" }\nconst _hoisted_2 = { class: \"related-content-column\" }\nconst _hoisted_3 = { class: \"content-container\" }\nconst _hoisted_4 = { class: \"image-container four-three\" }\nconst _hoisted_5 = [\"src\"]\nconst _hoisted_6 = { class: \"poll-block\" }\nconst _hoisted_7 = [\"textContent\"]\nconst _hoisted_8 = [\"value\"]\nconst _hoisted_9 = [\"textContent\"]\nconst _hoisted_10 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"poll-submit\" }, [\n /*#__PURE__*/_createElementVNode(\"input\", {\n type: \"submit\",\n id: \"\",\n class: \"poll-submit-btn\",\n value: \"Submit\"\n })\n], -1)\nconst _hoisted_11 = {\n key: 1,\n class: \"poll-results-wrapper\"\n}\nconst _hoisted_12 = [\"textContent\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"poll-results-bar\"\n}\nconst _hoisted_14 = [\"textContent\"]\nconst _hoisted_15 = { class: \"poll-results-bar-inner\" }\n\nimport { FetchService } from '@/services/fetch.service';\nimport { ref, watch, inject } from 'vue';\nimport { useLogger } from 'vue-logger-plugin';\nimport { useField, useForm } from 'vee-validate';\nimport { PollService } from '@/services/poll.service';\nimport { Question } from '@/common/models/pathfinder/question.model';\nimport useValidators from '../../composables/validators.composable';\n\n\n// Incoming props\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Poll',\n props: { \n quizId: { type: String },\n thumbnail: { type: String }\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\nconst logger = useLogger();\n// inject our locationservice\nconst fetchService: FetchService | undefined = inject('FetchService');\n// get the quiz service that we need to submit results\nconst pollService = new PollService(logger, fetchService);\n\nconst quizPoll = ref<Question | undefined | null>();\npollService.getQuizOptions(props?.quizId)?.then((res) => {\n quizPoll.value = res;\n});\n\n// get validators\nconst { isRequired } = useValidators();\n// generate validation schema\nconst validationSchema = {\n optionId: (value: string) => isRequired(value, 'Please make your choice!')\n};\n\nconst { handleSubmit, errors } = useForm({ validationSchema });\n\n// Field Configurations\nconst { value: optionId } = useField('optionId');\n\nconst submitted = ref(false);\nconst onSubmit = handleSubmit(async (values) => {\n if (props?.quizId && values.optionId) {\n pollService.submitQuizChoice(props?.quizId, values.optionId).then(() => {\n submitted.value = true;\n });\n }\n});\n\n// watch the quiz if we submitted then fetch the stats so we can show them to the user\nwatch(submitted, (newSubmitted, oldSubmitted) => {\n if (oldSubmitted == false && newSubmitted == true) {\n pollService.getQuizOptionCount(props?.quizId).then((res) => {\n quizPoll.value?.options.forEach(o => {\n res?.forEach(oc => {\n if (oc.optionId == o.id) {\n o.count = oc.count;\n }\n });\n });\n\n let totalAnswers = 0;\n quizPoll.value?.options.forEach(o => {\n if (!isNaN(o.count)) {\n totalAnswers += o.count;\n }\n });\n\n quizPoll.value?.options.forEach(o => {\n if (!isNaN(o.count) && !isNaN(totalAnswers)) {\n o.percent = Math.max(0, Math.min(100, Math.floor((o.count / totalAnswers) * 100)));\n }\n });\n });\n }\n});\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"aside\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"img\", {\n src: __props.thumbnail,\n alt: \"\",\n class: \"img-responsive fc-preview-contextmenu\"\n }, null, 8, _hoisted_5)\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"h4\", {\n textContent: _toDisplayString(quizPoll.value?.text)\n }, null, 8, _hoisted_7),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(errors), (error) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"alert alert-warning\",\n role: \"alert\",\n key: error\n }, _toDisplayString(error), 1))\n }), 128)),\n (submitted.value === false)\n ? (_openBlock(), _createElementBlock(\"form\", {\n key: 0,\n onSubmit: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_unref(onSubmit) && _unref(onSubmit)(...args))),\n class: \"poll-option-wrapper\",\n id: \"input_1\"\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(quizPoll.value?.options, (option) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"poll-option\",\n key: option\n }, [\n _withDirectives(_createElementVNode(\"input\", {\n name: \"optionId\",\n type: \"radio\",\n value: `${option.id}`,\n class: \"poll-input\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (_isRef(optionId) ? (optionId).value = $event : null))\n }, null, 8, _hoisted_8), [\n [_vModelRadio, _unref(optionId)]\n ]),\n _createElementVNode(\"label\", {\n for: \"input_question\",\n textContent: _toDisplayString(option.text)\n }, null, 8, _hoisted_9)\n ]))\n }), 128)),\n _hoisted_10\n ], 32))\n : _createCommentVNode(\"\", true),\n (submitted.value === true)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(quizPoll.value?.options, (option) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"poll-results-item\",\n key: option\n }, [\n (!isNaN(option.percent))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"poll-results-label\",\n textContent: _toDisplayString(option.text)\n }, null, 8, _hoisted_12))\n : _createCommentVNode(\"\", true),\n (!isNaN(option.percent))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", {\n class: \"poll-percentage\",\n textContent: _toDisplayString(option.percent + '%')\n }, null, 8, _hoisted_14),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", {\n class: \"grad-bar-percentage\",\n style: _normalizeStyle({ width: `${option.percent}%` })\n }, null, 4)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ]))\n}\n}\n\n})","import script from \"./Poll.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Poll.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__"],"names":["domain","window","location","hostname","split","slice","endsWith","join","endpointBase","PollService","constructor","logger","fetchService","this","getQuizOptionCount","quizId","result","get","data","error","getQuizOptions","submitQuizChoice","optionId","post","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_createElementVNode","type","id","value","_hoisted_11","key","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_defineComponent","__name","props","String","thumbnail","setup","__props","useLogger","inject","pollService","quizPoll","ref","_a","then","res","isRequired","useValidators","validationSchema","handleSubmit","errors","useForm","useField","submitted","onSubmit","values","__awaiter","watch","newSubmitted","oldSubmitted","options","forEach","o","oc","count","totalAnswers","_b","isNaN","_c","percent","Math","max","min","floor","_ctx","_cache","_openBlock","_createElementBlock","src","alt","textContent","_toDisplayString","text","_Fragment","_renderList","_unref","role","args","option","_withDirectives","name","$event","_isRef","_vModelRadio","for","_createCommentVNode","style","_normalizeStyle","width","__exports__"],"sourceRoot":""}