{"version":3,"sources":["webpack:///./src/views/seminars/components/RecordVideo.vue?33d7","webpack:///./src/views/seminars/components/RecordVideo.vue","webpack:///./src/views/seminars/components/RecordVideo.vue?fbba","webpack:///./src/views/seminars/components/RecordVideo.vue?ebd8","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/SubmissionFooter.vue?6b9b","webpack:///./src/views/seminars/components/SubmissionFooter.vue","webpack:///./src/views/seminars/components/SubmissionFooter.vue?bb34","webpack:///./src/views/seminars/components/SubmissionFooter.vue?6832"],"names":["render","_vm","this","_h","$createElement","_c","_self","VDivider","staticClass","submissions","length","_l","submission","i","key","attrs","seminar","_e","submitting","canShare","element","isTimed","expectedLen","maxLen","on","upload","_v","_s","_f","skipped","createdAt","VSpacer","maxNumSubs","$t","numReq","sharedSubs","maxNumShared","numReqShared","staticRenderFns","RecordVideoElement","filter","x","elementId","id","isShared","find","type","requiredSubmissions","requiredNumShared","maxSubmissions","maxShared","rateableSubmissions","blob","askForFeedback","data","FormData","file","File","append","toString","api","post","headers","addSubmission","console","log","Vue","__decorate","Prop","default","Action","Component","components","VideoRecorder","SubmissionFooter","VideoPlayer","ElementControls","VideoSubmission","component","VBtn","loading","prev","VIcon","callNext","isLast","VDialog","model","value","callback","$$v","endDialog","expression","VCard","toDash","$event","emptySubmissionElements","Map","elementStatus","displaySnackbar","isComplete","next","reqScore","requiredScore","bestScore","subs","map","score","sort","a","b","some","msg","i18n","t","numSub","numShared","sharedSubmissions","m","has","submitEmpty","submit","route","$router","push","Getter","class","marginTop","user","userId","one","users","username","email"],"mappings":"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","file":"assets/js/chunk-649d9a3a.727fb50f.js","sourcesContent":["import { VDivider } from 'vuetify/lib/components/VDivider';\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(VDivider,{staticClass:\"my-4\"}),(_vm.submissions.length > 0)?_c('div',_vm._l((_vm.submissions),function(submission,i){return _c('div',{key:i,staticClass:\"mt-4\"},[_c('VideoSubmission',{attrs:{\"id\":(\"presentation_\" + (submission.userId) + \"_\" + i),\"seminar\":_vm.seminar,\"submission\":submission,\"horizontal\":true}})],1)}),0):_vm._e(),(_vm.canRecord)?_c('VideoRecorder',{attrs:{\"loading\":_vm.submitting,\"can-share\":_vm.canShare,\"is-timed\":_vm.element.isTimed,\"expected-len\":_vm.element.expectedLen,\"max-len\":_vm.element.maxLen,\"can-ask-for-feedback\":false},on:{\"upload\":_vm.upload}}):_vm._e(),_c('div',{staticClass:\"d-flex mt-4\"},[(_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(VSpacer),_c('div',[_c('div',{staticClass:\"px-4 py-2 rounded-lg lightgray2 mb-4\"},[_c('div',[_vm._v(\" \"+_vm._s(_vm.submissions.length)+\"/\"+_vm._s(_vm.maxNumSubs)+\" \"+_vm._s(_vm.$t(\"seminars.video_presentation.submissions\"))+\" \")]),(_vm.submissions.length < _vm.numReq)?_c('div',[_vm._v(\" \"+_vm._s(_vm.numReq)+\" \"+_vm._s(_vm.$t(\"seminars.video_presentation.reqSubmissions\"))+\" \")]):_vm._e()]),(_vm.canShare)?_c('div',{staticClass:\"px-4 py-2 rounded-lg lightgray2\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.sharedSubs.length)+\"/\"+_vm._s(_vm.maxNumShared)+\" \"+_vm._s(_vm.$t(\"seminars.video_presentation.sharedSubmissions\"))+\" \"),(_vm.sharedSubs.length < _vm.numReqShared)?_c('div',[_vm._v(\" \"+_vm._s(_vm.numReqShared)+\" \"+_vm._s(_vm.$t(\"seminars.video_presentation.reqSharedSubmissions\"))+\" \")]):_vm._e()])]):_vm._e()])],1),_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\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Action } from \"vuex-class\";\r\nimport { Component, Prop } from \"vue-property-decorator\";\r\n\r\nimport api from \"@/core/utils/api\";\r\nimport { Seminar, SeminarElement, Submission } from \"@/core/models\";\r\n\r\nimport VideoRecorder from \"@/components/common/VideoRecorder.vue\";\r\nimport VideoPlayer from \"@/components/common/VideoPlayer.vue\";\r\nimport SubmissionFooter from \"./SubmissionFooter.vue\";\r\nimport ElementControls from \"./ElementControls.vue\";\r\nimport VideoSubmission from \"./VideoSubmission.vue\";\r\n\r\n@Component({\r\n components: {\r\n VideoRecorder,\r\n SubmissionFooter,\r\n VideoPlayer,\r\n ElementControls,\r\n VideoSubmission,\r\n },\r\n})\r\nexport default class RecordVideoElement extends Vue {\r\n @Prop({ default: () => ({} as Seminar) }) 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 sharedSubs() {\r\n return (\r\n this.seminar.submissions?.filter(\r\n x => x.elementId === this.element.id && !x.skipped && x.isShared,\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 numReq() {\r\n if (this.element.type !== \"video_presentation\") return 0;\r\n return this.element.requiredSubmissions || 1;\r\n }\r\n\r\n get numReqShared() {\r\n if (this.element.type !== \"video_presentation\") return 0;\r\n return this.element.requiredNumShared || 0;\r\n }\r\n\r\n get maxNumSubs() {\r\n if (this.element.type !== \"video_presentation\") return 1;\r\n return this.element.maxSubmissions || 10;\r\n }\r\n\r\n get maxNumShared() {\r\n if (this.element.type !== \"video_presentation\") return 1;\r\n return this.element.maxNumShared || 2;\r\n }\r\n\r\n get canRecord() {\r\n if (this.element.type !== \"video_presentation\") return false;\r\n return this.submissions.length < this.maxNumSubs;\r\n }\r\n\r\n get canShare() {\r\n if (this.element.type !== \"video_presentation\") return false;\r\n const maxShared = this.element.maxNumShared;\r\n return (\r\n this.element.rateableSubmissions &&\r\n maxShared &&\r\n this.sharedSubs.length < maxShared\r\n );\r\n }\r\n\r\n submitting = false;\r\n async upload({\r\n blob,\r\n isShared,\r\n askForFeedback,\r\n }: {\r\n blob: Blob;\r\n isShared: boolean;\r\n askForFeedback: boolean;\r\n }) {\r\n this.submitting = true;\r\n try {\r\n const data = new FormData();\r\n const file = new File([blob], \"record_video.mp4\", { type: \"video/mp4\" });\r\n data.append(\"elementId\", this.element.id.toString());\r\n data.append(\"isShared\", isShared.toString());\r\n data.append(\"seminarId\", this.seminar.id.toString());\r\n data.append(\"askForFeedback\", askForFeedback.toString());\r\n data.append(\"videoFile\", file);\r\n const submission = (await api.post(\r\n \"/api/Submissions/VideoPresentation\",\r\n data,\r\n { headers: { \"Content-Type\": \"multipart/form-data\" } },\r\n )) as Submission;\r\n submission.isShared = isShared;\r\n this.addSubmission(submission);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n this.submitting = false;\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!./RecordVideo.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!./RecordVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RecordVideo.vue?vue&type=template&id=54be5985&\"\nimport script from \"./RecordVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./RecordVideo.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 { 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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-right text-body-2\",class:{ 'mt-4': _vm.marginTop ? true : false }},[(_vm.isOwner)?_c('div',[_vm._v(\" Submitted by: \"),_c('b',[_vm._v(_vm._s(_vm.user(_vm.submission.userId)))])]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.$t(\"seminars.submittedOn\"))+\": \"),_c('b',[_vm._v(_vm._s(_vm._f(\"formatwithtime\")(_vm.submission.createdAt)))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { Component, Prop } from \"vue-property-decorator\";\r\nimport { SimpleUser, Submission } from \"@/core/models\";\r\n\r\n@Component\r\nexport default class SubmissionFooter extends Vue {\r\n @Getter(\"seminars/isOwner\") isOwner!: boolean;\r\n @Getter(\"seminars/users\") users!: SimpleUser[];\r\n\r\n user(id: string) {\r\n const one = this.users.find(x => x.id === id);\r\n if (!one) return \"You\";\r\n return `${one.username} (${one.email})`;\r\n }\r\n\r\n @Prop({ default: () => undefined }) submission?: Submission;\r\n @Prop({ default: () => true }) marginTop?: boolean;\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!./SubmissionFooter.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!./SubmissionFooter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SubmissionFooter.vue?vue&type=template&id=70f11129&\"\nimport script from \"./SubmissionFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./SubmissionFooter.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":""}