{"version":3,"sources":["webpack:///./src/views/seminars/components/ElementControls.vue?7e95","webpack:///./src/views/seminars/components/ElementControls.vue","webpack:///./src/views/seminars/components/ElementControls.vue?2da1","webpack:///./src/views/seminars/components/ElementControls.vue?04ac","webpack:///./src/views/seminars/components/GiveFeedback.vue?8966","webpack:///./src/views/seminars/components/GiveFeedback.vue","webpack:///./src/views/seminars/components/GiveFeedback.vue?10ae","webpack:///./src/views/seminars/components/GiveFeedback.vue?337c"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","VBtn","attrs","loading","on","prev","VIcon","_v","_s","$t","VSpacer","callNext","isLast","VDialog","model","value","callback","$$v","endDialog","expression","VCard","toDash","$event","_e","staticRenderFns","emptySubmissionElements","Map","ElementControls","elementStatus","element","seminar","submissions","filter","x","elementId","id","displaySnackbar","isComplete","next","type","reqScore","requiredScore","bestScore","subs","map","score","sort","a","b","some","skipped","msg","i18n","t","toString","numReq","requiredSubmissions","numSub","length","numReqShared","rateableSubmissions","requiredNumShared","numShared","isShared","sharedSubmissions","m","has","submitEmpty","submit","console","log","route","$router","push","Vue","__decorate","Prop","default","Getter","Action","Component","component","_l","submission","i","key","VCol","video","uri","canShare","uploading","isTimed","expectedLen","maxLen","upload","_f","createdAt","GiveFeedbackElement","submitted","find","end","api","get","blob","askForFeedback","Error","data","FormData","append","userId","subId","seminarId","post","headers","addSubmission","getVideo","Watch","immediate","components","VideoRecorder","VideoPlayer","VideoSubmission"],"mappings":"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","file":"assets/js/chunk-1b84cc7f.ef68e3b3.js","sourcesContent":["import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"d-flex mt-12 mb-4\"},[_c(VBtn,{attrs:{\"elevation\":\"0\",\"disabled\":_vm.loading},on:{\"click\":_vm.prev}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-chevron-left\")]),_c('span',[_vm._v(_vm._s(_vm.$t(\"seminars.prev\")))])],1),_c(VSpacer),_c(VBtn,{attrs:{\"elevation\":\"0\",\"color\":\"primary\",\"loading\":_vm.loading,\"disabled\":_vm.loading},on:{\"click\":_vm.callNext}},[_c('span',[_vm._v(_vm._s(_vm.isLast ? _vm.$t(\"seminars.finish\") : _vm.$t(\"seminars.next\")))]),_c(VIcon,{attrs:{\"right\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.isLast ? \"mdi-check\" : \"mdi-chevron-right\")+\" \")])],1)],1),(_vm.isLast)?_c(VDialog,{attrs:{\"max-width\":\"400px\"},model:{value:(_vm.endDialog),callback:function ($$v) {_vm.endDialog=$$v},expression:\"endDialog\"}},[_c(VCard,{attrs:{\"outlined\":\"\"}},[_c(VCardTitle,[_vm._v(_vm._s(_vm.$t(\"seminars.done\")))]),_c(VCardText,[_vm._v(\" \"+_vm._s(_vm.$t(\"seminars.doneText\"))+\" \")]),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"elevation\":\"0\"},on:{\"click\":_vm.toDash}},[_c('span',[_vm._v(_vm._s(_vm.$t(\"seminars.back\")))])]),_c(VBtn,{attrs:{\"color\":\"primary\",\"elevation\":\"0\"},on:{\"click\":function($event){_vm.endDialog = false}}},[_c('span',[_vm._v(\"OK\")])])],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Action, Getter } from \"vuex-class\";\r\nimport { Component, Prop } from \"vue-property-decorator\";\r\n\r\nimport { Seminar, SeminarElement } from \"@/core/models\";\r\nimport { elementStatus } from \"@/core/utils/seminars\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\n\r\nconst emptySubmissionElements = new Map([\r\n [\"read_text\", \"/api/Submissions/ReadText\"],\r\n [\"watch_video\", \"/api/Submissions/WatchVideo\"],\r\n]);\r\n\r\n@Component\r\nexport default class ElementControls extends Vue {\r\n @Prop({ default: () => false }) isLast!: boolean;\r\n @Prop({ default: () => {} }) submit!: () => Promise;\r\n\r\n @Getter(\"seminars/selected\") seminar?: Seminar;\r\n @Getter(\"seminars/element\") element!: SeminarElement;\r\n\r\n @Getter(\"profile/id\") userId!: string;\r\n\r\n @Action(\"seminars/next\") next!: () => void;\r\n @Action(\"seminars/prev\") prev!: () => void;\r\n @Action(\"seminars/skip\") skip!: (el: SeminarElement) => void;\r\n @Action(\"seminars/submitEmpty\") submitEmpty!: (el: SeminarElement) => void;\r\n\r\n @Action(\"displaySnackbar\") displaySnackbar!: (m: string) => void;\r\n\r\n loading = false;\r\n endDialog = false;\r\n\r\n get isComplete() {\r\n return elementStatus(this.element, this.seminar) === \"completed\";\r\n }\r\n\r\n get subs() {\r\n return (\r\n this.seminar?.submissions?.filter(x => x.elementId === this.element.id) ||\r\n []\r\n );\r\n }\r\n\r\n async callNext() {\r\n // no element\r\n if (!this.element) return this.displaySnackbar(\"Element not found\");\r\n\r\n // element completed\r\n if (this.isComplete) {\r\n if (this.isLast) this.endDialog = true;\r\n return this.next();\r\n }\r\n\r\n // specific to vr_training\r\n if (this.element.type === \"vr_training\") {\r\n const reqScore = this.element.requiredScore;\r\n const bestScore =\r\n this.subs\r\n .map(x => (x as any).score as number)\r\n .sort((a, b) => b - a)[0] || 0;\r\n if (bestScore < reqScore)\r\n return this.displaySnackbar(\r\n \"You need to reach the required score in order to proceed\",\r\n );\r\n else return this.next();\r\n }\r\n\r\n // specific to give_feedback\r\n if (this.element.type === \"give_feedback\") {\r\n if (this.subs.some(x => !x.skipped)) return this.next();\r\n\r\n const msg = i18n.t(\"seminars.submissions.giveFeedbackInfo\").toString();\r\n return this.displaySnackbar(msg);\r\n }\r\n\r\n // specific to video_presentations\r\n if (this.element.type === \"video_presentation\") {\r\n const subs = this.subs.filter(x => !x.skipped);\r\n const numReq = this.element.requiredSubmissions || 1;\r\n const numSub = subs?.length || 0;\r\n const numReqShared = this.element.rateableSubmissions\r\n ? this.element.requiredNumShared || 0\r\n : -1;\r\n const numShared = subs?.filter(x => x.isShared).length || 0;\r\n\r\n // requirements not met\r\n if (numReq > numSub || numReqShared > numShared) {\r\n const submissions = numReq - numSub;\r\n const sharedSubmissions =\r\n numReqShared === -1 ? 0 : numReqShared - numShared;\r\n const m = this.$t(\"seminars.video_presentation.error\", {\r\n submissions,\r\n sharedSubmissions,\r\n }).toString();\r\n this.displaySnackbar(m);\r\n return;\r\n }\r\n // req. met\r\n else {\r\n if (this.isLast) this.endDialog = true;\r\n return this.next();\r\n }\r\n }\r\n\r\n // elements that require empty submissions\r\n if (emptySubmissionElements.has(this.element.type)) {\r\n this.submitEmpty(this.element);\r\n this.next();\r\n }\r\n // elements that need to be submitted\r\n else {\r\n this.loading = true;\r\n try {\r\n await this.submit();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n this.loading = false;\r\n }\r\n\r\n // if is last - show dialog\r\n if (this.isLast) this.endDialog = true;\r\n }\r\n\r\n toDash() {\r\n const id = this.seminar?.id;\r\n if (!id) return this.displaySnackbar(\"Could not go back to dashboard\");\r\n const route = `/seminars/dashboard/${id}`;\r\n this.$router.push(route);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElementControls.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElementControls.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ElementControls.vue?vue&type=template&id=2aa2dd0e&\"\nimport script from \"./ElementControls.vue?vue&type=script&lang=ts&\"\nexport * from \"./ElementControls.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VCol } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.submissions.length > 0)?_c('div',[_c('h3',{staticClass:\"mb-4\"},[_vm._v(_vm._s(_vm.$t(\"seminars.give_feedback.yourSubmissions\")))]),_vm._l((_vm.submissions),function(submission,i){return _c('VideoSubmission',{key:i,attrs:{\"id\":(\"feedback_\" + (submission.userId) + \"_\" + (submission.feedbackFor)),\"seminar\":_vm.seminar,\"submission\":submission,\"horizontal\":true}})})],2):_c('div',[_c('h3',[_vm._v(_vm._s(_vm.$t(\"seminars.give_feedback.title\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"seminars.give_feedback.text\")))]),(_vm.video)?_c('div',[_c(VCol,{attrs:{\"cols\":\"12\",\"md\":\"8\"}},[_c('VideoPlayer',{attrs:{\"id\":(\"give_feedback_to_\" + (_vm.video.userId)),\"url\":_vm.video.uri}})],1),_c('VideoRecorder',{attrs:{\"can-share\":false,\"default-shared\":_vm.canShare,\"loading\":_vm.uploading,\"is-timed\":_vm.element.isTimed,\"expected-len\":_vm.element.expectedLen,\"max-len\":_vm.element.maxLen},on:{\"upload\":_vm.upload}})],1):_c('div',[_c('h3',[_vm._v(_vm._s(_vm.$t(\"seminars.give_feedback.noVideo\")))]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"seminars.give_feedback.noVideoDetail\"))+\" \")])])]),(_vm.skipped)?_c('div',[_c('h4',{staticClass:\"mt-4\"},[_vm._v(\" This task was skipped on \"+_vm._s(_vm._f(\"formatwithtime\")(_vm.skipped.createdAt))+\". \")])]):_vm._e(),_c('ElementControls',{attrs:{\"submit\":function () {}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Action, Getter } from \"vuex-class\";\r\nimport { Component, Prop, Watch } from \"vue-property-decorator\";\r\n\r\nimport api from \"@/core/utils/api\";\r\nimport VideoRecorder from \"@/components/common/VideoRecorder.vue\";\r\nimport VideoPlayer from \"@/components/common/VideoPlayer.vue\";\r\nimport { Seminar, SeminarElement, Submission } from \"@/core/models\";\r\nimport ElementControls from \"./ElementControls.vue\";\r\nimport VideoSubmission from \"./VideoSubmission.vue\";\r\n\r\ntype Video = {\r\n subId: number;\r\n userId: string;\r\n uri: string;\r\n};\r\n\r\n@Component({\r\n components: {\r\n VideoRecorder,\r\n VideoPlayer,\r\n ElementControls,\r\n VideoSubmission,\r\n },\r\n})\r\nexport default class GiveFeedbackElement extends Vue {\r\n @Getter(\"seminars/selectedId\") id!: number;\r\n @Prop({ default: () => undefined }) seminar?: Seminar;\r\n @Prop({ default: () => ({} as SeminarElement) }) element!: SeminarElement;\r\n @Action(\"seminars/addSubmission\") addSubmission!: (s: Submission) => void;\r\n\r\n get submissions() {\r\n return (\r\n this.seminar?.submissions?.filter(\r\n x => x.elementId === this.element.id && !x.skipped,\r\n ) || []\r\n );\r\n }\r\n\r\n get skipped() {\r\n return this.seminar?.submissions?.find(\r\n x => x.skipped && x.elementId === this.element.id,\r\n );\r\n }\r\n\r\n get canShare() {\r\n if (this.element.type !== \"give_feedback\") return false;\r\n return this.element.rateableSubmissions || false;\r\n }\r\n\r\n loading = false;\r\n video: Video | null = null;\r\n async getVideo() {\r\n this.loading = true;\r\n try {\r\n const end = `/api/Elements/RandomVideoPresentation/${this.element.id}`;\r\n this.video = (await api.get(end)) || null;\r\n console.log(this.video);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n this.loading = false;\r\n }\r\n\r\n submitted = false;\r\n uploading = false;\r\n async upload({\r\n blob,\r\n askForFeedback,\r\n }: {\r\n blob: Blob;\r\n askForFeedback: boolean;\r\n }) {\r\n if (!this.video) throw new Error(\"no_video\");\r\n\r\n this.uploading = true;\r\n try {\r\n const data = new FormData();\r\n data.append(\"elementId\", this.element.id.toString());\r\n data.append(\"feedbackFor\", this.video.userId);\r\n data.append(\"feedbackForSubmission\", this.video.subId.toString());\r\n data.append(\"isShared\", this.canShare.toString());\r\n data.append(\"videoFile\", blob);\r\n data.append(\"seminarId\", this.element.seminarId.toString());\r\n data.append(\"askForFeedback\", askForFeedback.toString());\r\n const submission = (await api.post(\r\n \"/api/Submissions/GiveFeedback\",\r\n data,\r\n { headers: { \"Content-Type\": \"multipart/form-data\" } },\r\n )) as Submission;\r\n this.addSubmission(submission);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n this.uploading = false;\r\n }\r\n\r\n @Watch(\"id\", { immediate: true })\r\n seminarUpdated() {\r\n if (!this.id) return;\r\n this.getVideo();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GiveFeedback.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GiveFeedback.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GiveFeedback.vue?vue&type=template&id=dbf356f0&\"\nimport script from \"./GiveFeedback.vue?vue&type=script&lang=ts&\"\nexport * from \"./GiveFeedback.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}