{"version":3,"sources":["webpack:///./src/components/course_tree/node/PollNode.vue?b8d0","webpack:///./src/components/course_tree/node/PollNode.vue","webpack:///./src/components/course_tree/node/PollNode.vue?b8cc"],"names":["_hoisted_1","key","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","style","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_link","_component_Timestamp","_component_ProcessedTextFragment","_component_Btn","_component_RadioGroup","_component_Pie","_component_CopyToClipboard","node","state","PollNodeState","DRAFT","isDraggable","OPEN","to","name","params","nodeId","id","default","$t","_","creator","full_name","updatedOnDifferentDay","value","modified","text","choices","length","CLOSED","options","pollChoicesAsOptions","modelValue","draftSelectedChoiceId","selectedChoice","$event","disabled","canVote","itemSide","option","size","outline","onClick","onVote","showResults","chartData","pollVotesData","chartOptions","height","canEdit","onEdit","variant","tooltip","onDelete","permalink","register","mixins","props","type","Object","required","data","emits","methods","this","$emit","choiceId","withLoading","mainStore","votePollNodeChoice","courseId","remove","computed","responsive","maintainAspectRatio","pollChoicesSelectionFrequency","map","c","datum","frequency","votes","sort","a","b","String","colors","reduce","acc","e","color","labels","r","slice","datasets","backgroundColor","filter","selected","textPreview","o","content","Date","created","components","ProcessedTextFragment","Timestamp","Btn","CopyToClipboard","RadioGroup","Pie","__exports__"],"mappings":"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","file":"js/chunk-2d213b15.0d6f1e84.js","sourcesContent":["import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"opacity-0 group-hover:opacity-50 transition-opacity duration-100 ease absolute top-1/2 transform -translate-y-1/2 left-0 text-lg cursor-move drag-handle material-icons-outlined\"\n}\nconst _hoisted_2 = { class: \"flex md:flex-row flex-col items-start\" }\nconst _hoisted_3 = { class: \"flex flex-col w-full\" }\nconst _hoisted_4 = { class: \"flex\" }\nconst _hoisted_5 = {\n style: {\"line-height\":\"0.95\"},\n class: \"mb-2 hover:text-primary hover:underline\"\n}\nconst _hoisted_6 = { class: \"flex flex-wrap ml-0.5 -mt-2\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"text-sm mr-2\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"text-sm text-muted\",\n style: {\"margin-right\":\"3px\"}\n}\nconst _hoisted_9 = { class: \"flex md:flex-row flex-col md:ml-12 md:pl-1 ml-1\" }\nconst _hoisted_10 = { class: \"mt-2 flex\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"mt-4 hidden-in-dragging-element\"\n}\nconst _hoisted_12 = { class: \"\" }\nconst _hoisted_13 = {\n key: 0,\n class: \"italic flex items-center space-x-1 text-muted text-sm mb-1\"\n}\nconst _hoisted_14 = /*#__PURE__*/_createElementVNode(\"span\", {\n class: \"-ml-0.5 material-icons-outlined\",\n style: {\"font-size\":\"16px !important\"}\n}, \"block\", -1)\nconst _hoisted_15 = {\n key: 0,\n class: \"flex items-center space-x-2 ml-8\"\n}\nconst _hoisted_16 = { class: \"text-sm text-muted italic hidden md:block\" }\nconst _hoisted_17 = {\n key: 0,\n class: \"flex flex-col items-center md:ml-auto space-y-2 overflow-hidden\"\n}\nconst _hoisted_18 = { class: \"group-hover:opacity-100 transition-opacity duration-100 ease opacity-50 ml-auto flex items-center\" }\nconst _hoisted_19 = {\n key: 0,\n class: \"text-muted mr-4 hidden md:block\"\n}\nconst _hoisted_20 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"text-xl material-icons\" }, \" edit \", -1)\nconst _hoisted_21 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"text-xl material-icons\" }, \" delete \", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Timestamp = _resolveComponent(\"Timestamp\")!\n const _component_ProcessedTextFragment = _resolveComponent(\"ProcessedTextFragment\")!\n const _component_Btn = _resolveComponent(\"Btn\")!\n const _component_RadioGroup = _resolveComponent(\"RadioGroup\")!\n const _component_Pie = _resolveComponent(\"Pie\")!\n const _component_CopyToClipboard = _resolveComponent(\"CopyToClipboard\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([{ 'bg-light': _ctx.node.state === _ctx.PollNodeState.DRAFT }, \"group card card-border card-hoverable hover-shadow-elevation hover:border-transparent relative\"])\n }, [\n (_ctx.isDraggable)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, \" drag_indicator \"))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"flex rounded-full mr-3\", {\n\t\t\t\t\t\t\t'bg-gray-200': _ctx.node.state === _ctx.PollNodeState.DRAFT,\n\t\t\t\t\t\t\t'bg-primary bg-opacity-15': _ctx.node.state === _ctx.PollNodeState.OPEN,\n\t\t\t\t\t\t}]),\n style: {\"min-width\":\"2.5rem\",\"max-width\":\"2.5rem\",\"min-height\":\"2.5rem\",\"max-height\":\"2.5rem\"}\n }, [\n _createElementVNode(\"span\", {\n style: {\"font-size\":\"28px !important\"},\n class: _normalizeClass([{\n\t\t\t\t\t\t\t\t'text-gray-500': _ctx.node.state === _ctx.PollNodeState.DRAFT,\n\t\t\t\t\t\t\t\t'text-primary': _ctx.node.state === _ctx.PollNodeState.OPEN,\n\t\t\t\t\t\t\t}, \"m-auto material-icons-outlined\"])\n }, \"poll\", 2)\n ], 2),\n _createElementVNode(\"div\", null, [\n _createVNode(_component_router_link, {\n to: {\n\t\t\t\t\t\t\t\tname: 'CourseTreeNodeDetailDispatcher',\n\t\t\t\t\t\t\t\tparams: { nodeId: _ctx.node.id },\n\t\t\t\t\t\t\t}\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"h2\", _hoisted_5, _toDisplayString(_ctx.$t(\"course_tree.poll_title\")), 1)\n ]),\n _: 1\n }, 8, [\"to\"]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_ctx.node.creator)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_7, _toDisplayString(_ctx.node.creator.full_name), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.updatedOnDifferentDay)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_8, _toDisplayString(_ctx.$t(\"misc.updated_on\")), 1))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Timestamp, {\n \"date-only\": true,\n class: \"text-sm text-muted\",\n value: _ctx.node.modified\n }, null, 8, [\"value\"])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(_component_ProcessedTextFragment, {\n class: \"w-full overflow-x-hidden overflow-ellipsis text-muted\",\n value: _ctx.node.text\n }, null, 8, [\"value\"])\n ]),\n (_ctx.node.choices.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createElementVNode(\"div\", _hoisted_12, [\n (_ctx.node.state === _ctx.PollNodeState.CLOSED)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _hoisted_14,\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t(\"course_tree.poll_closed\")), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_RadioGroup, {\n class: \"-ml-2 flex\",\n options: _ctx.pollChoicesAsOptions,\n modelValue: _ctx.draftSelectedChoiceId ?? _ctx.selectedChoice?.id,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => (_ctx.draftSelectedChoiceId = $event)),\n disabled: !_ctx.canVote\n }, {\n itemSide: _withCtx(({ option }) => [\n (_ctx.canVote && option.value == _ctx.draftSelectedChoiceId)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createVNode(_component_Btn, {\n size: 'xs',\n outline: true,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onVote(_ctx.draftSelectedChoiceId)))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"course_tree.save_poll_choice\")), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"p\", _hoisted_16, _toDisplayString(_ctx.$t(\"course_tree.poll_choice_not_saved_yet\")), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"options\", \"modelValue\", \"disabled\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (_ctx.showResults && _ctx.node.state !== _ctx.PollNodeState.DRAFT)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createVNode(_component_Pie, {\n chartData: _ctx.pollVotesData,\n chartOptions: _ctx.chartOptions,\n height: 200\n }, null, 8, [\"chartData\", \"chartOptions\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_18, [\n (_ctx.node.state === _ctx.PollNodeState.DRAFT)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_19, _toDisplayString(_ctx.$t(\"course_tree.draft\")), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.canEdit)\n ? (_openBlock(), _createBlock(_component_Btn, {\n key: 1,\n onClick: _ctx.onEdit,\n variant: 'icon',\n outline: true,\n class: \"icon-btn-primary\",\n tooltip: _ctx.$t('misc.edit')\n }, {\n default: _withCtx(() => [\n _hoisted_20\n ]),\n _: 1\n }, 8, [\"onClick\", \"tooltip\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.canEdit)\n ? (_openBlock(), _createBlock(_component_Btn, {\n key: 2,\n class: \"mr-4\",\n onClick: _ctx.onDelete,\n variant: 'icon',\n outline: true,\n tooltip: _ctx.$t('misc.delete')\n }, {\n default: _withCtx(() => [\n _hoisted_21\n ]),\n _: 1\n }, 8, [\"onClick\", \"tooltip\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_CopyToClipboard, {\n \"icon-only\": true,\n tooltip: _ctx.$t('exercise_solution.share'),\n value: _ctx.permalink\n }, null, 8, [\"tooltip\", \"value\"])\n ])\n ])\n ], 2))\n}","\nimport Btn from \"@/components/ui/Btn.vue\";\nimport CopyToClipboard from \"@/components/ui/CopyToClipboard.vue\";\nimport ProcessedTextFragment from \"@/components/ui/ProcessedTextFragment.vue\";\nimport RadioGroup from \"@/components/ui/RadioGroup.vue\";\nimport Timestamp from \"@/components/ui/Timestamp.vue\";\nimport { getTranslatedString as _ } from \"@/i18n\";\nimport { SelectableOption } from \"@/interfaces\";\nimport { courseIdMixin, loadingMixin, nodeMixin } from \"@/mixins\";\nimport { PollNode, PollNodeChoice, PollNodeState } from \"@/models\";\nimport { useMainStore } from \"@/stores/mainStore\";\nimport { getColorFromString, md5, sameDay, setErrorNotification } from \"@/utils\";\nimport { defineComponent, PropType } from \"@vue/runtime-core\";\nimport { mapStores } from \"pinia\";\nimport { nodeEmits, nodeProps } from \"../shared\";\n\nimport { Pie } from \"vue-chartjs\";\nimport { Chart as ChartJS, ArcElement, Tooltip, Legend } from \"chart.js\";\nimport { TChartData } from \"vue-chartjs/dist/types\";\nimport { DataFrequency, makeLabelText } from \"@/reports/misc\";\n\nChartJS.register(ArcElement, Tooltip, Legend);\n\nexport default defineComponent({\n\tname: \"PollNode\",\n\tmixins: [loadingMixin, courseIdMixin, nodeMixin],\n\tprops: {\n\t\tnode: {\n\t\t\ttype: Object as PropType,\n\t\t\trequired: true,\n\t\t},\n\t\t...nodeProps,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tPollNodeState,\n\t\t\tdraftSelectedChoiceId: null as null | string,\n\t\t};\n\t},\n\temits: {\n\t\t// TODO periodically refetch to get updated vote counts; add a \"refetchNode\" event\n\t\t...nodeEmits,\n\t},\n\tmethods: {\n\t\tonEdit() {\n\t\t\tthis.$emit(\"editNode\", this.node);\n\t\t},\n\t\tonDelete() {\n\t\t\tthis.$emit(\"deleteNode\", this.node);\n\t\t},\n\t\tasync onVote(choiceId: string) {\n\t\t\tawait this.withLoading(async () => {\n\t\t\t\tawait this.mainStore.votePollNodeChoice({\n\t\t\t\t\tcourseId: this.courseId,\n\t\t\t\t\tnodeId: this.node.id,\n\t\t\t\t\tchoiceId,\n\t\t\t\t\tremove: false,\n\t\t\t\t});\n\t\t\t}, setErrorNotification);\n\t\t},\n\t},\n\tcomputed: {\n\t\t...mapStores(useMainStore),\n\t\tchartOptions() {\n\t\t\treturn { responsive: false, maintainAspectRatio: false };\n\t\t},\n\t\tpollChoicesSelectionFrequency(): DataFrequency[] {\n\t\t\treturn this.node.choices\n\t\t\t\t.map(c => ({ datum: c, frequency: c.votes ?? 0 }))\n\t\t\t\t.sort((a, b) => (String(a.datum.id) < String(b.datum.id) ? -1 : 1));\n\t\t},\n\n\t\t// TODO extract shared logic with detail version of this component\n\t\tpollVotesData(): TChartData<\"pie\", number[], unknown> {\n\t\t\tconst colors = this.node.choices.reduce((acc, e) => {\n\t\t\t\tconst text = md5(e.text);\n\t\t\t\tconst color = getColorFromString(text);\n\t\t\t\tacc[e.text] = color + \"B3\";\n\t\t\t\treturn acc;\n\t\t\t}, {} as Record);\n\t\t\treturn {\n\t\t\t\tlabels: this.pollChoicesSelectionFrequency.map(\n\t\t\t\t\tr =>\n\t\t\t\t\t\tmakeLabelText(r.datum.text).slice(0, 100) +\n\t\t\t\t\t\t(makeLabelText(r.datum.text).length <= 100 ? \"\" : \"...\"),\n\t\t\t\t),\n\t\t\t\tdatasets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdata: this.pollChoicesSelectionFrequency.map(r => r.frequency),\n\t\t\t\t\t\tbackgroundColor: this.pollChoicesSelectionFrequency.map(\n\t\t\t\t\t\t\tr => colors[r.datum.text],\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t},\n\t\tselectedChoice() {\n\t\t\t// ! assumess only one choice can be selected\n\t\t\treturn this.node.choices.filter(c => c.selected)[0];\n\t\t},\n\t\ttextPreview() {\n\t\t\treturn this.node.text;\n\t\t},\n\t\tcanVote() {\n\t\t\treturn this.node.state === PollNodeState.OPEN && !this.selectedChoice;\n\t\t},\n\t\tshowResults() {\n\t\t\treturn !this.canVote;\n\t\t},\n\t\tpollChoicesAsOptions(): SelectableOption[] {\n\t\t\treturn this.node.choices.map(o => ({\n\t\t\t\tcontent: o.text,\n\t\t\t\tvalue: o.id,\n\t\t\t}));\n\t\t},\n\t\tupdatedOnDifferentDay() {\n\t\t\treturn !sameDay(new Date(this.node.created), new Date(this.node.modified));\n\t\t},\n\t},\n\t// eslint-disable-next-line vue/no-unused-components\n\tcomponents: {\n\t\tProcessedTextFragment,\n\t\tTimestamp,\n\t\tBtn,\n\t\tCopyToClipboard,\n\t\tRadioGroup,\n\t\tPie,\n\t},\n});\n","import { render } from \"./PollNode.vue?vue&type=template&id=2aafded7&ts=true\"\nimport script from \"./PollNode.vue?vue&type=script&lang=ts\"\nexport * from \"./PollNode.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/tmp/build/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"sourceRoot":""}